幽灵学院

Android App Bundles浅析

2018-12-06 22:21 来源:网络整理 编辑:幽灵学院  人气:   评论一下

Android App Bundles浅析

简介

在今年的Google I/O大会上,Google向 Android 引入了新 App 动态化框架(即Android App Bundle,缩写为AAB),Google给出的定义是:An Android App Bundle is a new upload format that includes all your app’s compiled code and resources, but defers APK generation and signing to Google Play.

Android App Bundles浅析

与Instant App不同,AAB是借助Split Apk完成动态加载,使用AAB动态下发方式,可以大幅度减少应用体积。现在只须在 Android Studio 中构建一个应用束 (app bundle),就可以将应用所需的全部内容 (适用于所有设备) 都涵盖在内:所有语言、所有设备屏幕大小、所有硬件架构。

原理

Android App Bundles 是Google定义的一种全新的app发布、更新模式。能够大幅度的减少用户下载的apk包的大小,因为这是一种按取所需的安装方式。

结合Google Play Dynamic Delivery (动态交付) , 实现动态功能。

Android App Bundle 支持模块化,通过Dynamic Delivery with split APKs,将一个apk拆分成多个apk,按需加载(包括加载C/C++ libraries),这样开发者可以随时按需交付功能,而不是仅限在安装过程中。

Base Apk

首次安装的apk,公共代码和资源,所以其他的模块都基于Base Apk

Configuration APKs

native libraries 和适配当前手机屏幕分辨率的资源

Dynamic feature APKs

不需要在首次安装就加载的模块

Android App Bundles浅析

Android App Bundles

AAB并不是一个插件化框架,它利用的是Android Framework提供的split apks技术来完成的,而所有安装split apk工作均是通过IPC交由google play完成。

首先我们需要在Android studio 中构建(Build->Build Bundle(s)/APK(s)->Build Bundle(s))一个app bundle(AS版本3.2以上),这时在主工程的build目录下生成一个bundle.aab文件,这个bundle.aab文件包含上述所说的Base Apk 、Configuration APKs、Dynamic feature APKs的所有代码、资源文件和so,同时还配置有BundleConfig.pb这一文件,该配置文件是google play用于拆分apk,拆分出来的apks就如上图所示。如果我们需要在google play上支持动态发布,只需要上传aab文件即可,后续工作交给google play完成。

Android App Bundles浅析

可以看到通过bundle.aab解压出来的文件中的base和dynamic_feature还有用于google play拆分apk的配置文件BundleConfig.pb。

Android App Bundles浅析

在我们的工程中有的模块可能是不需要在首次安装就加载的模块我们可以放在Dynamic feature Module中。

Android App Bundles浅析

需要注意这两个勾选条件:

Enable on-demand: 是否支持按需下载模式。如果不支持,那么该feature则在安装app时被安装。

Fusing: 如果app运行在Android 5.0(不包括5.0)以下,勾选Fusing则表示该feature会被一起打包至完整apk中。

[提醒] 除特别声明外,该内容由( )发布,转载请保留文章出处!
  •  我顶 
  • 点击
  • 收藏