一、App Bundle原理
App Bundle是一种用于实现动态交付的技术,它允许将应用分割成小的、可下载的组件。在安装应用程序时,只有需要的组件才会被下载和安装,这样可以降低应用程序的大小并提高下载速度。通俗地说,就是把一个巨型应用拆成多个小的模块,用户只需下载需要的模块,而非整个应用。
在实际开发中,将应用程序分割为小组件的过程是通过将应用程序包中的功能模块(例如某个库或某个功能页面)打包成单独的APK文件(即AppBundle)来完成的。每个AppBundle文件都包含了应用程序的部分功能,安装完成后仅下载其中必需的部分,达到动态下载和安装应用的目的。
App Bundle技术的实现依赖于Android Studio,只有通过Android Studio编译器才能将应用程序分割成小的组件,这个过程会生成多个与模块文件相对应的.bundle安装包。
二、App Bundle文件如何安装
安装App Bundle文件需要将.bundle文件上传至Google Play,接着由Google Play自动根据用户设备中的不同特征(例如屏幕大小、ABI等)来动态地下载所需的模块并组装成完整的应用程序。
实际安装过程如下:
- 用户打开应用程序,选择需要安装的组件(如最初运行的模块、选择语言、进行授权等)
- 应用程序从网络上下载初始模块,并安装必需动态模块
- 安装过程根据需要下载额外模块。
这个过程看起来很慢,实际上用户看到的是单独的模块下载进度,因为必需模块已经安装好了。这种方式显著地缩短了应用程序的下载和安装时间,同时也有助于降低用户的移动数据流量成本。
三、App Bundle改造
App Bundle提供了灵活的方式来对应用程序进行重新分割,以达到更有效的动态下载和安装。一些建议的做法如下:
- 对应用程序进行深入分析,确定哪些部分可以分割,并制作成APK文件。
- 使用SmallerApps工具可以帮助应用程序开发者呈现用于组装的APK文件,便于调试和测试。
- 针对不同的设备和屏幕尺寸,使用配置文件按需定制化APP Bundle文件。
四、App Bundle加固
App Bundle文件作为最小安装单元,需要特别注意安全性。一些加固相关的方法如下:
- 开发人员需要重点考虑应用程序的安全性,如开发安全配置文件、防范常见的安全攻击等。
- 使用加密算法对App Bundle文件进行保护,确保被安装前不能被分解查看其中代码、资源等敏感信息。
- 使用签名证书对App Bundle文件进行独立认证,增强安全性。
五、App Bundle安装过程
App Bundle安装的过程主要包含以下几个方面:
- 下载APK文件的过程,包含网络下载和本地解压、校验签名的过程。
- 安装APK文件的过程,包含将下载下来的文件写入设备存储中,并校验签名的过程。
- 启动APP的过程,包含解析文件资源、初始化有关程序等。
六、App Bundle加载原理
在App Bundle文件安装好之后,需要将各个小模块加载到应用程序中,加载原理如下:
首先,系统会校验Bundle文件是否包含应用程序的版本信息等基本信息,并将需要加载的资源动态解压到设备的缓存目录中,然后再根据相关信息生成运行程序。这样做的好处是可以避免将完整的应用程序加载到内存中,提升应用程序的性能。
七、App Bundle ID是什么
App Bundle ID是应用程序的唯一标识符。在Google Play发布应用程序时,需要指定包名和App Bundle ID 。在安装时,Google Play服务会根据设备上唯一的应用标识符和应用程序包名称来为应用程序匹配Bundle ID,从而快速地获取适合设备的程序安装包。
八、Bundle是什么文件
Bundle是指Android Bundle Framework下的一种实体类型,即Bundle封装了一组可以在不同Activity之间共享的数据。通过Bundle可以实现不同的Activity之间的数据传递。
除此之外,在Android Studio的App Bundle体系下,Bundle也是指存放在安装包、模块的部分数据或资源集合,这些数据或资源可以通过打包成App Bundle模块,实现动态添加、删除和升级等加载方案。
九、安卓Bundle是什么文件
在Android Studio产生的App Bundle体系下,安卓Bundle是指存放在安装包、模块下的一系列文件,包括Android Manifest和资源文件等。安卓Bundle文件是实现应用程序动态下载、安装、更新的核心代码。
10、总结
App Bundle作为一个多模块动态下载和更新框架,为应用程序的开发带来了福音。开发者们可以通过分割应用程序并针对不同的场景进行部署,大幅度减少APP的安装包大小和下载时间。在开发和维护应用程序时,加固和安全是重点。通过了解App Bundle 的基本原理、文件安装和改造,加强对安卓Bundle和Bundle的认识,以及对动态加载的原理和安卓Bundle加强的认识,可以更好地利用App Bundle技术为应用程序的优化提供支持。
11、完整代码示例
// App Bundle文件上传至Play
./gradlew bundleRelease
// 生成。apk文件
BundleTool/build/install/bundletool/bundletool.sh build-apks --bundle=[path/to/your/bundle.aab] --output=[path/to/output.apks]