android离线打包,原生打包。参考官网文档
【彩带- 避坑知识点】:
安卓离线打包,功能都正常,版本更新无法实现下载后自动安装。
但uniapp云打包则下载更新安装都正常。猜测可能是因为安卓离线打包缺少aar包导致的。
则解决方案:
lib下要放上install-apk-release.aar
安卓打包详情流程如下:
1.android studio项目的libs目录下要有这些jar包。
2.去uniapp项目下。点击发行 -> 原生APP-本地打包 -> 生成本地打包APP资源。
3、把步骤二生成的资源拷贝到安卓项目目录下。 项目下 app/src/main/assets/apps/
4.修改dcoloud_control.xml文件, appid名称,换成我们uniapp项目的appid。 和第三步生成的app资源文件目录一致,如下图
5.app目录的build.gradle配置项目依赖dependencies,
这里注意一个问题。就是这些插件的版本要和hubilderX的版本保持一样。因为这样hbuilder生成的app资源,才能正常运行。 【引入libs目下的库和其它依赖库】
详见 android 离线sdk版本对应关系Android 离线SDK - 正式版 | uni小程序SDK
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(dir: 'libs', include: ['*.aar'])
/*uniapp所需库-----------------------开始*/
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation "com.facebook.fresco:animated-gif:1.13.0"
/*uniapp所需库-----------------------结束*/
// 基座需要,必须添加
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.alibaba:fastjson:1.2.83'
implementation 'androidx.webkit:webkit:1.3.0'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation 'androidx.core:core:1.1.0'
implementation "androidx.fragment:fragment:1.1.0"
implementation 'androidx.appcompat:appcompat:1.1.0'
}
6.app下的AndroidManifest.xml文件要把uniapp项目在manifest.xml文件声明的权限在。这边同步声明一遍。权限跟自己自己的业务需求 ,需要什么就注册什么。 (像网络,外部存储读写,install安装相关的,更新版本安装都需要,所以就都需要注册一下)
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 读写设计存储权限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--添加REQUEST_INSTALL_PACKAGES权限-->
<!-- 必须加这个权限,不然会导致读条结束后安装包不启动-->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.INSTALL_PACKAGES"
tools:ignore="ProtectedPermissions"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.INSTALL_SHORTCUT"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
7、版本号版本名称, 修改app项目下build.gradle文件的版本号和版本名称,和uniapp项目中manifest.xml文件的 要保持一致。
8、 uni-app配置时需要在build.gradle中添加aaptOptions配置, 放android{} 内。
//使用uniapp时,需复制下面代码
/*代码开始*/
aaptOptions {
additionalParameters '--auto-add-overlay'
//noCompress 'foo', 'bar'
ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"
}
/*代码结束*/
9. androidStudio配置支持aar加载,新老gradle构建工具aar配置有所变化
老版本在app的build.gradle中配置
新版本在仓库级别里面配置,项目根目录里面的build.gradle或者settings.gradle
10.app/build.gradle要改成和自己的项目 appid一致。
11、打包(按照以下布置,选择打包,选择证书,输入对应的密码和别名,下一步,完成。打包成release版本,为正式版本)