Android App Bundle 使用方法

4,750 阅读4分钟

简介

Android App Bundle 是一种发布格式,其中包含您应用的所有经过编译的代码和资源,它会将 APK 生成及签名交由 Google Play 来完成。 Google Play 会使用您的 app bundle 针对每种设备配置生成并提供经过优化的 APK,因此只会下载特定设备所需的代码和资源来运行您的应用。您不必再构建、签署和管理多个 APK 来优化对不同设备的支持,而用户也可以获得更小且更优化的下载文件包。 更详细的说明请查看 developer.android.com/guide/app-b…

使用

1.构建 app bundle

由于app bundle 是Google 开发的一种发布格式, 所以Google 已经把app bundle的构建方法集成进了 Android studio(Android sudio 3.2版本或更高版本) 里,使用Android studio进行构建 app bundle 只需要以下简单的几步操作就可以完成了。
1.点击 Build

2.选择 Generate Signed Bundle/APK

3.选中 Android App Bundle 选项后 点击 NEXT

4.选中签名文件并输入对应的密码信息后 点击 NEXT

(关于图中的 Export encrypted key 选择项的功能请查看 developer.android.com/studio/publ…

5.然后选择需要构建的版本后 点击 FINISH 后 Android studio 就开始构建 app bunle了

到这我们就完成了Android App Bundle的构建了。

注意: 这样创建 Android App Bundle 包 混淆的映射文件也会在这里面。如下图 20210319173101.png 该图是解压 Android App Bundle 包查看到的混淆映射文件

去除Android App Bundle 包混淆映射文件

由前文所知 Android App Bundle 包是包含 混淆映射文件的,但是我们有时候不想把 混淆映射文件给出去,哪这么办呢,通过查询资料我们可以使用AabResGuard来去除混淆映射文件。

1.首先我们需要 AabResGuard 工具,该工具可以在 Github上下载。

2.有了 AabResGuard 后我们就可以使用该工具从 Android App Bundle 过滤掉 混淆映射文件,并重新生成 Android App Bundle 包。

3.因为过滤肯定需要有规则,所以我们先创建一个"config.xml"配置文件,在里面配置过滤规则如下:

<?xml version="1.0" encoding="UTF-8"?>
<resproguard>
    <filter isactive="true">
        <rule value="BUNDLE-METADATA/**/proguard.map" />
    </filter>
</resproguard>

isactive:是否启用

4.通过命令去过滤掉 混淆映射文件,并重新创建 Android App Bundle,使用如下命令:

java -jar E:\AabResGuard-0.1.8.jar  filter-file --bundle=E:\app-flavorRlease-release.aab          --output=filtered.aab  --config=E:\config.xml  --storeFile=E:\aaaa.jks  --storePassword=123456  --keyAlias=aaaa  --keyPassword=123456


java -jar (AabResGuard-0.1.8.jar 工具路径) filter-file --bundle=(Android App Bundle .aab文件路径) --output=(输出的过滤后的.aab文件路径和文件名)  --config=(config.xml配置的xml 文件路径)  --storeFile=(应用签名路径)  --storePassword=(密码)  --keyAlias=(别名)  --keyPassword=(密码)

这样我们就去除了 Android App Bundle 包里的混淆映射文件了。

20210319173026.png

测试

上文我们完成了Android App Bundle的构建但是没有对 使用Android App Bundle 生产的 APK 进行过测试,所以还是不能很放心的把 Android App Bundle 提交到Google play 进行发布。 所以需要进行测试

下面我们讲一下如何进行本地测试。 1.首先我们需要 bundletool 工具,该工具可以在 Github 上下载。

2.有了 bundletool 后我们就可以使用该工具从 Android App Bundle 生成 APK了,使用如下命令 可以生成APK:

java -jar E:\bundletool-all-1.4.0.jar build-apks --bundle=app-flavor1-release.aab --output=app-flavor1-release.apks --ks=aaaa.jks --ks-pass=pass:123456 --ks-key-alias=aaaa --key-pass=pass:123456


java -jar (bundletool工具路径) build-apks --bundle=(Android App Bundle .aab文件路径) --output=(生成的apks的路径和命名) --ks=(应用签名路径) --ks-pass=pass:(密码) --ks-key-alias=(别名) --key-pass=pass:(密码)
	

上面的命名只有 --bundle--output 是必需的,应用签名的标记是可以不用设置的,当面没有设置应用签名的标记时,bundletool 会尝试使用调试密钥为 APK 签名。 这样就生成了 APK 集合了,为什么是 APK集合呢,因为Android App Bundle格式照成的,具体原因请查看链接 developer.android.com/guide/app-b…

3.通过 bundletool 安装APK到手机上,使用如下命令进行安装:

java -jar E:\bundletool-all-1.4.0.jar install-apks --apks=app-flavor1-release.apks



java -jar (bundletool工具路径) install-apks --apks=(apks文件的路径)

这样就完成了从 Android App Bundle 生成APK 并安装到手机上。

延申

这里只是简单的使用了 bundletool 工具 更多设置可以去下面链接查看 developer.android.com/studio/comm…

这里只详细讲解了本地测试的方法,其实还有其他的测试方法,想要了解可以去下面链接查看 developer.android.com/guide/app-b…

这里只是简单的使用了AabResGuard 工具的过滤功能,这个工具还有其他的一些功能,可以去下面链接查看 github.com/bytedance/A…