Android App Bundles相关概念及开发流程详解

Android App Bundle是一种新的发布机制,可减少应用体积高达50%,支持动态交付,提供按需加载功能。它需要Android Studio 3.2及以上版本配合Dynamic Feature Module进行开发。使用时,基础APK包含公共代码和资源,而Dynamic Feature Module按需加载。通过Google Play的split APKs和Dynamic Delivery服务,用户仅下载所需的部分。尽管需要额外的集成工作,但可显著优化安装速度和存储占用。
摘要由CSDN通过智能技术生成

主要参考文章如下。

https://developer.android.com/guide/app-bundle/
https://developer.android.com/platform/technology/app-bundle/
什么是Android App Bundle
Android App Bundle是一种新的Android App开发,编译和发布机制,它也可以用来表示这种机制生成文件的格式。在文章https://developer.android.com/guide/app-bundle/中并没有明确的区分这两者,它有时表示这种机制,有时表示文件格式。此外,它的写法也很随意,有时用首字母大写的形式Android App Bundle,有时用全小写的android app bundle,有时又把Android或android省掉,变成App Bundle和app bundle,bundle和bundles的单复数使用也很随意。

bundle是一捆,一束的意思,正如这个词的字面意思,Android App Bundle会将整个App编译成一个bundle,在这个bundle里包含了若干个子的模块,每个模块都可以拆分成一个单独的apk。这一点会在后面介绍。

Android App Bundle和Android 9
有人可能认为Android App Bundle和Android 9是捆绑在一起的,但其实并不是,它们两除了都是今年发布的之外并无其他关系。

顺便吐槽下Android Pie的版本号,所有官方文档中都将Android Pie的版本号称为Android 9,而不是Android 9.0,但在这之前的其他版本一直都是有.0的小尾巴的。然后在Android Studio中很多地方选择版本号时,Android Pie的版本号又变成了9.0。

Android App Bundle和Android Studio 3.2
Android Studio 3.2中增加了Android App Bundle的支持,包括在Build中增加了Build Bundles和Generate Signed Bundle的选项,在new module时增加了Dynamic Feature Module的模板等,这些在以前版本中是没有的。所以如果要方便的使用Android App Bundle,需要使用Android Studio 3.2及以上版本。

在Android Studio中使用Android App Bundle来开发
如前所述,Android App Bundle是一种新的Android App开发,编译和发布机制。在Android App Bundle出现之前,开发者开发一个App一般都是在Android Studio中创建一个Phone Module,把App的框架和主要功能的代码写到Phone Module中,创建0到多个Library Module,把一些相对独立的子功能代码写到Library Module,然后将整个工程编译成一个apk文件。apk文件中包含了工程中的全部代码和资源,无论是Phone Module还是Library Module都被编译到了apk文件中。

Android App Bundle在原先的Phone Module和Library Module基础上增加了一个Dynamic Feature Module,可以在开发时创建0到多个Dynamic Feature Module,正如这三个英文单词所表示的,每个Dynamic Feature Module表示一个动态的功能模块,关于这个模块的用途需要结合后面的split APKs和Dynamic Delivery来理解。这里只是介绍它的创建过程。

Dynamic Feature Module的创建
在Android Studio 3.2中,选择File - New - New Module…,打开New Module窗口,选择第三个Dynamic Feature Module,然后选择一个Base application module,输入Module name和Package name,选择Mininum API Level即可创建一个Dynamic Feature Module。Module name,Package name和Mininum API Level的含义和创建其他Module是一样的,这里多出来一个Base application module,它表示这个要创建的Dynamic Feature Module所依附的Base module,它必须是一个application module即在build.gradle中第一行是apply plugin: 'com.android.application’的module,不能是apply plugin: ‘com.android.library’。这一般就是工程的主module。Base module和Dynamic Feature Module的关系同样要到后文介绍split APKs和Dynamic Delivery的时候才能够理解。


创建好后的Dynamic Feature Module后,会在base module的build.gradle中增加android.dynamicFeatures配置,表示依赖此module的所有Dynamic Feature Modules。

android {

// Specifies dynamic feature modules that have a dependency on
// this base module.
dynamicFeatures = [":my_dynamic_feature1", “:my_dynamic_feature2”]
}

在创建的Dynamic Feature Module的build.gradle中,第一行不再是apply plugin: ‘com.android.application’,也不是apply plugin: ‘com.android.library’,而是apply plugin: ‘com.android.dynamic-feature’。同时,在创建的Dynamic Feature Module的build.gradle中还会自动添加对base module的依赖。

dependencies {

// Declares a dependency on the base module, ‘:app’.
implementation project(’:app’)
}

上述过程都是在Android Studio中创建Dynamic Feature Module时自动完成的,无需手动添加。不过如果要修改一个已有的Dynamic Feature Module的名字,并不会自动修改base module中dynamicFeatures配置中的名字,需要手动修改一下,这可能是现阶段Android Studio的一个bug,应该不久就会被修复。

使用Android App Bundle方式来编译
在Android Studio 3.2中,选择Build - Build Bundle(s) / APK(s) - Build Bundle(s)即可使用Android App Bundle方式来编译。如果要生成带签名的Bundle,则选择Build - Generate Signed Bundle /APK…,在弹出的对话框中选中Android App Bundle即可。

使用Android App B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值