android 的aab包
什么是 AAB (Android App Bundle)?AAB (Android App Bundle) 是 Google 推出的新一代 Android 应用发布格式,用于代替传统的 APK 格式。AAB 的全称是 Android App Bundle,扩展名为 .aab,它并不是直接可以安装的文件,而是用于上传到 Google Play 的发布包。
1. AAB 的核心特性
动态交付 (Dynamic Delivery):
[*]Google Play 会根据用户装备特性(如屏幕密度、CPU 架构、语言等),从 .aab 文件中动态生成得当该装备的 APK 文件(包括 Base APK 和 Split APKs)。
[*]用户只会下载装备所需的资源和代码,减小下载包的大小。
[*]模块化支持:
[*]支持将应用分别为多个模块(Dynamic Feature Modules),部分功能可以按需下载,而不是在安装时全部下载。
[*] 更小的下载包:
[*]AAB 格式将应用分成多个部分,克制了用户下载无关的资源或代码。例如,不会下载与用户装备无关的语言包、屏幕密度资源等。
3. AAB 的工作原理
当你上传 .aab 文件到 Google Play 后,Google Play 会对其进行处理:
[*] 分拆资源和代码:
[*]Google Play 会将 .aab 文件拆分为 Base APK 和多个 Split APK。
[*]Base APK 包罗应用的核心逻辑和必要的资源。
[*]Split APK 包罗装备特定的资源(如语言、屏幕密度、CPU 架构)。
[*] 动态生成适配的 APK:
[*]当用户从 Google Play 下载应用时,Google Play 会根据用户装备特性动态生成 APK,只包罗必要的部分。
[*] 按需加载模块:
[*]假如应用包罗动态功能模块,可以在运行时按需下载,而不是安装时一并下载。
以是安装的时候做少安装两个apk包,一个是Base APK 尚有一个是Split APK,最少两个,由于大概会多个Base APK包。
那假如我们自己想测试aab包该怎么测试
从 app bundle 生成一组 APK
构建 Android App Bundle 文件后,请测试 Google Play 使用该 Android App Bundle 文件生成 APK 的情形,以及这些 APK 部署到装备上之后的表现。
您可以通过以下两种方式测试 app bundle:
[*]在本地使用 bundletool 下令行工具。
[*]使用测试轨道通过 Google Play 将您的 app bundle 上传到 Play 管理中央。
本部分将先容怎样使用 bundletool 在本地测试 app bundle。
当 bundletool 从 app bundle 生成 APK 后,它会将生成的 APK 纳入到一个名为“APK set archive”的容器中,该容器以 .apks 作为文件扩展名。如需从 app bundle 为应用支持的全部装备配置生成一组 APK,请使用 bundletool build-apks 下令,如下所示:
我们也需要将aab包转成apk才气使用。bundletool 工具,这是google为我们提供的,
https://developer.android.com/tools/bundletool?hl=zh-cn
起首得下载这个工具,这个下载所在是官方提供的
https://github.com/google/bundletool/releases
下载完后发现是一个.jar末了的,全部得用java -jar下令执行
https://i-blog.csdnimg.cn/direct/45ef64aa4de745dd80a0c8b0eb3d18fe.png
什么是.jar文件
.jar 步伐本质上是用 Java 编写的,以是需要 Java 虚拟机(JVM)来执行它。
[*] 运行工具:
[*]许多开发工具和 CLI 工具(如 bundletool、gradle)都是以 .jar 文件形式分发。
java -jar 下令的寄义
java -jar 是用来运行 .jar 文件的下令,其中:
[*] java
[*]是 Java 虚拟机(JVM)的下令行工具,用来启动和运行 Java 步伐。
[*]通常是 JRE(Java Runtime Environment)或 JDK(Java Development Kit)的一部分。
[*] -jar
[*]是 java 下令的一个选项,表现运行一个 JAR 包。
[*]它告诉 JVM,目标文件是一个可执行的 .jar 文件,并让 JVM按照 JAR 文件的 MANIFEST.MF 文件中的 Main-Class 配置来启动步伐。
以是我们运行这个步伐
java -jar bundletool的path
结下来我们使用bundletool将aab转变成apk
下令:
java -jar bundletool build-apks --bundle=aab文件路径 --output=需要写入的apks路径
--output这个记得一定是apks结尾的 但是这个是没有署名的apk,是不可以安装的
假如要将这些 APK 部署到装备,您还需要添加应用的署名信息,如以下下令所示。假如您未指定署名信息,bundletool 会尝试使用调试密钥为 APK 署名。
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=/MyApp/keystore.jks
--ks-pass=file:/MyApp/keystore.pwd
--ks-key-alias=MyKeyAlias
--key-pass=file:/MyApp/key.pwd
一定记得 --和他签名的字符有两个空格,我就是直接复制过去,报错的
如果这个签名的信息配置错误,那么就调用debug.jks去打包
这里实在我有个标题,为什么我打包aab的使用了署名,再打包这apk的时候为什么又要重新署名,googlePlay没有我的署名是怎样实现的呢?
[*] AAB 署名:
[*]当你生成 .aab 文件时,AAB 本质上是一个归档文件,它包罗了应用的全部模块和资源,但并未直接构建具体的 APK 文件。
[*]打包 .aab 时,确实需要用署名(如 keystore)对 AAB 文件本身进行署名。这是为了验证 .aab 的完整性和泉源,防止被篡改。
[*] 生成 APK 时:
[*]从 AAB 到 APK 是一个重新构建过程。bundletool 会根据装备配置(如屏幕密度、语言、CPU 架构等)从 .aab 文件中提取资源,动态生成针对性的 APK。
[*]由于这是一个新的构建过程,生成的 APK 文件必须重新进行署名,确保它们的完整性和泉源可信。
2. Google Play 是怎样拿到你的署名用于最终署名 APK 的?
2. Google Play 是怎样拿到你的署名用于最终署名 APK 的?
Google Play 应用署名的机制
Google Play 在分发应用时,会执行 Google Play 应用署名(Google Play App Signing)。具体过程如下:
[*] 上传 AAB 到 Google Play:
[*]当你上传 .aab 文件到 Google Play,Google Play 会验证 .aab 文件的署名,确保是由开发者上传且未被篡改。
[*] Google Play 持有的署名密钥:
[*]Google Play 要求开发者在启用 Google Play 应用署名时,将应用的署名密钥交由 Google Play 保管。
[*]假如是新应用,Google Play 会生成一个新的署名密钥,专门用于分发你的应用。
[*]假如是旧应用(署名密钥已存在),开发者需要将原有的署名密钥上传给 Google Play。
[*] Google Play 用自己的署名密钥重新署名:
[*]Google Play 接收 .aab 文件后,会提取资源并生成针对性 APK 文件。
[*]生成的 APK 文件会使用 Google Play 保管的署名密钥重新署名。
[*] 用户装备校验署名:
[*]用户下载的 APK 文件会通过 Google Play 署名的密钥校验其完整性和泉源。
3. 为什么 Google Play 不直接使用上传 AAB 的署名密钥?
重要原因有以下几点:
[*] 进步安全性:
[*]开发者的署名密钥保存在 Google Play 的安全硬件模块(HSM)中,比开发者本地存储更安全。
[*]纵然开发者的署名密钥泄露,Google Play 的分发不会受影响,由于它用的是自己的署名密钥。
[*] 灵活性(署名密钥更新):
[*]Google Play 署名支持署名密钥轮换。比如,假如你的密钥泄露,你可以通过 Google Play 请求生成新的密钥。
[*] 同等性:
[*]Google Play 可以确保全部从它分发的 APK 都有统一的署名,克制由于开发者错误操纵导致 APK 文件不同等。
. Google Play 怎样校验上传的 AAB 文件
当你将 .aab 文件上传到 Google Play,Google Play 会进行以下署名校验过程:
第一步:检查开发者的署名密钥
[*]当你首次在 Google Play 控制台发布应用时:
[*]假如启用了 Google Play 应用署名:你需要上传你的署名密钥(.jks 文件中的密钥)到 Google Play,或者 Google Play 会帮助你生成并保管一个新的署名密钥。
[*]这个署名密钥成为 Google Play 用于验证你上传内容的依据。
第二步:提取 AAB 的署名
[*]Google Play 提取 .aab 文件中的署名信息。
[*].aab 文件的署名是由 jarsigner 或类似工具在构建时生成的,它会在 .aab 的 META-INF/ 目次下保存署名。
第三步:对比署名
[*]Google Play 将提取到的 .aab 署名信息,与 Google Play 控制台中保存的开发者署名密钥进行对比。
[*]假如署名匹配:Google Play 确认 .aab 文件是由你这个开发者上传的,接着进行后续处理(例如分解 .aab 并生成 .apk)。
[*]假如署名不匹配:Google Play 会拒绝你的 .aab,并提示署名无效的错误。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]