tmerclub-doc/app离线打包/Android 打包文档.md
2025-03-19 15:04:57 +08:00

7.9 KiB
Raw Permalink Blame History

Mall4j 商城 Android 打包文档

文档源自 uniapp 官方离线打包文档,如有出入以官网文档为准

准备工作

Android平台签名证书 生成指南

注册Dcloud账号登录后台创建应用并申请离线打包 Appkey

开发环境

Android Studio 官方下载

HbulidX 官方下载

App离线SDK下载 最新android平台SDK下载

SDK目录说明

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

导入工程

打开 Android Studio 导入 SDK 中的 HBuilder-Integrate-AS 工程

导入工程

导入后 Android Studio 会自动下载项目中用到的资源默认源是Google建议科学上网

工程配置

build.gradle

将生成的签名证书放入 simpleDemo 目录下 打开 simpleDemo/build.gradle 配置文件,修改包名和签名信息

修改包名、签名

// 签名信息配置
signingConfigs {
    config {
        keyAlias 'key0'				// 证书别名
        keyPassword '123456'		// 证书密码
        storeFile file('test.jks')	// 证书文件路径
        storePassword '123456'		// 证书文件密码
        v1SigningEnabled true
        v2SigningEnabled true
    }
}

Androidmanifest.xml

打开 simpleDemo/src/main/Androidmanifest.xml修改包名配置Appkey

修改包名、签名

图标、启动图以及应用名称

图标、启动图

simpleDemo/src/main/res/drawableicon 为图标splash 为启动图。可直接替换

应用名称

simpleDemo/src/main/res/values/strings.xml文件修改“app_name”字段值

模块及第三方SDK配置

使用模块或第三方SDK需要引入资源并添加对应配置。

第三方SDK配置

微信支付 为例,需要登录 微信开放平台 创建移动应用,审核成功后获取 微信AppId(appkey) 微信appkey申请方法

  1. 引入文件

    在 SDK/libs 目录下,找到 payment-weixin-release.aar 将这个文件放入工程中 simpleDemo/libs 目录;

    将 SDK/src/wxapi 下的 WXPayEntryActivity.java 文件复制到工程 simpleDemo/main/java/包名/wxapi 目录

  2. 添加配置

    1. Androidmainfest.xml

      需要在application节点前添加权限

      <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
      

      application节点下配置如下代码

       <meta-data  android:name="WX_APPID"  android:value="$微信APPID" />
       <activity android:name="io.dcloud.feature.payment.weixin.WXPayProcessMeadiatorActivity"
                  android:exported="false"
                  android:excludeFromRecents="true"
                  android:theme="@style/ProjectDialogTheme"/>
        <activity
                  android:name="$你的包名.wxapi.WXPayEntryActivity"
                  android:exported="true"
                  android:theme="@android:style/Theme.Translucent.NoTitleBar"
                  android:launchMode="singleTop" />
      
    2. dcloud_properties.xml (assets/data)

      <feature name="Payment" value="io.dcloud.feature.payment.PaymentFeatureImpl">
          <module name="Payment-Weixin" value="io.dcloud.feature.payment.weixin.WeiXinPay"/>
      </feature>
      
    3. build.gradle simpleDemo/build.gradle在主工程的build.gradle文件配置 dependencies

      dependencies {
          implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: [])
          implementation 'androidx.appcompat:appcompat:1.0.0'
          implementation 'androidx.legacy:legacy-support-v4:1.0.0'
          implementation 'androidx.recyclerview:recyclerview:1.0.0'
          implementation 'com.facebook.fresco:fresco:2.5.0'
          implementation "com.facebook.fresco:animated-gif:2.5.0"
          implementation 'com.github.bumptech.glide:glide:4.9.0'
          implementation 'com.alibaba:fastjson:1.2.83'
          implementation 'androidx.webkit:webkit:1.3.0'
      
          //  微信支付依赖配置
          implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.8.0'
      }
      

项目中用到的模块及第三方SDK

模块/第三方SDK 需要引入的文件
系统定位 无需引入文件,需添加配置
支付宝支付 payment-alipay-release.aar
微信支付 payment-weixin-release.aar
VideoPlayer视频播放 media-release.aar、weex_videoplayer-release.aar
livepusher直播推流 weex_livepusher-release.aar

导出资源

用 HbulidX 打开项目,打开 manifest.json 配置文件,修改 uniapp 应用标识(appid) 为 离线AppKey 中的应用id

选择项目 -> 发行 -> 原生App-本地打包 -> 生成本地打包App资源编译完成后控制台会显示资源路径

或执行命令 npm run build:app-android 编译

导入资源

将编译好的app资源拷贝到项目assets->apps下目录结构如下图

修改 assets/data/dcloud_control.xml 中的 appid 为 uni-app 的 id

打包apk

Android Studio 菜单选择 Build -> Generate Signed Bund / APK ,弹窗选择 APK选择打包用的签名输入签名信息选择release 点击 Finish 即可完成打包

常见问题

未配置AppKey或配置错误

1、查看签名文件是否配置到了主APP的build.gradle

2、查看离线项目中dcloud_control.xml文件中的appid是否与申请AppKey时的appid一致

3、检测离线项目的包名是否申请AppKey时的包名是否一致

4、编译完通过apk解压获取一下签名信息与申请AppKey时填写的SHA1一致

模拟器中app无法运行

要在模拟器运行,需要在 simpleDemo 目录下 build.gradle 配置文件 defaultConfig 下 添加配置

android {
	defaultConfig {
       ...
       ndk {
           abiFilters 'arm64-v8a','armeabi-v7a', 'x86'
	   }
    }
}