在Google的I/O 2018上引入了一个新的APP的发布格式,就是 Android App Bundle. 在 2019年之后,Google开始推荐开发者上传APP或者更新APP使用 .aab 格式而不是传统的 .apk 格式。这么做的主要目的是为了减小从 Play Store 上下载APP 的尺寸。 技术的层面来说就是可以根据不同的设备动态的生成不同的APK的文件。 如果说用户想从Play Store 之外的地方下载到.aab 文件, 你就需要首先提取从AAB文件里面提取apk文件,然后安装到你的Android 设备上。
.aab 格式的文件对于用户来说是比较智能的,当开发者上传一个.aab 文件到Google Play, 当用户下载这个文件的时候,一个优化的适合这个设备的优化之后的APK文件才会被下载到这个用户手机上,这个功能应该是Google Play这个APP帮助用户实现的。
例如,一个Android的APP 可能会有多个的 “string.xml” 文件 来处理不同的语言。 如果你的设备是默认的设置为英语, 那么这个时候就会为你的设备动态的产生一个排除其他语言的APK的文件
如下图所示。
这个功能对用户来说是比较方便的,但是针对开发者和测试人员来说,这个功能就会比较头痛了。因为首先是不可能像安装APK文件那样直接安装我们的.aab 文件的, 你需要先上传到Google Play上面然后在不同的设备上下载下来再来测试,这个APK是不是能够正常的运行,是不是能够很好的是被准确的转换。
转换 Android App Bundle (.aab)到 APKs文件
我们可以从Android Studio 或者一个你喜欢的IDE生成我们的Android App Bundle 文件,你需要首先测试生成的apks 文件是不是能够成功的适配到本地的手机上。 最快速的方法就是把.aab文件转换成apk 文件然后我们用传统的方法来安装它。
其实说白了.aab 文件就是几个APK打包在一起的东西,你可以提取出那个主要 功能的APK文件,然后安装在设备上测试就可以了。 我们可以用一个叫做 bundletool 的工具从.aab 文件中提取出APK,这是一个开源的工具,你可以从 Github 上下载到这个工具。
java -jar bundletool.jar build-apks --bundle=nhl.aab --output=nhl.apks
把他们转换为 apks 之后,重新命名 apks为zip 文件,然后解压就行。