1. 简介
Dynamic Feature 是 Google Play 使用 Android App Bundle 高级功能实现的一套按需分发模块机制, 可以让您按条件分发或按需下载 superapp 的某些功能,在灵活扩展业务的同时,也有效地缩减了 superapp 主包大小,本文介绍了如何使用 Dynamic Feature 机制按需分发超级应用服务(SAS),以减小 SAS 对 superapp 主包大小影响。 2. 接入步骤
2.1 创建您的 SAS Dynamic Feature Module
主要步骤如下:
注意:
SAS SDK 已经做过 SplitCompat 兼容了,您只需关心您模块中自有组件即可。
2.2 在 Dynamic Feature Module 中集成 SAS
1. 参考 SDK 快速集成 在 dynamic feature module 中接入 SAS, 需要注意 SDK 相关依赖项需添加在 dynamic feature module 中。 2. 在 app module 的 build.gradle 中添加资源依赖包。
dependencies {
implementation 'com.tencent.tcmpp.android:mini_core_res:{version}' //具体版本号请参考 Android SDK 更新动态 }
说明:
mini_core_res 版本号与 mini_core一致。
mini_core 从 2.2.6版本起支持 Dynamic Feature 机制,请使用2.2.6及以上版本。
3. 为您的 dynamic feature module 创建入口组件,通过该入口组件管理您的小程序。
4. 在 app module 中访问您的入口组件,拉起您的 dynamic feature module。
注意:
请确保在安装状态更新为 SplitInstallSessionStatus.INSTALLED 之后才可访问dynamic feature module 中的代码。
2.3 测试 Dynamic Feature Module 安装
dynamic feature module 安装可通过两种方式测试:
1. 通过 Google Play 正常上传版本,走在线测试。
2.4 扩展库集成说明
在 dynamic feature module 中集成 SDK 扩展库,参考 扩展组件 SDK 即可。 注意:
如果扩展库中依赖了其他第三方库,如 Google 地图、Google 广告等,需要将这些三方库依赖添加到 app module 中,而不是 dynamic feature module 中。
扩展库请使用最新版。
2.5 SAS Dynamic Feature Demo 下载
Demo 中演示了如何通过 Dynamic Feature 方式接入 SAS,供您参考。
3. 常见问题
1. 由于 dynamic feature module 的 manifest 会被合并到 base apk 中,因此 manifest 中需要访问的资源需要在 app module 做声明。比如 dynamic feature module 中的 Activity 使用了自定义主题,那么这些主题的定义需要被提取到 app module 中去,否则会有类似编译错误:
2. 由于 dynamic feature module 的 manifest 会被合并到 base apk 中,因此如果 dynamic feature module 中使用了 ContentProvider,需要将 ContentProvider 代码集成到 app module 中去,否则会有类似运行错误:
3. 如果 dynamic feature module 中使用到的第三方库中, Activity 组件未做 SplitCompat适配,那么需要将这些第三方库集成到 app module 中,否则可能会有类似运行错误: