IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android aab的打包、调试、安装 -> 正文阅读

[移动开发]Android aab的打包、调试、安装

一、前言

Google Play在今年3月发出了一个 Google Play新政策通知,即在今年8月后新应用必须以 API 级别 30 (Android 11) 为目标平台,并使用 Android App Bundle(aab)发布格式,对于现有应用是不受强制影响的。
在这里插入图片描述
如果我没记错的话,早在18年Google就已经提出了aab这个东西,那么对于这次提到的Android APP Bundle直接带来的好处也是清晰明了的,我直接给撸过来了:

Android App Bundle:
  1. Google Play 使用 app bundle 生成和优化 APK,以便针对不同的设备配置和语言进行分发。这使您的应用程序更小(平均比通用 APK 小 15%)且下载速度更快,从而导致更多安装和更少卸载。
Play App Signing:
  1. Play App Signing 是应用程序包所必需的,它通过使用 Google 的安全基础架构来保护您的应用签名密钥免遭丢失,并提供升级到新的、加密强度更高的应用签名密钥的选项。
Play Feature Delivery:
  1. 超过 10% 的顶级应用使用 app bundle,Play Feature Delivery 使您能够自定义将哪些功能模块交付到哪个设备以及何时交付,以及安装时、有条件和按需交付模式。
Play Assets交付:
  1. 通过动态交付大型资产,同时降低交付成本,减少用户等待时间。使用 Play Asset Delivery 的游戏可以使用纹理压缩格式定位,因此您的用户只会获得适合其设备的资产,而不会浪费空间或带宽。
未来计划:
  1. 很快,Play App Signing 将开始推出APK Signature Scheme v4以选择应用程序,使他们可以选择访问新设备上即将推出的性能功能。收看7 月 12 日举行的Google for Games 开发者峰会,了解更多信息。

Google官方说平均减少包体积15%,对于使用很多so库的应用这个数字还是太过保守,据我实际测试下来so库占用apk总体积的53.8%情况下,aab格式比apk格式的分发下载直接减小了25%,别的不说就光从这一点上面就已经很有吸引力了。


二、.aab的本质

.aab实际上和.apk一样是个压缩包,你可以直接改后缀为.zip然后解压,解压后有如下目录:
在这里插入图片描述
其中base里是一些主要资源,.pb的文件是一些描述,如下:
在这里插入图片描述

aab文件将语言、分辨率、CPU架构、图片尺寸等拆分成N个.apk,例如下,可以看到有87个apk文件

在这里插入图片描述

再根据设备软硬件情况组合成一个size小很多的apk进行安装。比如在google play上,aab会被打成N个apk再组合分发到对应的设备上。
具体描述,推荐看下这位老哥的相关博客

三、.aab如何安装到手机上

.aab不能直接安装到设备上,需要通过工具命令把它转成.apks,再使用工具命令组合多个apk部署到设备(这个过程是工具内部根据adb连接的设备自动组合的)。操作.aab格式的文件,需要下载官方工具bundletool

  1. 转aab为apks命令: build-apks
// --bundle为输入文件的全路径(当前目录直接使用文件名) --output为输出文件全路径
bundletool build-apks --bundle=my.aab --output=my.apks

直接使用如上命令应该是会报错找不到命令的command not found: bundletool,正确执行jar文件方式是到bundletool.jar的文件夹下或者使用全路径

java -jar bundletool-xxx.jar build-apks --bundle=my.aab --output=my.apks

以上方式仅适合在项目目录下运行,因为这个过程其实是需要签名文件和相关参数的,默认情况下会按照未二次签名的debug版本处理,下面会介绍到带参数转aab

  1. 安装命令: install-apks
java -jar bundletool-xxx.jar install-apks --apks=myapp.apks
  1. 带参数转aab为apks: build-apks
java -jar bundletool-xxx.jar build-apks --bundle=my.aab --output=my.apks --ks=/path/xxx.jks --ks-pass=pass:xxx --ks-key-alias=xxx --key-pass=pass:xxx

常规的一次.aab转.apks大概需要指定如下参数

// 请注意:以下命令因带换行格式无法直接使用
bundletool build-apks --bundle=my_app.aab --output=my_app.apks
–ks=/MyApp/keystore.jks
–ks-pass=file:/MyApp/keystore.pwd
–ks-key-alias=MyKeyAlias
–key-pass=file:/MyApp/key.pwd

–ks ????????????????????????签名文件的全路径
–ks-pass ??????????????签名文件密码,可以使用pass:xxx指定明文密码,也可以使用file:xxx指定文件密码
–ks-key-alias ???????签名别名
–key-pass ????????????签名密码,可以使用pass:xxx指定明文密码,也可以使用file:xxx指定文件密码

  1. 从现有的 APK 集中提取设备专用 APK: extract-apks
java -jar bundletool-xxx.jar extract-apks --apks=my.apks --output-dir=my.aab --device-spec=xxx.json

// 请注意:以下命令因带换行格式无法直接使用
bundletool extract-apks
–apks=/MyApp/my_existing_APK_set.apks
–output-dir=/MyApp/my_pixel2_APK_set.apks
–device-spec=/MyApp/bundletool/pixel2.json

其中json文件可以手动创建,也可以根据已连接的adb设备自动创建,这里展示一下手动创建的参数格式

{
  "supportedAbis": ["arm64-v8a", "armeabi-v7a"],
  "supportedLocales": ["en", "fr"],
  "screenDensity": 640,
  "sdkVersion": 27
}
  1. 预估打包成aab格式后下载文件的大小: get-size
java -jar bundletool-xxx.jar get-size total --apks=my.apks

更多命令的用法可查看 bundletool官方文档


四、打包发布流程

  1. 工具栏中选择进行应用签名
    在这里插入图片描述
  2. 选择Android APP Bundle --> Next在这里插入图片描述
  3. 填写签名信息 --> Next
    Export encrypted key for enrolling published apps in google play app signing,不需要的可以取消勾选
    在这里插入图片描述
  4. 选择想要的版本和文件输出路径 --> Finish
    在这里插入图片描述
    至此,整个aab打包就完成了,产出后的.aab文件可以直接上传到google play控制台的版本发布,发布后再次从play store下载到的就是新组合的apk,下载大小会有明显变化。上架play store还在使用apk的同学赶紧动起来吧!
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:18:51  更:2021-07-15 16:19:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 5:04:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码