【问题标题】:Restrict dynamic feature module to certain BuiltTypes将动态功能模块限制为某些 BuiltTypes
【发布时间】:2019-11-22 14:57:41
【问题描述】:

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

【问题讨论】:

    标签: android gradle build.gradle dynamic-feature-module


    【解决方案1】:

    这就是我所做的:

    我创建了另一个名为 dynamic_features.gradle 的 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 是可选的,但如果您想检查该功能在运行时是否可用,则很有用。

    【讨论】:

      猜你喜欢
      • 2010-11-13
      • 2011-06-03
      • 2012-01-21
      • 2015-01-02
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      相关资源
      最近更新 更多