Uniapp离线打包集成蒲公英SDK
1:前提
在项目开发过程中,或者是特殊场景下。为了便于内测项目的分发,我们大多会选择一些托管平台。我使用的是蒲公英平台,所以本文描述的是关于uniapp通过离线打包的形式在Android端集成蒲公英的一些注意点与操作步骤。如果有需要了解iOS端的,可以留言,抽时间再补上。
2:uniapp离线打包
a:在Dcloud创建应用
应用列表.jpgb:配置参数生成对应的离线打包key
配置信息.jpg生成key值.jpg
c:下载最新的离线打包基座
Android离线打包指南
版本不一致问题提示
为了避免打包完成后弹窗提醒版本不一致问题,可以在对应项目里面的manifest.json文件里面加入ignoreVersion的代码
"compatible" : {
"ignoreVersion" : true
},
忽略版本配置.jpg
d:按照离线打包的指引配置完成
想要自己跟着文章配置的也行,我偷懒是直接在资源包的项目HBuilder-Integrate-AS示例里面操作的。为了怕玩坏项目我一般会压缩一个原始示例的版本。
目录.jpg
步骤如下:
1:build.gradle 修改versionCode / versionName
2:assets/data/dcloud_control.xml 修改appId
3:assets/apps/__uni__xxxxxxx ,修改对应的导入文件
4:manifests/AndroidManifest.xml 修改对应dcloud_appkey 对应的value值。
最后打包生成对应apk,有什么问题都能百度找到解决办法。这里主要讲怎么集成蒲公英的SDK。
3:Android集成蒲公英SDK
蒲公英的更新原理就不过多介绍了,想了解的可以自行百度。值得注意的是versionCode这个值。本人安卓原生知识接近于0,所有前面有百度过很多。主要参考过这篇Android App通过蒲公英实现更新,感谢作者的分享。
简单说下基本步骤(注意区分不同的build.gradle)
- 添加仓库地址
maven { url "https://raw.githubusercontent.com/Pgyer/mvn_repo_pgyer/master" }
build.gradle.jpg
- 添加依赖
implementation 'com.pgyersdk:sdk:3.0.10'
依赖build.jpg
- 在AndroidManifest.xml文件中添加所需的权限
<!-- 必选-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 获取网络状态 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 网络通信-->
<!-- 用户手机设置中允许未知来源安装包安装状态为关;-->
<!-- Android8.0 以后,如果要安装 apk 需要额外添加权限:-->
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- 在uniapp离线打包文档下载的HBuilder-Integrate-AS示例项目里面,Java文件夹应该是空的。这时候,我们就要自己在里面新建我们需要的文件了。我是按照包名的路径新建了一个MainActivity、一个myApplication文件。 项目目录_.jpg
以上步骤是按照文章Android App通过蒲公英实现更新完成的。下面讲到的这些就是离线打包的注意点了。
- 在新建的application文件里面,导入蒲公英需要的头文件,然后完成对应的注册配置代码 applicaiton.jpg
- 在新建的Activity文件里面导入蒲公英所需的头文件,然后如果不需要自定义版本更新提醒的样式,可以直接用默认的。 Activity.jpg
这里红线框起来的地方就是离线打包集成蒲公英的重点部分了,因为uniapp里面已经自带了一个Application、一个Activity。所以我们需要导入对应头文件,然后继承它,不然这两个文件里写的方法都不会生效。但是继承后又会有报merged manifest的错。这时候又需要进行下面的操作了
4:继承io.dcloud.application.DCloudApplication的问题
参考:dcloud进行android离线打包 需要继承io.dcloud.application.DCloudApplication的问题
我们将写好的application继承自 DCloudApplication,但是仅仅这样是会报错的merged manifest。需要我们在AndroidManifest文件中加入:
xmlns:tools="http://schemas.android.com/tools"
标签.jpg
application节点下将name修改为我们自定义的 同时加入 tools:replace="android:name"
application节点.jpg
节点里面的name写成我们自己新建的application文件名, Activity也要写我们自己新建的那个MainActivity。这样就完成了蒲公英的集成,实现新版本更新提示了。
在这个过程中自己走了很多弯路。然后因为安卓原生知识的匮乏,进展很缓慢,自己也很痛苦。当然,完成以后也是很开心的。所以总结一下流程,希望能帮到大家。至于uniapp集成其他的原生SDK应该跟这个也差不多了。
记得点个赞,鼓励一下。谢谢!