uniapp开发---Android打包发行(避坑指南四)

android离线打包,原生打包。参考官网文档

应用配置 | uni小程序SDK

【彩带- 避坑知识点】:

安卓离线打包,功能都正常,版本更新无法实现下载后自动安装。

但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版本,为正式版本)

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值