android 的aab包

打印 上一主题 下一主题

主题 1394|帖子 1394|积分 4197

什么是 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下令执行
 

什么是.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
下令:
  1. java -jar bundletool build-apks --bundle=aab文件路径 --output=需要写入的apks路径
  2. --output这个记得一定是apks结尾的
复制代码
但是这个是没有署名的apk,是不可以安装的
假如要将这些 APK 部署到装备,您还需要添加应用的署名信息,如以下下令所示。假如您未指定署名信息,bundletool 会尝试使用调试密钥为 APK 署名。
  1. bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
  2. --ks=/MyApp/keystore.jks
  3. --ks-pass=file:/MyApp/keystore.pwd
  4. --ks-key-alias=MyKeyAlias
  5. --key-pass=file:/MyApp/key.pwd
  6. 一定记得 --和他签名的字符有两个空格,我就是直接复制过去,报错的
  7. 如果这个签名的信息配置错误,那么就调用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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连全瓷种植牙齿制作中心

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表