1

我有一个有两种风格和 6 个 buildTypes 的应用程序。我正在开发一个动态功能模块,但我不希望它包含在发布包中。有没有办法使用 buildTypes 做到这一点?我已经尝试dynamicFeatures = ["mymodule"]在所需的 buildTypes 中添加它,但它仍然被添加到发布包中。我知道我可以on-demand在模块的清单中指定它,以防止它被添加到用户安装的 apk 中,但我更愿意将它放在一起发布包中。有没有办法做到这一点?

4

1 回答 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 回答