关于HBuilder在云端打包和本地手机运行效果不同的问题

时间:2024-04-09 11:39:23

问题描述:

最近在HBuilder上用云端打包的时候发现app和在HBuilder上连接平板直接运行的效果完全不一样!画面会出现闪烁等等奇怪的bug。

出现原因:

问题出现是因为我在本地开发的时候使用的HBuilder的版本是7.5.1.201610112114(不更新的原因是以前有一次更新出现了奇怪的bug,所以一直都没有更新了)。那么问题来了,本地HBuilder直接真机运行时所使用的HTML5+ SDK 和云端打包时所使用的的HTML5+ SDK 版本是否一致呢?通过下载最新的HBuilder进行本地真机运行的结果证实了这个问题:云端打包时所使用的5+SDK和本地的是不一致的,云端使用的是最新的5+SDK。如果下载了最新的HBuilder,则和云端打包的app运行起来效果是一样的。但是在开发的过程中,不可能随着5+SDK的更新要修改原来的代码。故要保证本地真机运行和打包时使用的5+SDK是同一版本的才能保证编写代码时的app效果和打包出来的app效果是一致的。

解决方法:

啰里啰嗦了半天,还是直接附上解决方法吧。解决的方法说来也简单,直接离线打包就行了。但是首先需要一个开发Android程序的环境,我用的是eclipse kepler,所以下面我就讲下怎么用eclipse来离线打包HBuilder的程序。

安装ADT和SDK

我是参考该篇文章http://blog.csdn.net/linyingzhi829/article/details/50589875,进行配置的。这里要说一下,在Android SDK Manage这一步,需要安装的有tools里面的全部软件包以及选择一个Android版本的api进行安装,也可以全部都安装,不过时间上还是太久了,我这里就只下了4.4.2的api。

将HBuilder里的工程导入eclipse的安卓工程

HBuilder的官网上也给出离线打包的教程http://ask.dcloud.net.cn/article/38,不过讲的还是太笼统了,对于我这种没有接触过Android开发的人真是一头雾水,不过好在在下面的评论里面找到了几篇不错的文章进行参考。我总体上参考了http://ask.dcloud.net.cn/article/526?notification_id-76397__item_id-3005的文章,不过他的工程里面有很多模块都没有添加进去,配置起来还是挺麻烦的。我在这里还是将我怎么操作的方法记录下来,免得以后忘了。

新建安卓工程

关于HBuilder在云端打包和本地手机运行效果不同的问题

一直下一步,这里取消勾选,点击完成。

关于HBuilder在云端打包和本地手机运行效果不同的问题

导入文件

将Android工程中的res文件夹清空,把5+sdk SDK文件夹中的res,libs,src全部复制过来。

关于HBuilder在云端打包和本地手机运行效果不同的问题

复制HBuilder-Hello的data文件夹过来

关于HBuilder在云端打包和本地手机运行效果不同的问题

导入HBuilder工程

将HBuilder工程生成本地打包app资源,导入工程

关于HBuilder在云端打包和本地手机运行效果不同的问题

修改配置文件

修改manifest.json文件中的id为刚才拷贝过来的文件名字H569CBC18;
关于HBuilder在云端打包和本地手机运行效果不同的问题

修改data/control.xml
关于HBuilder在云端打包和本地手机运行效果不同的问题

修改res/values/strings.xml,为app图标下的名字
关于HBuilder在云端打包和本地手机运行效果不同的问题

修改AndroidManifest.xml,将5+SDk中HBuilder-Hello的拷贝过来,修改version
关于HBuilder在云端打包和本地手机运行效果不同的问题

运行程序

电脑连接安卓手机,运行
关于HBuilder在云端打包和本地手机运行效果不同的问题

运行的时候会出现错误,删掉其中之一就好了,我删了3dMap
关于HBuilder在云端打包和本地手机运行效果不同的问题

再次运行会出现错误,将AndroidManifest.xml 中的io.dcloud.HBuilder全部替换成 io.dcloud.H569CBC18 就好了。
关于HBuilder在云端打包和本地手机运行效果不同的问题

修改其他配置

修改程序载入画面和程序图标

修改res中的icon.png(图标)和splash.png(程序载入画面),各个分辨率的都要修改。
关于HBuilder在云端打包和本地手机运行效果不同的问题

个推功能

个推需要输入APPID、APPKEY和APPSECRET,将下面三个值全局替换成你申请的即可。详细的可以参考5+SDK的Feature-Android.xls
关于HBuilder在云端打包和本地手机运行效果不同的问题

百度地图

参考官网说明http://ask.dcloud.net.cn/article/29,需要SHA1和包名io.dcloud.H569CBC18,就是AndroidManifest.xml开头的那个。SHA1的值可以生成或者直接使用debug的。
关于HBuilder在云端打包和本地手机运行效果不同的问题