Android动态交付模块:如何基于构建类型实现安装时条件包含?
实现APK/AAB构建时动态模块的条件性包含
完全可以基于构建格式(APK/AAB)实现Module A的条件性包含,核心是通过Gradle配置动态修改模块的onDemand属性来满足需求。
具体配置步骤
在Module A的build.gradle中配置
直接针对发布变体设置动态属性:android { publishing { singleVariant("release") { // 判断当前构建任务是否为AAB打包 def isBuildingBundle = gradle.startParameter.taskNames.any { it.contains("bundle") } // 动态设置:AAB构建时设为true(仅按需加载),APK构建时设为false(安装时包含) onDemand = isBuildingBundle } } }全局统一配置(可选)
如果需要在项目根目录统一管理,可在根build.gradle中添加:subprojects { if (name.equals("moduleA")) { android { publishing { singleVariant("release") { onDemand = gradle.startParameter.taskNames.any { it.contains("bundle") } } } } } }
验证方法
- 执行APK构建命令(如
./gradlew assembleRelease):Module A会被打包进基础APK,安装时自动包含。 - 执行AAB构建命令(如
./gradlew bundleRelease):Module A会被标记为按需加载的动态模块,不包含在基础安装包内。
注意事项
- 确保Android Gradle插件版本在7.0及以上,该版本开始支持灵活的动态模块属性配置。
- 测试时可通过Android Studio的
Build > Analyze APK/AAB功能,检查模块的包含状态是否符合预期。
内容的提问来源于stack exchange,提问作者Tehleel Mir
相关产品推荐
相关产品推荐

