【发布时间】:2019-09-03 00:56:16
【问题描述】:
我想在现有应用中实现一个新的动态功能模块,但由于产品风味问题不得不放弃。
示例代码可以在这里找到。 https://github.com/henningBunk/dynamic_feature_problem
我有三个模块:
- 应用程序。应用程序的主要模块。它有两种产品口味:
store:amazon 和 googlepay_status:free 和 pro
产生四种组合:
amazonFree、amazonPro、googleFree 和 googlePro
它依赖于lib,并将dynamic_feature列为动态特征。
库。库模块
app和dynamic_feature依赖于该模块。lib仅具有pay_status风味。所以当我建立例如。应用程序为googleFree风格,lib 将构建它的free风格。动态特性。新功能应为动态功能。这个模块不应该有任何味道。这取决于应用程序和库。
三个 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')
}
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。这样我可以构建一些口味,但不是全部:
【问题讨论】:
-
嗨有同样的问题,就我而言,我只是忘记在一个模块中用
apply plugin: 'com.android.dynamic-feature'替换apply plugin: 'com.android.feature'.... ???? -
你确定我们有同样的问题吗?因为我已经在使用''com.android.dynamic-feature''。我的问题在于不同的构建变体。
-
相当肯定......也许有不止一种方法可以得到这个错误。
标签: android gradle dependencies dynamic-feature