HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

关于给MUI的建议

使用了一段时间的mui了,发现很多mui的控件使用静态加载的就可以,动态加载的不可以。
希望工作人员能够把那些动态加载需要手动初始化的整理出来下或者是改进。

使用了一段时间的mui了,发现很多mui的控件使用静态加载的就可以,动态加载的不可以。
希望工作人员能够把那些动态加载需要手动初始化的整理出来下或者是改进。

extjs的sdocml文件

sdocml HBuilder

目前有4.0和4.1beta的文件参见如下
extjs4.0-v0.1.sdocml
extjs4.1.beta-v.0.1.sdocml
由于这两个文件太大了,直接集成会导致包体积大增,所以没有集成
如果需要请右键项目->引入框架语法提示->导入即可

继续阅读 »

目前有4.0和4.1beta的文件参见如下
extjs4.0-v0.1.sdocml
extjs4.1.beta-v.0.1.sdocml
由于这两个文件太大了,直接集成会导致包体积大增,所以没有集成
如果需要请右键项目->引入框架语法提示->导入即可

收起阅读 »

如何获取iOS设备Crash log

获取崩溃日志
  1. 将产生崩溃的设备连接到PC,打开iTunes, 等待iTunes同步Crash日志完成
  2. Mac机器打开Finder,进入~/Library/Logs/CrashReporter/MobileDevice目录
    Widnows机器进入C:\Users\<user_name>\AppData\Roaming\Apple computer\Logs\CrashReporter/MobileDevice
    Windows XP进入C:\Documents and Settings\<user_name>\Application Data\Apple computer\Logs\CrashReporter
  3. 在上述目录中找到以设备名命名的文件夹中,过滤以DCloud_Pandora 开始的文件,根据产生Crash的时间确定Crash的日志文件
继续阅读 »
  1. 将产生崩溃的设备连接到PC,打开iTunes, 等待iTunes同步Crash日志完成
  2. Mac机器打开Finder,进入~/Library/Logs/CrashReporter/MobileDevice目录
    Widnows机器进入C:\Users\<user_name>\AppData\Roaming\Apple computer\Logs\CrashReporter/MobileDevice
    Windows XP进入C:\Documents and Settings\<user_name>\Application Data\Apple computer\Logs\CrashReporter
  3. 在上述目录中找到以设备名命名的文件夹中,过滤以DCloud_Pandora 开始的文件,根据产生Crash的时间确定Crash的日志文件
收起阅读 »

使用emmet快速生成css时,如何仅生成需要的浏览器类型

EMMET HBuilder

emmet快速生成浏览器兼容数据很方便,但某些情况下,我们可能只需要兼容数据中的一条或两条,该如何做呢?
如在css为div指定transition时,如果直接输入trans按下tab生成如下代码

.div{  
            -webkit-transition: prop time;  
            -moz-transition: prop time;  
            -ms-transition: prop time;  
            -o-transition: prop time;  
            transition: prop time;  
 }

但实际上,我们可能仅需要-webkit和-moz类型的兼容数据
如果你想手工指定想要的前缀,可以这样做 ,先输入一个小横线,然后是前缀的缩写形式
w 表示 webkit 前缀,m 是 moz 前缀,s 是 ms 前缀 .. o 就是 o 前缀
比如我们只想使用 webkit 前缀 输入一个 w ,我们可以继续指定其它的前缀
最后再加上一个小横线 .
然后是属性的缩写-wm-trans然后按下tab
生成结果如下

.div{  
            -webkit-transition: prop time;  
            -moz-transition: prop time;  
            transition: prop time;  
}

感谢网友 @南安 的分享

继续阅读 »

emmet快速生成浏览器兼容数据很方便,但某些情况下,我们可能只需要兼容数据中的一条或两条,该如何做呢?
如在css为div指定transition时,如果直接输入trans按下tab生成如下代码

.div{  
            -webkit-transition: prop time;  
            -moz-transition: prop time;  
            -ms-transition: prop time;  
            -o-transition: prop time;  
            transition: prop time;  
 }

但实际上,我们可能仅需要-webkit和-moz类型的兼容数据
如果你想手工指定想要的前缀,可以这样做 ,先输入一个小横线,然后是前缀的缩写形式
w 表示 webkit 前缀,m 是 moz 前缀,s 是 ms 前缀 .. o 就是 o 前缀
比如我们只想使用 webkit 前缀 输入一个 w ,我们可以继续指定其它的前缀
最后再加上一个小横线 .
然后是属性的缩写-wm-trans然后按下tab
生成结果如下

.div{  
            -webkit-transition: prop time;  
            -moz-transition: prop time;  
            transition: prop time;  
}

感谢网友 @南安 的分享

收起阅读 »

今天写了一个mui下拉刷新的ajax实现

mui 下拉刷新

通过给后台传递last 和amount两个参数,获取json数组数据。

        <script>  
            mui.init({  
                swipeBack: false,  
                pullRefresh: {  
                    container: '#pullrefresh',  
                    down: {  
                        callback: pulldownRefresh  
                    }  
                }  
            });  
            /**  
             * 下拉刷新具体业务实现  
             */  
            var last=-5,amount=5;  
            function pulldownRefresh() {  
                    last =last+amount;  

                    var table = document.body.querySelector('.mui-table-view');  
                    var cells = document.body.querySelectorAll('.mui-table-view-cell');  
                    mui.ajax({  
                    type: "post",  
                    dataType: "json",  
                    url: "http://localhost/amazeui/data.php?action=item",  
                    data: "last="+last+"&amount="+amount,  
                    complete :function(){$("#load").hide();},  
                    success: function(msg){  
                        var data = msg;  
                        var tmp='';  

                        $.each(data, function(i, n){  

                                var li = document.createElement('li');  
                                li.className = 'mui-table-view-cell';  
                                li.innerHTML = '<a class="mui-navigate-right">' + n.itemname + '</a>';  
                        //下拉刷新,新纪录插到最前面;  
                        table.insertBefore(li, table.firstChild);  
                             });    

                        }  
                    });    

                    mui('#pullrefresh').pullRefresh().endPulldownToRefresh(); //refresh completed  

            }  

            if (mui.os.plus) {  
                mui.plusReady(function() {  
                    setTimeout(function() {  
                        mui('#pullrefresh').pullRefresh().pullupLoading();  
                    }, 1000);  

                });  
            } else {  
                mui.ready(function() {  
                    mui('#pullrefresh').pullRefresh().pullupLoading();  
                });  
            }  
        </script>
继续阅读 »

通过给后台传递last 和amount两个参数,获取json数组数据。

        <script>  
            mui.init({  
                swipeBack: false,  
                pullRefresh: {  
                    container: '#pullrefresh',  
                    down: {  
                        callback: pulldownRefresh  
                    }  
                }  
            });  
            /**  
             * 下拉刷新具体业务实现  
             */  
            var last=-5,amount=5;  
            function pulldownRefresh() {  
                    last =last+amount;  

                    var table = document.body.querySelector('.mui-table-view');  
                    var cells = document.body.querySelectorAll('.mui-table-view-cell');  
                    mui.ajax({  
                    type: "post",  
                    dataType: "json",  
                    url: "http://localhost/amazeui/data.php?action=item",  
                    data: "last="+last+"&amount="+amount,  
                    complete :function(){$("#load").hide();},  
                    success: function(msg){  
                        var data = msg;  
                        var tmp='';  

                        $.each(data, function(i, n){  

                                var li = document.createElement('li');  
                                li.className = 'mui-table-view-cell';  
                                li.innerHTML = '<a class="mui-navigate-right">' + n.itemname + '</a>';  
                        //下拉刷新,新纪录插到最前面;  
                        table.insertBefore(li, table.firstChild);  
                             });    

                        }  
                    });    

                    mui('#pullrefresh').pullRefresh().endPulldownToRefresh(); //refresh completed  

            }  

            if (mui.os.plus) {  
                mui.plusReady(function() {  
                    setTimeout(function() {  
                        mui('#pullrefresh').pullRefresh().pullupLoading();  
                    }, 1000);  

                });  
            } else {  
                mui.ready(function() {  
                    mui('#pullrefresh').pullRefresh().pullupLoading();  
                });  
            }  
        </script>
收起阅读 »

mui-popover如何强制隐藏

popover

mui的popover只提供了toggle,也就是说每次调用只能根据现有的状态决定是显示还是隐藏。这显然是一个没人性,噢不,是不人性化的设计。

之前在官方ASK里看到有人提供了解决方法,是这么说的:

mui('#popover').popover('hide');

我当时就信了啊,结果实验发现和toggle的效果一样,还是一次弹出一次隐藏。于是乎打开mui.js开始读源码。读到4845行,差点没吐出一口老血……你们看看这代码:

    $.fn.popover = function() {  
        var args = arguments;  
        this.each(function() {  
            $.targets._popover = this;  
            if (args[0] === 'show' || args[0] === 'hide' || args[0] === 'toggle') {  
                togglePopover(this, args[1]);  
            }  
        });  
    };

这3个参数实际上并没有区别,纯粹逗我玩啊!!

只好自己修改了一下,找到togglePopover的位置(4699行),然后与其同层级再加一个函数hidePopover。

    var hidePopover = function(popover) {  
        popover.classList.remove(CLASS_ACTIVE);  
        removeBackdrop(popover);  
    }

再将刚才4845行那个操蛋的逗你玩函数改成下面这样。

    $.fn.popover = function() {  
        var args = arguments;  
        this.each(function() {  
            $.targets._popover = this;  
            if (args[0] === 'show' || args[0] === 'toggle') {  
                togglePopover(this, args[1]);  
            }  
            else if(args[0] === 'hide') {  
                hidePopover(this);  
            }  
        });  
    };

这样就妥妥了,可以用hide参数来强制隐藏了。

mui('.mui-popover').popover('hide');

强制显示因为我暂时用不到,所以没写,需要的可以用类似方法自己添加。

继续阅读 »

mui的popover只提供了toggle,也就是说每次调用只能根据现有的状态决定是显示还是隐藏。这显然是一个没人性,噢不,是不人性化的设计。

之前在官方ASK里看到有人提供了解决方法,是这么说的:

mui('#popover').popover('hide');

我当时就信了啊,结果实验发现和toggle的效果一样,还是一次弹出一次隐藏。于是乎打开mui.js开始读源码。读到4845行,差点没吐出一口老血……你们看看这代码:

    $.fn.popover = function() {  
        var args = arguments;  
        this.each(function() {  
            $.targets._popover = this;  
            if (args[0] === 'show' || args[0] === 'hide' || args[0] === 'toggle') {  
                togglePopover(this, args[1]);  
            }  
        });  
    };

这3个参数实际上并没有区别,纯粹逗我玩啊!!

只好自己修改了一下,找到togglePopover的位置(4699行),然后与其同层级再加一个函数hidePopover。

    var hidePopover = function(popover) {  
        popover.classList.remove(CLASS_ACTIVE);  
        removeBackdrop(popover);  
    }

再将刚才4845行那个操蛋的逗你玩函数改成下面这样。

    $.fn.popover = function() {  
        var args = arguments;  
        this.each(function() {  
            $.targets._popover = this;  
            if (args[0] === 'show' || args[0] === 'toggle') {  
                togglePopover(this, args[1]);  
            }  
            else if(args[0] === 'hide') {  
                hidePopover(this);  
            }  
        });  
    };

这样就妥妥了,可以用hide参数来强制隐藏了。

mui('.mui-popover').popover('hide');

强制显示因为我暂时用不到,所以没写,需要的可以用类似方法自己添加。

收起阅读 »

iOS离线打包-平台功能配置

离线打包

设置系统状态栏样式背景

关于该设置的具体介绍和可取值参考该文档
以下两步缺一不可切记
1.打开info.plist文件找到Statusbarstyle项目(没有该项按下图格式创建),在右侧的列表中选择对应值


2.找到View controller-based status bar appearance项目(没有该项按下图格式创建),选择NO

设置系统状态栏背景颜色

关于该设置的具体介绍和可取值参考该文档
打开info.plist文件找到StatusBarBackground项目(没有该项按下图格式创建),在右侧填入对应值

设置应用沉浸式状态栏

关于该设置的具体介绍和可取值参考文档iOS平台设置沉浸式状态栏显示效果
打开info.plist文件找到UIReserveStatusbarOffset项目(没有该项按下图格式创建),在右侧选择对应值

设置应用是否启动时全屏

打开info.plist文件找到Status bar is initially hidden项目(没有该项按下图格式创建),YES为全屏,NO非全屏在右侧选择对应值

通过UrlSchemes与第三方应用相互调用

关于该设置的具体介绍可参考该文档
打开info.plist文件找到URL types项目,按照下图格式添加scheme项目,红圈中输入urlidentifier,绿圈中输入scheme,
如果需要设置多个scheme,重复上边步骤

后台音乐播放

在info.plist中找到Required background modes项目没有则按照下图格式建立,添加一项在弹出的列表中选择App plays audio or streams audio/video using AirPlay

继续阅读 »

设置系统状态栏样式背景

关于该设置的具体介绍和可取值参考该文档
以下两步缺一不可切记
1.打开info.plist文件找到Statusbarstyle项目(没有该项按下图格式创建),在右侧的列表中选择对应值


2.找到View controller-based status bar appearance项目(没有该项按下图格式创建),选择NO

设置系统状态栏背景颜色

关于该设置的具体介绍和可取值参考该文档
打开info.plist文件找到StatusBarBackground项目(没有该项按下图格式创建),在右侧填入对应值

设置应用沉浸式状态栏

关于该设置的具体介绍和可取值参考文档iOS平台设置沉浸式状态栏显示效果
打开info.plist文件找到UIReserveStatusbarOffset项目(没有该项按下图格式创建),在右侧选择对应值

设置应用是否启动时全屏

打开info.plist文件找到Status bar is initially hidden项目(没有该项按下图格式创建),YES为全屏,NO非全屏在右侧选择对应值

通过UrlSchemes与第三方应用相互调用

关于该设置的具体介绍可参考该文档
打开info.plist文件找到URL types项目,按照下图格式添加scheme项目,红圈中输入urlidentifier,绿圈中输入scheme,
如果需要设置多个scheme,重复上边步骤

后台音乐播放

在info.plist中找到Required background modes项目没有则按照下图格式建立,添加一项在弹出的列表中选择App plays audio or streams audio/video using AirPlay

收起阅读 »

iOS离线打包-个推push和UniPush插件配置

离线打包 iOS

个推push和UniPush配置

添加push插件

注: Linker Flags、framework添加方法参考该文档

  1. 依次添加下列Linker Flags: -lGeTuiPush, 注意:如果是UniPush 则把-lGeTuiPush 换成 -lUniPush。
    -lGeTuiSdk,
    -llibPush
  2. 添加下列framework:"GTSDK.framework",
    "CoreTelephony.framework",
    "AVFoundation.framework",
    "CoreLocation.framework",
    "SystemConfiguration.framework",
    "MobileCoreServices.framework",
    "Security.framework",
    "libresolv.tbd",
    "libz.tbd",
    "libsqlite3.tbd",
    "libc++.tbd",
    "UserNotifications.framework"

    帐号配置

    1.首先到个推申请appkey等信息,查看该文档
    注意:如果是UniPush 去这个链接申请
    2.打开info.plist,找到getui项,填入自己帐号的信息,如果没有该项,按照图中的格式创建

小米推送配置

注: Linker Flags、framework添加方法参考该文档

  1. 依次添加下列Linker Flags:-lXiaomiPush,-lMiPushSDK
  2. 添加下列framework:libresolv.dylib, libxml2.dylib,libz.dylib,SystemConfiguration.framework,MobileCoreServices.framework,CFNetwork.framework,CoreTelephony.framework,

    帐号配置

    1.首先到小米申请appkey等信息,查看该文档
    2.打开info.plist,找到"MiSDKAppID"项,填入自己小米推送帐号的的APPID,如果没有该项,按照图中的格式创建
    找到"MiSDKAppKey"项,填入自己小米推送帐号的的appKey,如果没有该项,按照图中的格式创建
    3 小米推送调试/发布时需要设置不同的MiSDKRun值 调试证书对应值设置为“debug”,生产证书对应值设置为“online”,可参考小米推送文档

申请带APNS功能的profile文件(缺少该项将导致后台收不到推送)

1.创建应用程序ID
登陆iOS Dev Center选择进入iOS Provisioning Portal。
在Certificates,Identifiers &Profiles中,点iOS Apps的任何一项进入
在iOS Provisioning Portal中,点击App IDs进入App ID列表。
创建App ID,如果ID已经存在可以直接跳过此步骤

为App开启Push Notification功能。如果是已经创建的App ID也可以通过设置开启Push Notification功能。

根据实际情况完善App ID信息并提交,注意此处需要指定具体的Bundle ID不要使用通配符。

  1. 重新生成新的profile,下载到本地双击导入,并在Code signing 配置中选择该profile文件

生成APNS证书并上传到个推平台(缺少该项将导致后台收不到推送)

如果你之前没有创建过Push证书或者是要重新创建一个新的,请在证书列表下面新建。
新建证书需要注意选择证书种类(开发证书用于开发和调试使用,生产证书用于App Store发布)

点击Continue后选择证书对应的应用ID,然后继续会出现“About Creating a Certificate Signing Request (CSR)”

根据它的说明创建Certificate Signing Request。

然后点击Continue ,上传刚刚生成的 .certSigningRequest文件 点”generate”生成APNs Push Certificate。

下载并双击打开证书,证书打开时会启动“钥匙串访问”工具。
在“钥匙串访问”中你的证书会显示在“我的证书”中,注意选择“My Certificates” 和”login”
导出 .p12证书文件
在“钥匙串访问”中,选择刚刚加进来的证书,选择右键菜单中的“导出“...””。

将文件保存为Personal Information Exchange (.p12)格式。
注意:务必选择证书然后再导出。

保存p12文件时,需为其设置密码,上传到个推平台

UniPush使用指南:http://ask.dcloud.net.cn/article/35622

继续阅读 »

个推push和UniPush配置

添加push插件

注: Linker Flags、framework添加方法参考该文档

  1. 依次添加下列Linker Flags: -lGeTuiPush, 注意:如果是UniPush 则把-lGeTuiPush 换成 -lUniPush。
    -lGeTuiSdk,
    -llibPush
  2. 添加下列framework:"GTSDK.framework",
    "CoreTelephony.framework",
    "AVFoundation.framework",
    "CoreLocation.framework",
    "SystemConfiguration.framework",
    "MobileCoreServices.framework",
    "Security.framework",
    "libresolv.tbd",
    "libz.tbd",
    "libsqlite3.tbd",
    "libc++.tbd",
    "UserNotifications.framework"

    帐号配置

    1.首先到个推申请appkey等信息,查看该文档
    注意:如果是UniPush 去这个链接申请
    2.打开info.plist,找到getui项,填入自己帐号的信息,如果没有该项,按照图中的格式创建

小米推送配置

注: Linker Flags、framework添加方法参考该文档

  1. 依次添加下列Linker Flags:-lXiaomiPush,-lMiPushSDK
  2. 添加下列framework:libresolv.dylib, libxml2.dylib,libz.dylib,SystemConfiguration.framework,MobileCoreServices.framework,CFNetwork.framework,CoreTelephony.framework,

    帐号配置

    1.首先到小米申请appkey等信息,查看该文档
    2.打开info.plist,找到"MiSDKAppID"项,填入自己小米推送帐号的的APPID,如果没有该项,按照图中的格式创建
    找到"MiSDKAppKey"项,填入自己小米推送帐号的的appKey,如果没有该项,按照图中的格式创建
    3 小米推送调试/发布时需要设置不同的MiSDKRun值 调试证书对应值设置为“debug”,生产证书对应值设置为“online”,可参考小米推送文档

申请带APNS功能的profile文件(缺少该项将导致后台收不到推送)

1.创建应用程序ID
登陆iOS Dev Center选择进入iOS Provisioning Portal。
在Certificates,Identifiers &Profiles中,点iOS Apps的任何一项进入
在iOS Provisioning Portal中,点击App IDs进入App ID列表。
创建App ID,如果ID已经存在可以直接跳过此步骤

为App开启Push Notification功能。如果是已经创建的App ID也可以通过设置开启Push Notification功能。

根据实际情况完善App ID信息并提交,注意此处需要指定具体的Bundle ID不要使用通配符。

  1. 重新生成新的profile,下载到本地双击导入,并在Code signing 配置中选择该profile文件

生成APNS证书并上传到个推平台(缺少该项将导致后台收不到推送)

如果你之前没有创建过Push证书或者是要重新创建一个新的,请在证书列表下面新建。
新建证书需要注意选择证书种类(开发证书用于开发和调试使用,生产证书用于App Store发布)

点击Continue后选择证书对应的应用ID,然后继续会出现“About Creating a Certificate Signing Request (CSR)”

根据它的说明创建Certificate Signing Request。

然后点击Continue ,上传刚刚生成的 .certSigningRequest文件 点”generate”生成APNs Push Certificate。

下载并双击打开证书,证书打开时会启动“钥匙串访问”工具。
在“钥匙串访问”中你的证书会显示在“我的证书”中,注意选择“My Certificates” 和”login”
导出 .p12证书文件
在“钥匙串访问”中,选择刚刚加进来的证书,选择右键菜单中的“导出“...””。

将文件保存为Personal Information Exchange (.p12)格式。
注意:务必选择证书然后再导出。

保存p12文件时,需为其设置密码,上传到个推平台

UniPush使用指南:http://ask.dcloud.net.cn/article/35622

收起阅读 »

iOS离线打包-分享插件配置

离线打包 iOS

目前分享插件支持新浪微博分享、QQ分享、腾讯微博分享、微信分享
分享插件首先需要到各开放平台申请帐号,申请查看该文档
注: Linker Flags、framework等添加方法参考该文档

新浪微博分享插件配置

1.添加以下Linker Flags: -llibShare、-lSinaShare、-lWeiboSDK

  1. 添加以下framwork: QuartzCore.framework、ImageIO.framework、SystemConfiguration.framework、Security.framwork、CoreTelephny。framwork、CoreText.framework、libz.dylib、libsqlite3.dylib
  2. 添加下列文件:WeiboSDK.bundle
  3. 打开info.plist,找到sinweibo项,填入自己帐号的信息,如果没有该项,按照图中的格式创建

    5.找到URL types ,打开URL identifier为com.weibo的项目,修改item0值为wb[这个是你的appkey] ,如果没有该项按照图中的格式创建
  4. iOS9.0以上版本需要在info.plist增加以下配置

QQ分享插件配置

1.添加以下Linker Flags: -llibShare、-lQQShare
2.添加以下framwork: TencentOpenAPI.framework

  1. 添加下列文件: TencentOpenApi_IOS_Bundle.bundle
    4.找到URL types,打开URL identifier为tencentopenapi的项目, 修改item0值为tencent[这个是你的appId] ,如果没有该项按照图中的格式创建
  2. iOS9.0以上版本需要在info.plist增加以下配置

微信分享插件配置

1.添加以下Linker Flags: -llibShare、 -lweixinShare、-lWeChatSDK
2.添加以下framwork: Social.framework、Accounts.framework
3.找到URL types ,打开URL identifier为weixin的项目,修改item0值为wx[这个是你的appid] ,如果没有该项按照图中的格式创建


4.iOS9.0以上版本需要在info.plist增加以下配置

<a id="ulink"/>
5.HBuilderX2.3.4+ 版本需要配置 Universal Link
在info.plist root 节点添加UniversalLinks项,值和微信开放平台配置的一致,参考如下:


查看工程里的AppDelegate.m文件里是否有下面的方法:
>//@Summary:通用链接
-(BOOL)application:(UIApplication )application continueUserActivity:(NSUserActivity )userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler {
[PDRCore handleSysEvent:PDRCoreSysEventContinueUserActivity withObject:userActivity];
restorationHandler(nil);
return YES;
}

腾讯微博分享分享插件配置

1.添加以下Linker Flags: -llibShare、-lTCWeiboSDK
2.找到URL types ,打开URL identifier为com.tencent的项目,修改item0值为wb[这个是你的appkey] ,如果没有该项按照图中的格式创建

  1. 打开info.plist,找到tencentweibo项,填入自己帐号的信息,如果没有该项,按照图中的格式创建

  2. iOS9.0以上版本需要在info.plist增加以下配置
继续阅读 »

目前分享插件支持新浪微博分享、QQ分享、腾讯微博分享、微信分享
分享插件首先需要到各开放平台申请帐号,申请查看该文档
注: Linker Flags、framework等添加方法参考该文档

新浪微博分享插件配置

1.添加以下Linker Flags: -llibShare、-lSinaShare、-lWeiboSDK

  1. 添加以下framwork: QuartzCore.framework、ImageIO.framework、SystemConfiguration.framework、Security.framwork、CoreTelephny。framwork、CoreText.framework、libz.dylib、libsqlite3.dylib
  2. 添加下列文件:WeiboSDK.bundle
  3. 打开info.plist,找到sinweibo项,填入自己帐号的信息,如果没有该项,按照图中的格式创建

    5.找到URL types ,打开URL identifier为com.weibo的项目,修改item0值为wb[这个是你的appkey] ,如果没有该项按照图中的格式创建
  4. iOS9.0以上版本需要在info.plist增加以下配置

QQ分享插件配置

1.添加以下Linker Flags: -llibShare、-lQQShare
2.添加以下framwork: TencentOpenAPI.framework

  1. 添加下列文件: TencentOpenApi_IOS_Bundle.bundle
    4.找到URL types,打开URL identifier为tencentopenapi的项目, 修改item0值为tencent[这个是你的appId] ,如果没有该项按照图中的格式创建
  2. iOS9.0以上版本需要在info.plist增加以下配置

微信分享插件配置

1.添加以下Linker Flags: -llibShare、 -lweixinShare、-lWeChatSDK
2.添加以下framwork: Social.framework、Accounts.framework
3.找到URL types ,打开URL identifier为weixin的项目,修改item0值为wx[这个是你的appid] ,如果没有该项按照图中的格式创建


4.iOS9.0以上版本需要在info.plist增加以下配置

<a id="ulink"/>
5.HBuilderX2.3.4+ 版本需要配置 Universal Link
在info.plist root 节点添加UniversalLinks项,值和微信开放平台配置的一致,参考如下:


查看工程里的AppDelegate.m文件里是否有下面的方法:
>//@Summary:通用链接
-(BOOL)application:(UIApplication )application continueUserActivity:(NSUserActivity )userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler {
[PDRCore handleSysEvent:PDRCoreSysEventContinueUserActivity withObject:userActivity];
restorationHandler(nil);
return YES;
}

腾讯微博分享分享插件配置

1.添加以下Linker Flags: -llibShare、-lTCWeiboSDK
2.找到URL types ,打开URL identifier为com.tencent的项目,修改item0值为wb[这个是你的appkey] ,如果没有该项按照图中的格式创建

  1. 打开info.plist,找到tencentweibo项,填入自己帐号的信息,如果没有该项,按照图中的格式创建

  2. iOS9.0以上版本需要在info.plist增加以下配置
收起阅读 »

iOS离线打包-地图配置

离线打包 iOS

百度地图配置

Linker Flags、framework等添加方法请参考这个文档
1.添加下列Linker Flags: -llibMap、-lBaiduKeyVerify、-lbmapimp

  1. 添加下列framework: 添加下列framework
    libstdc++.tbd
    libsqlite3.0.dylib
    QuartzCore.framework
    CoreGraphics.framework
    CoreTelephony.framework
    SystemConfiguration.framework
    Security.framework
    MapKit.framework
    OpenGLES.framework
    CoreLocation.framework
    BaiduMapAPI_Utils.framework
    BaiduMapAPI_Base.framework
    BaiduMapAPI_Search.framework
    BaiduMapAPI_Map.framework
    BaiduMapAPI_Location.framework
    libbmapimp.a
    libBaiduKeyVerify.a
    libssl.a
    libcrypto.a
  2. 添加下列文件: mapapi.bundle
    4.申请Appkey,如果没有appkey将会导致地图显示不出
    参考百度地图Appkey申请章节

  3. 打开Info.plist文件找到baidu项,如果没有按图片中的格式添加该项,在下图中的红色区域输入申请的Appkey
    注意info.plist中Bundle identifier要和你输入的安全码一致


    常见问题解决

    1.如下图只能看见栅格图可能的原因appkey配置不对、Bundle identifier和安全码不一致、百度地图缓存导致的可以删除app重新安装


    2.提示appKey校验错误

    在XCode控制台搜索baidu maponGetPermissionState 查看错误码是多少,对比百度开发平台错误信息

高德地图配置

Linker Flags、framework等添加方法请参考这个文档
1.添加下列Linker Flags: -llibMap、-lAMapImp

  1. 添加下列依赖库:
    libAMapImp.a、liblibMap.a和
    参考高德地图章节
  2. 添加下列文件: AMap.bundle
    4.申请Appkey,如果没有appkey将会导致地图显示不出
    参考高德地图Appkey申请章节
  3. 打开Info.plist文件找到amap项,如果没有按图片中的格式添加该项,在下图中输入申请的appkey

注意:工程里只能有一个地图,其他的地图功能,要删除info.plist里的key,和对应的库文件,请详细根据Feature-iOS.xml文件的内容配置

继续阅读 »

百度地图配置

Linker Flags、framework等添加方法请参考这个文档
1.添加下列Linker Flags: -llibMap、-lBaiduKeyVerify、-lbmapimp

  1. 添加下列framework: 添加下列framework
    libstdc++.tbd
    libsqlite3.0.dylib
    QuartzCore.framework
    CoreGraphics.framework
    CoreTelephony.framework
    SystemConfiguration.framework
    Security.framework
    MapKit.framework
    OpenGLES.framework
    CoreLocation.framework
    BaiduMapAPI_Utils.framework
    BaiduMapAPI_Base.framework
    BaiduMapAPI_Search.framework
    BaiduMapAPI_Map.framework
    BaiduMapAPI_Location.framework
    libbmapimp.a
    libBaiduKeyVerify.a
    libssl.a
    libcrypto.a
  2. 添加下列文件: mapapi.bundle
    4.申请Appkey,如果没有appkey将会导致地图显示不出
    参考百度地图Appkey申请章节

  3. 打开Info.plist文件找到baidu项,如果没有按图片中的格式添加该项,在下图中的红色区域输入申请的Appkey
    注意info.plist中Bundle identifier要和你输入的安全码一致


    常见问题解决

    1.如下图只能看见栅格图可能的原因appkey配置不对、Bundle identifier和安全码不一致、百度地图缓存导致的可以删除app重新安装


    2.提示appKey校验错误

    在XCode控制台搜索baidu maponGetPermissionState 查看错误码是多少,对比百度开发平台错误信息

高德地图配置

Linker Flags、framework等添加方法请参考这个文档
1.添加下列Linker Flags: -llibMap、-lAMapImp

  1. 添加下列依赖库:
    libAMapImp.a、liblibMap.a和
    参考高德地图章节
  2. 添加下列文件: AMap.bundle
    4.申请Appkey,如果没有appkey将会导致地图显示不出
    参考高德地图Appkey申请章节
  3. 打开Info.plist文件找到amap项,如果没有按图片中的格式添加该项,在下图中输入申请的appkey

注意:工程里只能有一个地图,其他的地图功能,要删除info.plist里的key,和对应的库文件,请详细根据Feature-iOS.xml文件的内容配置

收起阅读 »

iOS离线打包-Feature模块配置

离线打包 iOS

离线打包可以根据需要进行插件的增删,这个过程需要对工程做出修改。

目前插件需要修改的项目包含 LinkerFlags、 Library、Framework、资源文件、宏定义、info.plist文件几项。

并不是所有的插件都要修改以上几项,大部分插件只需要修改其中几项即可。

如果app中出现“缺失模块提醒框”,需要按照下面步骤添加相应的模块即可。

每个插件需要修改哪些项目,每个项目需要配置的值是什么,可以查看SDK中的Feature-iOS.xls文件。

具体修改方法:

如何修改LinkerFlags配置

按照下图找到Other Linker Flags 点击该项,在弹出的窗口中点击+可以添加flag 点击-可以删除flag


如何修改Library配置

library为插件对应的库文件和依赖库, 目前离线打包工程包括所有的库,不需要修改

如何修改framework配置

framework为插件依赖的系统库,按照下图找到framework的配置位置,点击+可以添加,选中framework点击-可以删除

如何添加删除文件

资源为插件需要使用的资源如图片、国际化文件等, 点击File->addFile 在弹出的对话框中选择响应文件即可,
删除时在工程中选中该项目,点击delete键

如何修改宏定义

按照下图找到Macors,在弹出的窗口中点击+可以添加添加-可以删除

继续阅读 »

离线打包可以根据需要进行插件的增删,这个过程需要对工程做出修改。

目前插件需要修改的项目包含 LinkerFlags、 Library、Framework、资源文件、宏定义、info.plist文件几项。

并不是所有的插件都要修改以上几项,大部分插件只需要修改其中几项即可。

如果app中出现“缺失模块提醒框”,需要按照下面步骤添加相应的模块即可。

每个插件需要修改哪些项目,每个项目需要配置的值是什么,可以查看SDK中的Feature-iOS.xls文件。

具体修改方法:

如何修改LinkerFlags配置

按照下图找到Other Linker Flags 点击该项,在弹出的窗口中点击+可以添加flag 点击-可以删除flag


如何修改Library配置

library为插件对应的库文件和依赖库, 目前离线打包工程包括所有的库,不需要修改

如何修改framework配置

framework为插件依赖的系统库,按照下图找到framework的配置位置,点击+可以添加,选中framework点击-可以删除

如何添加删除文件

资源为插件需要使用的资源如图片、国际化文件等, 点击File->addFile 在弹出的对话框中选择响应文件即可,
删除时在工程中选中该项目,点击delete键

如何修改宏定义

按照下图找到Macors,在弹出的窗口中点击+可以添加添加-可以删除

收起阅读 »

HBuilder为什么要登录。没网、内网怎么办?可否离线使用?

内网 离线使用 账户 注册 登录

HBuilderX

HBuilderX可以离线支持,登陆也不是强制的。
HBuilderX需要联网的地方包括:

  • 开发App时,仍然需要联网获取appid(不影响uni-app的非App端)
  • 云打包需要联网。不想联网也可以配置本地打包,参考https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/508
  • HBuilderX安装插件需要联网。如果是内网使用,可以在外网下载好插件,然后把plugin目录copy到内网使用。

=======================以下为老HBuilder相关内容======================================

HBuilder

首先HBuilder支持离线使用,在登录界面有一个跳过注册离线使用的按钮。
但是我们还是需要说一下我们的设计理念,为什么需要联网。

理念

为什么要设计账户体系。
我们认为单机工具没有前途,云+端的开发者服务代表未来,有更多想象空间。
而帐户体系是一切服务的基础。
我们享受了很多免费的互联网服务,但有一个代价,就是需要注册账户。
现在的手机、windows也都需要注册账户,都是云+端的趋势所致。
在开发工具领域,目前vs、dreameweaver新版也需要注册账户,未来这样的工具会越来越多。

安全性

如果开发者顾虑HBuilder会偷偷上传代码,那么不必担忧。
HBuilder需要账户,不是因为计划偷偷上传开发者的代码。
DCloud作为有更大雄心的企业,不会冒让自己身败名裂的巨大风险做坏事,而且我们也实在没动力去看开发者写的代码。
DCloud的股东包括很多开发界的知名人士,比如蒋涛、王淮,名人不会轻易代言,也算对我们的一种背书。

首次使用

HBuilder在一台电脑上第一次使用时需要联网验证激活。
如果是公司有限制,可以请求网管对HBuilder的安全性做测试,安全性肯定是没问题的,毕竟程序员还要上网查资料,没网络怎么工作。可以把dcloud.net.cn加入网络白名单(dcloud.net.cn是托管在阿里云的,旗下有service.dcloud,net.cn、update.dcloud.net.cn、ask.dcloud.net.cn等子站)。
HBuilder支持暂不登录。初次使用HBuilder,若没有网,也可以进入HBuilder。
不过我们还是推荐用户注册一下,不然每次启动HBuilder都要点下暂不登录按钮。(那话怎么说来着,注册个帐户你又不会怀孕)

后续使用

帐户激活过一次后,后续HBuilder支持完全脱线使用,也不用再每次启动点暂不登录。(未激活过还需要点暂不登录)
开发者使用笔记本会经常没有网络,此时可放心,一样是可以写代码的。
只是脱线后需要联网的功能没法用,包括:

  • 云端打包(我们也提供了本地打包)
  • 插件一键式云端下载安装(也可使用eclipse的本地插件安装方式装插件)
  • 升级,包括HBuilder及插件的升级无网络时都无法运行
  • 吐槽、问答等功能也需要联网
  • 没有网络无法自动每日签到,无法得到签到积分

其他误会

有人误以为登录会造成启动过慢,其实完全不会,1秒都不影响。
前面已经提到,没网络时HBuilder也是可直接进入的。
有人误以为我们做账户体系是为了收费,以后会推出收费免登录的功能。我们确实没这种想法。

如何让公司网管信任HBuilder

关于如何让公司网管信任HBuilder,我们也有点头疼。也欢迎大家给出好招。
但DCloud愿意配合开发者的公司网管的安全审计。
网管可以侦测HBuilder的网络通信流量,肯定是小到不足以上传工程代码的地步。

云服务的强化

后续DCloud还会继续开发更多创新的云服务,让大家体验到不一样的开发模式,账户的属性强化会越来越有意思。

最后,中国人之前从来没有做成功过开发工具,我们开发HBuilder的过程中也经历过很多质疑,
尤其是制作免费工具,不图给开发者卖钱,不就图多几个注册用户嘛,希望大家多支持我们,多帮我们发展用户,谢谢!

继续阅读 »

HBuilderX

HBuilderX可以离线支持,登陆也不是强制的。
HBuilderX需要联网的地方包括:

  • 开发App时,仍然需要联网获取appid(不影响uni-app的非App端)
  • 云打包需要联网。不想联网也可以配置本地打包,参考https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/508
  • HBuilderX安装插件需要联网。如果是内网使用,可以在外网下载好插件,然后把plugin目录copy到内网使用。

=======================以下为老HBuilder相关内容======================================

HBuilder

首先HBuilder支持离线使用,在登录界面有一个跳过注册离线使用的按钮。
但是我们还是需要说一下我们的设计理念,为什么需要联网。

理念

为什么要设计账户体系。
我们认为单机工具没有前途,云+端的开发者服务代表未来,有更多想象空间。
而帐户体系是一切服务的基础。
我们享受了很多免费的互联网服务,但有一个代价,就是需要注册账户。
现在的手机、windows也都需要注册账户,都是云+端的趋势所致。
在开发工具领域,目前vs、dreameweaver新版也需要注册账户,未来这样的工具会越来越多。

安全性

如果开发者顾虑HBuilder会偷偷上传代码,那么不必担忧。
HBuilder需要账户,不是因为计划偷偷上传开发者的代码。
DCloud作为有更大雄心的企业,不会冒让自己身败名裂的巨大风险做坏事,而且我们也实在没动力去看开发者写的代码。
DCloud的股东包括很多开发界的知名人士,比如蒋涛、王淮,名人不会轻易代言,也算对我们的一种背书。

首次使用

HBuilder在一台电脑上第一次使用时需要联网验证激活。
如果是公司有限制,可以请求网管对HBuilder的安全性做测试,安全性肯定是没问题的,毕竟程序员还要上网查资料,没网络怎么工作。可以把dcloud.net.cn加入网络白名单(dcloud.net.cn是托管在阿里云的,旗下有service.dcloud,net.cn、update.dcloud.net.cn、ask.dcloud.net.cn等子站)。
HBuilder支持暂不登录。初次使用HBuilder,若没有网,也可以进入HBuilder。
不过我们还是推荐用户注册一下,不然每次启动HBuilder都要点下暂不登录按钮。(那话怎么说来着,注册个帐户你又不会怀孕)

后续使用

帐户激活过一次后,后续HBuilder支持完全脱线使用,也不用再每次启动点暂不登录。(未激活过还需要点暂不登录)
开发者使用笔记本会经常没有网络,此时可放心,一样是可以写代码的。
只是脱线后需要联网的功能没法用,包括:

  • 云端打包(我们也提供了本地打包)
  • 插件一键式云端下载安装(也可使用eclipse的本地插件安装方式装插件)
  • 升级,包括HBuilder及插件的升级无网络时都无法运行
  • 吐槽、问答等功能也需要联网
  • 没有网络无法自动每日签到,无法得到签到积分

其他误会

有人误以为登录会造成启动过慢,其实完全不会,1秒都不影响。
前面已经提到,没网络时HBuilder也是可直接进入的。
有人误以为我们做账户体系是为了收费,以后会推出收费免登录的功能。我们确实没这种想法。

如何让公司网管信任HBuilder

关于如何让公司网管信任HBuilder,我们也有点头疼。也欢迎大家给出好招。
但DCloud愿意配合开发者的公司网管的安全审计。
网管可以侦测HBuilder的网络通信流量,肯定是小到不足以上传工程代码的地步。

云服务的强化

后续DCloud还会继续开发更多创新的云服务,让大家体验到不一样的开发模式,账户的属性强化会越来越有意思。

最后,中国人之前从来没有做成功过开发工具,我们开发HBuilder的过程中也经历过很多质疑,
尤其是制作免费工具,不图给开发者卖钱,不就图多几个注册用户嘛,希望大家多支持我们,多帮我们发展用户,谢谢!

收起阅读 »