由于生成风格问题,无法添加动态功能模块

时间:2019-04-12 09:30:33

标签: android gradle dependencies dynamic-feature

我想在现有应用中实现一个新的动态功能模块,但由于产品风味问题而不得不放弃。

示例代码可在此处找到。 https://github.com/henningBunk/dynamic_feature_problem

我有三个模块:

  1. 应用。应用程序的主要模块。它具有两种产品口味:

storeamazongoogle
pay_statusfreepro

产生四种组合: amazonFreeamazonProgoogleFreegooglePro

这取决于lib并将dynamic_feature列为动态功能。

  1. lib。库模块appdynamic_feature依赖于此模块。 lib仅具有pay_status的风味。所以当我建立例如。作为googleFree风格的应用程序,lib将构建它的free风格。

  2. dynamic_feature。新功能应为动态功能。此模块不应具有任何风味。这取决于app和lib。

三个gradle文件,简化为产品风味和依赖性,如下所示:

应用程序模块build.gradle:

apply plugin: 'com.android.application'

android {
    dynamicFeatures = [":faq"]

    flavorDimensions "store", "pay_status"

    productFlavors {
        google { dimension "store" }
        amazon { dimension "store" }

        free { dimension "pay_status" }
        pro { dimension "pay_status" }
    }
}
dependencies {
    implementation project(':lib')
}

库模块build.gradle:

apply plugin: 'com.android.library'

android {
    flavorDimensions "pay_status"

    productFlavors {
        free { dimension "pay_status" }
        pro { dimension "pay_status" }
    }
}

dependencies {
}

动态功能模块build.gradle:

apply plugin: 'com.android.dynamic-feature'

android {}

dependencies {
    implementation project(':app')
    implementation project(':lib')
}

这会导致错误:

ERROR: Unable to resolve dependency for ':dynamic_feature@debug/compileClasspath': Could not resolve project :app.
Show Details
Affected Modules: dynamic_feature

因此,我读到模块dynamic_feature可能需要缺少尺寸标注策略。添加

missingDimensionStrategy "store", "google"
missingDimensionStrategy "pay_status", "free"

将dynamic_feature build.gradle转换为android.defaultConfig。这样,我可以建立一些风味,但不是全部:

enter image description here

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,但并不令人满意。所有构建风格都必须在动态功能模块中实现,这样才能真正构建所有构建风格。

missingDimensionStrategy不起作用。

更多信息在这里:https://proandroiddev.com/advanced-android-flavors-part-4-a-new-version-fc2ad80c01bb