前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈Android App Bundle

浅谈Android App Bundle

作者头像
艳龙
发布2021-12-16 17:40:00
1.5K0
发布2021-12-16 17:40:00
举报
文章被收录于专栏:yanlongli_艳龙

前言

项目中一个定制版本,需要上架Google Play。 我们和上架国内的应用市场一样提供了一个apk,收到了如下的提示:

Google 给出的描述中,提到通过 Android App Bundle来进行优化。 那什么是 Android App Bundle呢?

Android App Bundle 简介

Google Play 推出的新应用服务模式名叫“Dynamic Delivery”,新的服务支持上传的文件就是Android App Bundle文件(.aab文件),之后用户在下载应用时,Google Play应用服务会针对下载用户的设备配置生成并提供经过优化的 APK,因此他们只需下载运行应用所需的代码和资源,不需要下载原先apk中的所有资源文件,从而让用户获取到最轻量的apk。

  • Android App Bundle 是一种全新的上传格式,是用来上传到 Google Play 以支持 Dynamic Delivery应用服务 的一种文件类型(文件扩展名为 .aab
  • Android App Bundle其中包含应用的所有编译好的代码和资源,但 APK 生成及签名工作则交给 Google Play 来处理。

App Bundles 将一个 apk 拆分成多个 apk,我们的 apk 一般会被拆分为如下几个部分:

  • Base Apk:首次安装的apk,公共代码和资源,所以其他的模块都基于Base Apk;
  • Configuration APKs:native libraries 和适配当前手机屏幕分辨率的资源;
  • Dynamic feature APKs:不需要在首次安装就加载的模块。

.aab文件 和 apk一样也是一个zip的文件, 不一样的是apk可以直接安装到手机,而.aab文件不能直接安装,需要通过Google Play 或者 bundletool 工具 生成优化后的apk才能安装到手机。 下图中为.aab中的内容:

展开后如下:

编译 Android App Bundle 文件

编译Android App Bundle 需支持以下条件:

  • 1 Android Studio 3.2 或者更高版本

同时有两种方式可以编译Android App Bundle文件 :

  • Android Studio中可视化界面操作: Build -> Build Bundle(s)/APK(s) -> Build Bundle(s)

编译结束后.aab文件目录位置为: app -> build -> outputs -> bundle -> debug/release

使用可视化界面操作,操作更加简洁, 同时开发过程中run 的时候也可以指定使用.aab来源的apk Edit Configurations -> General标签 -> Installation Options -> APK from app bundle

  • 命令行编译 ./gradlew app:bundleDebug

使用命令行的编译方式也同样支持。 在蓝盾上自动集成构建的时候,无法使用可视化操作的方式,只能使用命令行的方式。 命令行构建更加的灵活,可以在启动构建的时候,通过参数来控制构建脚本

测试.aab文件

不论通过那种方式编译出的.aab文件,我们都会进行基本的验证。 有以下两种方式:

    1. 使用 bundletool 在本地测试 Android App Bundle
    1. 在Google Play中通过网页分享的形式

这里介绍第一种方式进行测试 1、先从github 下载 bundletool 本地命令行工具 2、将 App Bundle 生成 一组apk文件

代码语言:javascript
复制
//app bundle 为应用支持的所有设备配置生成一组 APK
java -jar bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

或使用:

//app bundle 为应用支持的所有设备配置生成一组 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

当 bundletool 根据 app bundle 生成 APK 时,它会将这些 APK 纳入到一个名为“APK set archive”的容器中,该容器以 .apks 作为文件扩展名。

3、 将apks文件安装到手机(bundletool 可以将其中适当的 APK 组合部署到已连接的设备)

代码语言:javascript
复制
bundletool install-apks --apks=/MyApp/my_app.apks

tips: 3.1: Android 5.0(API 级别 21)或更高版本,bundletool 会推送在该设备上运行您的应用所需的基础 APK、动态功能 APK 和配置 APK 3.2: Android 4.4(API 级别 20)或更低版本,bundletool 会查找兼容的多 APK 并将其部署到您的设备

其它 bundletool 的使用可参考: 官方文档介绍

参考文档: Android App Bundle 简介 bundletool使用

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/3/24 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Android App Bundle 简介
  • 编译 Android App Bundle 文件
  • 测试.aab文件
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档