起因

公司有2款不同的PDA设备霍尼韦尔SUNMI 这2款pda设备,在有一次项目升级后,发现SUNMI这种设备型号的PDA设备热更新失败,准确的说不是热更新是失败 是热更新下来的APK 安装时无法兼容

如图

切图1

引发原因

项目一直是用的离线打包,Hbuilder X 这款开发工具,之前使用云打包的时候会自动调用本地的离线打包,可是有次开发工具更新后,云打包不触发离线打包了。本来并不在意这件事情,毕竟就是打包个安卓包而已,并不在意,打完包就发布了。。

后续就出现问题了,霍尼韦尔设备正常,SUNMI设备异常,前者设备安卓版本9.0, 后者安卓设备版本7.0,版本不兼容了。低版本的无法安装。

本地模拟器同样的也是这个问题,低版本的无法安装,安装上也是白屏。

经过排查,使用离线打包的就没有问题。

如何配置离线打包

开始准备

获取配置信息

在UNIAPP项目中有个 mainifest.json 文件 ,里面会看到一些基础配置信息,其中有个UNIAPP 引用标识, 这个也同样是APPID, 也关系到开发中心对应的项目编号。

切图2

生成本地打包资源

生成本地打包资源备用 后续放置到 Android Studio 内使用

切图3

切图4

将本地资源文件夹移动至离线SDK中

将本地资源包复制到该目录下

HBuilder-Integrate-AS\simpleDemo\src\main\assets\apps

切图4

Android Studio 导入SDK的示例项目

切图4

修改dcloud_control.xml 中的 appid

在新打开的编辑器中 , 找到 simpleDemo/src/main/assets/data/dcloud_control.xml

进行修改

切图7

修改为之前 mainifest.json 定义的APPID,还有当前准备发布的 版本号

生成安卓签名

安卓打正式包必须要的,参考官方文档

https://ask.dcloud.net.cn/article/35777

前往开发者中心生成AppKey

在我们使用 HbuilderX 后获取Appid后,登录账号,会在后台系统生成相应的应用,进入UNIAPP的开发者中心,选择相应的应用,获取离线的APPKEY

切图8

切图9

修改包名 配置appKey

在 AndroidManifest.xml 中修改包名,在开发者中心可以看到相关的包名,一般都是uni.xxx 开头的

切图10

在下方找到

 <meta-data
            android:name="dcloud_appkey"
            android:value="239898****************b2d9dbcbf2bc" />

android:value 修改成自己的离线 appKey 即可

修改原有的默认APP图标还有打包出来的应用名

修改应用名 /simpleDemo/src/main/res/values/strings.xml

<resources>
    <string name="app_name">修改自己的应用名</string>
</resources>

icon 启动图替换 /simpleDemo/src/main/res/drawable 中的 icon.png push.png splash.png 图片进行替换就好

切图10

最后尝试构建

切图12 切图13 切图14 切图15 切图16

完成 ,,,总而言之,写UNIAPP的坑很多,如果不是赶时间的话,建议去使用Flutter 等框架,(--)