uniapp开发 — 安卓离线打包

  • 工具: HBuilderXAndroid Studio
  • App离线打包文档
  • 下载 Android 离线SDK
    目录说明:
    |-- HBuilder-Hello                App离线打包演示应用
    |-- HBuilder-Integrate-AS        集成uni-app或5+ app的最简示例
    |-- SDK                            SDK库文件目录
    |-- Feature-Android.xls            Android平台各扩展Feature API对应的详细配置
    |-- Readme.txt                    版本说明文件及注意事项
    |-- UniPlugin-Hello-AS            uni原生插件开发示例
  • 使用HBuilderX生成本地离线包


    本地离线包
  • 将本地离线包内xxx/xxx/unpackage/resources/__UNI__xxxx/www的文件复制到SDK内HBuilder-Hello/app/src/main/assets/apps/HelloH5/www

    本地离线包内www内的文件

HBuilder-Hello下的www内
  • 修改HBuilder-Hello/app/src/main/res/drawable-xxhdpi/ 文件下内的icon.png、splash.png、push.png

  • HBuilder-Hello/app/src/main/assets/apps/HelloH5的文件名HelloH5修改为 uni-app项目manifest.json中的appid(__UNI__xxxx)

  • 打开 HBuilder-Hello/app/src/main/assets/data/dcloud_control.xml,将appid修改为 uni-app项目manifest.json中的appid(__UNI__xxxx)

    修改appid

  • 打开 HBuilder-Hello/app/build.gradle
    参考文章:Android Studio 一个工程打包多个不同包名的APK实例详解、uniApp 安卓多环境打包基础配置
    1.删除defaultConfig内的applicationId,并添加flavorDimensions "default"
    2.增加productFlavors

    修改build.gradle文件

    注意:若build.gradle内定义了自动生成@string/app_name,则app/src/main/res/values/strings.wxml需删除,不然会报错Duplicate resources;否则需要手动修改app_name打开 HBuilder-Hello/app/src/main/res/values/strings.xml
    修改应用名称

  • 打开HBuilder-Hello/app/src/main/AndroidManifest.xml
    1.将包名package替换成要修改成的包名

    修改包名

    2.将所有io.dcloud.HBuilder.Hello替换成要修改成的包名${applicationId}
    3.修改icon和label
    修改icon和label

    4.修改微信支付配置
    微信支付配置

  • 微信支付

uni-app本地安卓打包,下载uni-app官方sdk,如果修改了包名,要调起微信必须要同时修改一下文件包名,如没修改包名则不需要更改,否则会调用不起微信

  1. HBuilder-Hello/app/src/main/java 下的文件名需要和 HBuilder-Hello/app/src/main/AndroidManifest.xmlpackage 一致
    修改java下的文件名
  2. 修改 WXPayEntryActivity.javaWXEntryActivity.java 内的包名与HBuilder-Hello/app/src/main/AndroidManifest.xmlpackage 一致
    修改 WXPayEntryActivity.java内的包名

    修改 WXEntryActivity.java内的包名
  3. 修改 Androidmainfest.xml


    微信支付配置
  • 原生插件打包配置

    1. HBuilder-Hello/app/src/main/assets目录下创建dcloud_uniplugins.json文件
    {
      "nativePlugins": [
        {
          "hooksClass": "",
          "plugins": [
            {
              "type": "module", // 必填, 根据插件类型选择",
              "name": "PluginModule", //"必填, 注册插件的名称, 注意:module 的 name 必须以插件id为前缀或和插件id相同,比如 `DCTestUniPlugin-TestModule`,其中 DCTestUniPlugin 为插件的id,避免与其他插件冲突,component 的 name 没有强制要求,但是也要保证唯一比如 `dc-map`"
              "class": "com.test.plugin.PluginModule"//  "必填, 注册插件的类名"
            }
          ]
        }
      ]
    }
    
    1. HBuilderX项目使用的插件中android目录下的aar/jar文件放入HBuilder-Hello/app/libs下,其余文件参考插件文档放入指定文件夹中
      HBuilderX项目中
  • 生成apk


    打包1

    打包2

    打包3

    打包4

注意事项

  • app打包时不能使用本地测试服务地址(localhost或127.0.0.1),打包后会造成白屏
  • 一个页面最好不要引用两个wxs文件,编译器(2.6.5.20200314)之后的版本运行时会报错
  • 修改包名后app部分手机安装失败,可以卸载App后重启手机再重新安装
  • 修改应用图标后安装app,手机端应用图标未更新,可能是手机缓存,可以卸载App后重启手机再重新安装
  • 安卓手机返回键直接退出应用时不执行onHide生命周期
  • onPullDownRefresh 需要在 pages.json 的当前页面的节点里的 style 选项中开启 enablePullDownRefresh;刷新完之后,需要调用uni.stopPullDownRefresh 停止当前页面的下拉刷新,否则会一直loading且不能继续下拉刷新

参考文档

  • App离线打包文档
  • Android 离线SDK下载
  • 微信支付
  • 原生插件使用说明
  • 原生插件打包配置
  • UniPush使用指南
  • UniPush开通指南
  • uni-app 资源在线升级/热更新
  • uni-app 整包升级/更新方案
  • uniapp增量更新
  • Android Studio 一个工程打包多个不同包名的APK实例详解
  • uniApp 安卓多环境打包基础配置
  • HBuilder/HBuilderX真机运行、手机运行、真机联调常见问题

你可能感兴趣的:(uniapp开发 — 安卓离线打包)