尊敬的Android AAB用户,您好!(尊敬的各位领导 演讲开场词)(尊敬的尊怎么写)

访客 134 0

文章目录

  • 前言
  • 一、aab是什么?
  • 二、aab和apk的区别
    • 1.aab和apk的文件格式
    • 2.Split APKs
    • 3.Bundletool的使用

  • 总结


一、aab是什么?

Android App Bundle(简称aab)是Google于2018年首次推出的一种动态化的打包方式。它的主要特点是开发者以aab格式将应用上传到GP,而GP可以根据不同用户的需求按需下发Features或者Resources。

  • Play Feature Delivery(PFD):借助aab实现Feature的按需动态加载,就类似于国内现在流行的插件化技术。
  • Play Asset Delivery (PAD):借助aab实现一些素材资源的按需下载,这就比较适合游戏类的App了,无需为了适配所有的机型而保留所有的游戏素材。但是对于常规的App来说,也是可以一样做到按需下发的,例如可以无需同事存在hdpi、xhdpi 等多套图片,这样也可以减小应用包的体积大小。

二、aab和apk的区别

1.aab和apk的文件格式

首先,我们来看两张图,探索一下aab和apk文件格式的具体变化。第一张图展示了aab文件,而第二张图则是apk文件。

尊敬的Android AAB用户,您好!(尊敬的各位领导 演讲开场词)(尊敬的尊怎么写)-第1张图片-谷歌商店上架尊敬的Android AAB用户,您好!(尊敬的各位领导 演讲开场词)(尊敬的尊怎么写)-第2张图片-谷歌商店上架
至于apk的文件格式我就不必多说了,相信大家做Android开发的应该都知道,现在说说aab的文件格式,整理了一个表格:

文件具体描述assets目录用于放置APP所需的固定文件,且该文件被打包到APK中时,不会被编码到二进制文件lib目录主要放so文件,上传aab时,GP会检查这些目录并仅仅打包满足目标设备所需的最小文件dex目录编程的时候是java文件,但是Android并不能直接运行java文件,所以在生成apk或者aab的时候会先把java文件转换成class文件,最后在转换成可运行在Android上面的dex文件res目录主要资源文件,icon、图片及布局等文件resources.pb类似于 resource.arsc 文件,是一个资源索引表,其中描述了应用程序内部存在的资源和目标的细节,可用于 GP 针对不同设备配置 APKres目录主要资源文件,icon、图片及布局等文件manifest目录主要放置Android的清单文件assets.pb这个文件有点类似于应用程序的assets资源表,主要是GP针对不同的设备配置Apknative.pb相当于native库的资源表,主要还是用于 GP 针对不同设备配置 APK

2.Split APKs

Split APKs 机制是 Android App Bundle(AAB)实现动态下发的基础。它允许将一个庞大的 APK 按照不同维度拆分成独立的 APK。当用户在 Google Play 下载应用时,Android Framework 通过 IPC 与 Google Play 进行通信,为当前设备匹配并下载最小构成的 APK。需要注意的是,这个机制只在 Android 5.0 及以上版本的设备上有效。对于 Android 5.0以下版本的设备,AAB会根据Splits 的矩阵生成多个 Standalone 的 Apk,以适配不同型号和版本的设备。

在Android设备上,无法直接安装aab文件的应用。因此,在这里我们需要将aab文件转换为apks格式,然后才能顺利地安装到设备上。为了实现这一目标,我们将介绍官方提供的一个工具——Bundletool。

3.Bundletool的使用

介绍Bundletool之前,我们首先需要知道aab是如何生成的,这里可以直接build个debug的aab包
尊敬的Android AAB用户,您好!(尊敬的各位领导 演讲开场词)(尊敬的尊怎么写)-第3张图片-谷歌商店上架
生成的路径如下:
尊敬的Android AAB用户,您好!(尊敬的各位领导 演讲开场词)(尊敬的尊怎么写)-第4张图片-谷歌商店上架
这个aab包是不带签名的,这里也可以直接生成带签名aab包
尊敬的Android AAB用户,您好!(尊敬的各位领导 演讲开场词)(尊敬的尊怎么写)-第5张图片-谷歌商店上架
尊敬的Android AAB用户,您好!(尊敬的各位领导 演讲开场词)(尊敬的尊怎么写)-第6张图片-谷歌商店上架

尊敬的Android AAB用户,您好!(尊敬的各位领导 演讲开场词)(尊敬的尊怎么写)-第7张图片-谷歌商店上架
框框的地方可以勾选,到时候会生成一个 .pepk文件,这个文件到时候上传到GP会用到,然后next就可以生成一个带签名的aab包了,那aab包已经有了,怎么转成Apks呢,这里就要使用到Bundletool了:

首先,您需要下载一个名为bundletool的工具。您可以在以下地址找到下载链接。当使用bundletool将app bundle转换为APK时,它会将生成的APK文件打包成一个名为“APK set archive”的容器,并以.apks作为文件扩展名。因此,您只需使用适当的命令来运行bundletool即可生成Apks文件集合。

使用以下命令行将 Android Studio 构建的 App Bundle 转换为 APK 文件:

```
java -jar bundletool-all-1.7.0.jar build-apks --bundle=path/to/app-debug.aab --output=app.apks --ks=hw.jks --ks-pass=pass:123456 --ks-key-alias=123456 --key-pass=pass:123456
```

其中,`--bundle=path/to/app-debug.aab` 指定了要转换的 App Bundle 文件路径,`--output=app.apks` 指定了输出的 APK 文件名为 `app.apks`, `--ks=hw.jks` 指定了密钥库文件路径为 `hw.jks`, `--kspass = pass: 123456` 设置密钥库密码为 `123456`,  `-- ks-key-alias = 123456'指定密钥别名为 ' 123456' ,而 '--key-pass = pass:12345'设置密钥密码为 ' 12,3456'. 

使用命令行进行APK安装:

java -jar bundletool-all-1.7.0.jar install-apks --apks=app.apks

总结

总得来说,Android App Bundle 是一种发布格式,其中包含您应用的所有经过编译的代码和资源,它会将 APK 生成及签名交由 Google Play 来完成,但是这里有个值得一提的地方,aab的文件大小一般会比apk小20%左右,但是有时候生成的Apks文件大小却会比原来的大好几十倍,这时因为build.gradle文件中minSdkVersion 小于21的原因,BundleTool就会生成很多歌兼容Android 5.0以下设备的Apk,如下图所示
尊敬的Android AAB用户,您好!(尊敬的各位领导 演讲开场词)(尊敬的尊怎么写)-第8张图片-谷歌商店上架
尊敬的Android AAB用户,您好!(尊敬的各位领导 演讲开场词)(尊敬的尊怎么写)-第9张图片-谷歌商店上架

如果不想生成过大的apks文件,只需要把minSdkVersion改成大于等于21就行了;

参考文章链接

标签: 谷歌商店上架 尊敬 文件

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~