一、AAB格式简介
Android App Bundle(AAB) 是一种新的应用程序打包格式。通过使用 AAB,开发人员可以在应用发布到 Google Play 商店时,将应用程序的大小减小到最小限度,同时仍然能够为不同的设备提供定制内容。
AAB 格式使开发者能够使用动态功能来针对不同的用户提供更好的体验。例如,AAB 中可以包含多个APK,每个APK 针对不同的设备组合优化,而不是单个 APK 一大小适合所有设备。
二、使用AAB格式的好处
使用 AAB 格式的主要好处之一是,应用的下载大小可以更小。这意味着更快的下载和更少的设备存储空间。此外,通过使用动态功能可以提供更好的用户体验。例如,可以为设备分配不同的资源,例如特定于设备屏幕大小的图形。对于开发人员而言,构建和发布 AAB 应用程序与发布传统 APK 应用程序几乎相同。唯一的区别是,AAB 格式在发布时会生成多个 APK。
通过使用 AAB 格式,Google Play 商店可以自动构建将仅包含用于设备的资源的优化 APK。这意味着应用程序的分发时间更短,下载文件更小,运行速度更快,并且存储占用更少,因为仅下载对应于用户设备配置的应用程序。另外,AAB 格式有助于解决 Android 应用尺寸过大时遇到的问题,因为其中包含的特定于设备并最终是对用户可见并下载的 Google Play 生成的 APK 尺寸大大降低。
三、生成AAB应用程序包
要生成 AAB 应用程序语言和平台无关。在用 Android Studio 构建 AAB 应用程序之前,请确保已安装最新版本的 Android Studio。
(一)在Android Studio中生成AAB应用程序包:
1、打开 Android Studio 的项目
2、点击“生成”,然后从下拉列表中选择“生成应用程序包(APK或AAB)”
3、选择“Android App Bundle”选项,然后点击“下一步”
4、选择要为其生成应用程序包的模块,然后单击“完成”。
5、最后,Android Studio 会生成一个 .aab 文件,可以将其上传到 Google Play 商店。
(二)使用gradlew命令生成AAB应用程序包:
1、打开终端并导航到项目目录执行 gradlew 命令
2、运行命令 gradlew project:bundleDebug(或其他 variances),其中 project 是项目名称。
3、Gradle 将生成一个 .aab 文件,可以将其上传到 Google Play 商店。
四、DDL和ProGuard规则
使用 AAB 格式应用程序时,请确保已经包含以下 ProGuard 规则,这些规则有助于避免某些代码被删除:
# This will avoid removing Log.* calls -keep class com.orhanobut.logger.** { *; } # This is for gson custom objects -keepclassmembers class * { @com.google.gson.annotations.SerializedName; } # This will avoid removing ButterKnife definitions # for the most common of bindings -keep class butterknife.** { *; } -keepclasseswithmembernames class * { @butterknife.* ; } # This will avoid removing Dagger related code -dontwarn javax.annotation.** -dontwarn javax.inject.** -keep class dagger.** { *; } -keep interface dagger.** { *; } -keepclassmembers class * { @javax.inject.* *; @dagger.* *; }
如果使用了 ndk-build,请将此行添加到 build.gradle 文件中:
buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' ndk { //设置支持的ABI,此处为arm abiFilters 'armeabi-v7a' } } }
五、App Signing
使用了 AAB 格式时,Google Play 商店自动执行应用程序签名流程,其中会产生与应用程序标识符相关联的密钥存储库私钥。此密钥存储库公钥会与您的应用程序一起绑定到 Google Play 商店。
如果需要发布到 Play 商店之外的市场,则需要签名 AAB 输出文件。
六、AAB格式的变通方法
有些情况下,您可能无法使用 AAB 格式。以下是 AAB 格式的两个变通方法:
(一)使用传统 APK:
如果设备不支持下载和安装 AAB 格式或您需要将应用程序分发到 Google Play 商店以外的第三方应用市场,则可以使用传统 APK。传统 APK 可以使用与一般的 APK 相同的方式进行编译和分发。
(二)使用分离的资源:
如果您不需要使用 AAB 的所有优势,但希望分离应用程序的资源,以便每个设备仅下载所需的内容,则可以使用 Android 中的 ResConfig 实用程序。
七、总结
本文介绍了 Android 应用程序打包格式 AAB 的最佳实践。使用 AAB 格式可以更好地为不同的设备提供优化,减小应用程序的大小,提供更好的用户体验,提高应用分发效率,对于移动开发者而言是非常重要的一项技能。