DCloud_App_Array
DCloud_App_Array
  • 发布:2021-05-12 21:08
  • 更新:2024-08-21 11:11
  • 阅读:33870

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

要回复文章请先登录注册

1***@qq.com

1***@qq.com

回复 DCloud_App_Array :
数字、大小写字母、特殊字符都用上了,还是提示证书密钥强度太低
2021-08-10 09:32
DCloud_App_Array

DCloud_App_Array (作者)

回复 1***@qq.com :
自己修改密钥呀,用keytool命令可以修改
2021-08-09 18:06
1***@qq.com

1***@qq.com

aab云打包,上传GooglePlay提示 您的Android App Bundle所使用的上传证书的密钥强度太低
2021-08-09 15:00
z***@163.com

z***@163.com

GoolePlay(AAB) 云打包 plus.push.getClientInfo() 无法获取个推CID
2021-07-21 14:12
不想你丶

不想你丶

回复 DCloud_App_Array :
谢谢,使用bundletool-all-1.6.0.jar安装进手机就正常了。之前有问题是使用了1.6.1的版本
2021-07-02 16:33
DCloud_App_Array

DCloud_App_Array (作者)

回复 不想你丶 :
首先,请使用相同的配置尝试勾选非google play渠道打包apk是否可以正常运行?
如果apk没问题,生成aab有问题,请单独发帖并上传aab文件。
2021-07-01 11:57
不想你丶

不想你丶

回复 我的地盘 :
我也是一样,安装进手机很小, 而且打不开,只有启动页。启动页的图片还是变形的。
2021-06-29 17:34
DCloud_App_Array

DCloud_App_Array (作者)

回复 Memories :
请使用HBuilderX3.1.21-alpha版本
2021-06-29 16:33
我的地盘

我的地盘

Google渠道打包,安装aab->apks后白屏。安装到手机的文件大小才是原来的1/3。怎么回事
2021-06-29 15:31
Memories

Memories

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