DCloud_App_Array
DCloud_App_Array
  • 发布:2021-05-12 21:08
  • 更新:2025-01-20 11:50
  • 阅读:34906

Google Play上传应用要求Android App Bundle (AAB) 格式的相关说明

分类:uni-app

概述

Android App Bundle是Google在2018年推出的Apk动态组件化打包技术,通过AAB格式的App Bundle文件为你的设备动态组装apk来安装。其本质就是把Apk拆分成了多个模块,之前是把一个大而全的apk装到你手机里面,但是你其实用不到这么多东西,把暂时不需要的东西拿出来,这样就会节省很多的资源空间。除了效率和模块化之外,Android App Bundle现在还通过为新安装推出应用程序签名密钥升级提供更高的安全性。
注意:Android App Bundle (AAB) 与 APK 不同,AAB纯粹是为了上传Google Play而设计的,用户无法直接使用安装到手机上,测试AAB文件参考章节手机安装使用AAB格式文件

2021年8月开始Google Play要求新发布应用必须使用Android App Bundle(AAB)格式,即.aab格式文件;更新已经上架的应用还可以继续使用apk格式文件上传

详情参考Google官方博客说明:New Android App Bundle and target API level requirements in 2021

注:Google Play同时要求应用适配Android11,即 targetSdkVersion要求大于等于30。从2021年8月开始发布新应用必须设置targetSdkVersion大于等于30;从2021年11月开始更新已经上架的应用必须设置targetSdkVersion大于等于30。
HBuilderX3.1.0+版本已适配支持Android11,参考https://ask.dcloud.net.cn/article/193设置targetSdkVersion

HBuilderX云端打包支持Android App Bundle (AAB)

HBuilderX3.1.16+版本云端打包已支持Android App Bundle (AAB)格式,由于仅上传Google Play时才需要使用AAB格式文件,提交云端打包配置渠道为“GooglePlay”时云端打包自动生成AAB格式,其它渠道云端打包仍然使用APK格式。

注意:Android App Bundle (AAB)格式不支持安心打包,勾选“GooglePlay”渠道后将使用传统打包模式提交云端打包

本地离线打包支持Android App Bundle (AAB)

离线打包需要原生开发环境Android Studio,使用App离线SDK一直都支持Android App Bundle (AAB),详情参考https://ask.dcloud.net.cn/article/36356

手机安装使用AAB格式文件

Android App Bundle (AAB) 格式文件仅用于上传到Google Play,无法直接将AAB文件安装到手机上,如果要在手机上安装测试AAB格式包,可以使用bundletool工具
可以参考Google官方文档:https://developer.android.com/studio/command-line/bundletool
注意:Google官方文档需要科学上网才能打开

以下是我们整理的操作步骤

  1. 准备环境
    使用bundletool工具需要java环境,建议使用JRE8环境,请自行下载安装,并配置好系统环境变量

  2. 下载bundletool.jar包
    下载地址:https://github.com/google/bundletool/releases

  3. 使用cmd命令将aab文件转换为apks文件
    命令格式参考如下:

    java -jar <bundletool.jar的路径> build-apks --bundle=<.aab文件的路径> --output=<输出.apks的路径> --ks=<打包使用的证书文件的路径> --ks-pass=pass:<证书密码> --ks-key-alias=<证书别名> --key-pass=pass:<证书别名密码,通常与证书密码一致>

    将前面下载的bundletool-all-1.6.0.jar、云端打包生成的myapp.aab、证书文件my.keystore(证书别名为test、密码为123456)放到同一目录,在命令行中切换到当前目录,使用以下命令生成myapp.apks

    java -jar bundletool-all-1.6.0.jar build-apks --bundle=myapp.aab --output=myapp.apks --ks=my.keystore --ks-pass=pass:123456 --ks-key-alias=test --key-pass=pass:123456

    注意:生成apks文件会非常大,但安装到手机上占用空间会比原来apk格式文件小(这是因为只安装当前设备需要的资源)。另外可以在命令行中添加--connected-device参数来生成仅针对当前连接设备的apks文件,减少apks文件大小

  4. 使用cmd命令安装apks文件到手机上
    命令格式参考如下:

    java -jar <bundletool.jar的路径> install-apks --apks=<上一步中生成的.apks文件路径>

    注意:安装apks需要当前环境存的adb可以运行,建议安装Android SDK工具

常见问题

根据Google的要求,使用aab格式上传应用必须加入Google签名保护计划, 加入后需要提交签名证书文件。
注意:不是直接提交签名证书文件,而是要按规范进行转换
建议参考文档:Android Google Play app signing

1 关注 分享
Jerry_Deng

要回复文章请先登录注册

Memories

Memories

Google Play更新应用失败。错误信息:Implicit PendingIntent. Your app(s) contain an Implicit PendingIntent issue.
2021-06-29 10:02
s***@gmail.com

s***@gmail.com

报错误,谷歌无法发布,错误1:您无法移除所有正式版APK和Android App Bundle。 错误2:您需要上传此应用的Apk或Android App Bundle
2021-06-23 18:02
j***@126.com

j***@126.com

同样这个问题:您的应用程序包含隐式 PendingIntent 问题。原来的apk打包提交审核都没有问题,代码中也没有PendingIntent的相关引入,是否是云打包的环境问题???
2021-06-23 16:01
CHENAF

CHENAF

新版的AAB打包出来去谷歌市场提交审核提示应用被拒绝,您的应用程序包含隐式 PendingIntent 问题。原来的apk打包提交审核都没有问题,代码中也没有PendingIntent的相关引入,是否是云打包的环境问题???
2021-06-22 16:16
a***@gmail.com

a***@gmail.com

给力
2021-06-22 04:30
晏子楚

晏子楚

牛皮 plus
2021-06-10 11:33