我有一个有两种风格和 6 个 buildTypes 的应用程序。我正在开发一个动态功能模块,但我不希望它包含在发布包中。有没有办法使用 buildTypes 做到这一点?我已经尝试dynamicFeatures = ["mymodule"]
在所需的 buildTypes 中添加它,但它仍然被添加到发布包中。我知道我可以on-demand
在模块的清单中指定它,以防止它被添加到用户安装的 apk 中,但我更愿意将它放在一起发布包中。有没有办法做到这一点?
1 回答
0
这是我所做的:
我创建了另一个名为dynamic_features.gradle
. 这是它的样子:
if (hasProperty('is_release_build')) {
android {
buildTypes {
debug {
buildConfigField 'boolean', 'HAS_DYNAMIC_FEATURES', 'false'
}
qa {
buildConfigField 'boolean', 'HAS_DYNAMIC_FEATURES', 'false'
}
release {
buildConfigField 'boolean', 'HAS_DYNAMIC_FEATURES', 'false'
}
staging {
buildConfigField 'boolean', 'HAS_DYNAMIC_FEATURES', 'false'
}
debugDaily {
buildConfigField 'boolean', 'HAS_DYNAMIC_FEATURES', 'false'
}
local {
buildConfigField 'boolean', 'HAS_DYNAMIC_FEATURES', 'false'
}
}
}
} else {
android {
buildTypes {
debug {
buildConfigField 'boolean', 'HAS_DYNAMIC_FEATURES', 'true'
}
qa {
buildConfigField 'boolean', 'HAS_DYNAMIC_FEATURES', 'true'
}
release {
buildConfigField 'boolean', 'HAS_DYNAMIC_FEATURES', 'true'
}
staging {
buildConfigField 'boolean', 'HAS_DYNAMIC_FEATURES', 'true'
}
debugDaily {
buildConfigField 'boolean', 'HAS_DYNAMIC_FEATURES', 'true'
}
local {
buildConfigField 'boolean', 'HAS_DYNAMIC_FEATURES', 'true'
}
}
dynamicFeatures = [":<features>"]
}
}
然后,我添加-Pis_release_build
到我的构建脚本中:./gradlew clean bundleAppRelease -Pis_release_build
.
最后,我添加apply from: 'dynamic_features.gradle'
到我的应用程序级别build.gradle
。使用构建脚本生成的捆绑包不包含功能模块。这buildConfigField
是可选的,但如果您想检查该功能在运行时是否可用,则很有用。
于 2019-11-25T23:33:29.910 回答