我想在现有应用程序中实现一个新的动态功能模块,但由于产品风味问题不得不放弃。
示例代码可以在这里找到。https://github.com/henningBunk/dynamic_feature_problem
我有三个模块:
- 应用程序。应用程序的主要模块。它有两种产品口味:
store
:amazon
和google
pay_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。这样我可以建立一些口味,但不是全部: