背景

2021年8月起来,Google play要求应用使用Android App Bundle进行发布。.aab将取代.apk作为标准发布格式。

除了APK被替换为新的AAB格式外,如果应用程序的容量大于150MB,开发者必须改用Play Asset或Feature Delivery格式来取代旧的OBB(大型扩展文件)格式。

what??? 那未来国内肯定也会支持啊,之前Google率先支持64位架构,今年国内应用商店如小米,OPPO,VIVO等联合推出,也要求上传须支持64位arm架构。赶紧搞一波。

还有个问题,华为鸿蒙是不好多个cnm,搞它。

研究

参考:

https://mp.weixin.qq.com/s/9DFf-uGQY3KJNMwwyAlhkA

https://developer.android.google.cn/platform/technology/app-bundle

https://mp.weixin.qq.com/s/Wh9KJpb0hd02MHRO9kzbVw

aab优势

首先,比一般apk小15%。下载速度更快,进而提升安装量,减少卸载量。

动态方式交付大型资源可以减少用户等待时间,同时缩减交付成本。

打包编译更快。

Demo

通过使用命令行构建

  1. ./gradlew bundleRelease

通过使用Android Studio构建

在输入签名文件密码面板最下面有这句

  1. export encrypted key for enrolling published app in google play app signing
  2. 导出用于在 Google Play 应用签名中注册已发布应用的加密密钥

打包出来aab的包后,用压缩包工具打开里面是四个层级,pb格式的文件

  • base目录;

主要包含代码,第三方package,资源文件

  • BUNDLE-METADATA目录,

里面是dependencies.pb

  • META-INF目录;

签名密钥

  • BundleConfig.pb文件

aab格式转换位apk格式

aab格式的包要通过Google play上传根据应用配置来生成apk。

下载 bundletool,它可以转换为apk。

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

  • 命令
  1. bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

参考

https://developer.android.google.cn/studio/command-line/bundletool