为每种 android 风格使用不同的库模块
Use different library module for each android flavor
我想为每种风格使用不同的库模块。
例如:
- free flavor -> 我需要使用 free library 模块
- paid flavor -> 我需要使用付费库模块
我的口味
productFlavors {
free{
.......
}
paid{
.......
}
}
我试过的
freeImplementation project(path:':freeLib', configuration: 'free')//for free
paidImplementation project(path:':paidLib', configuration: 'paid')//for paid
但是我遇到编译错误无法使用这个
注意:这不是重复的问题。我已经尝试了一些 Whosebug 问题。它已经过时了(他们正在使用编译)
参考 - Multi flavor app based on multi flavor library in Android Gradle
解决方案(来自 Gabriele Mariotti 评论)
freeImplementation project(path:':freeLib')
paidImplementation project(path:':paidLib')
如果您有一个包含多种产品口味的库,您可以在 lib/build.gradle
中定义:
android {
...
//flavorDimensions is mandatory with flavors.
flavorDimensions "xxx"
productFlavors {
free{
dimension "xxx"
}
paid{
dimension "xxx"
}
}
...
}
在你的app/build.gradle
中定义:
android {
...
flavorDimensions "xxx"
productFlavors {
free{
dimension "xxx"
// App and library's flavor have the same name.
// MatchingFallbacks can be omitted
matchingFallbacks = ["free"]
}
paid{
dimension "xxx"
matchingFallbacks = ["paid"]
}
}
...
}
dependencies {
implementation project(':mylib')
}
相反,如果您有单独的库,您可以简单地在 app/build.gradle
中使用像这样的东西:
dependencies {
freeImplementation project(':freeLib')
paidImplementation project(':paidLib')
}
首先将下面的 gradle 代码片段添加到您的 app/build.gradle
flavorDimensions "env"
productFlavors {
dev {
dimension "env"
}
pre {
dimension "env"
}
prod {
dimension "env"
}
}
其次,将下面的 gradle 代码片段添加到您的 module/build.gradle
flavorDimensions "env"
productFlavors {
register("dev")
register("pre")
register("prod")
}
同步你的项目,然后你会发现productFlavors配置成功,如下图
我想为每种风格使用不同的库模块。
例如:
- free flavor -> 我需要使用 free library 模块
- paid flavor -> 我需要使用付费库模块
我的口味
productFlavors {
free{
.......
}
paid{
.......
}
}
我试过的
freeImplementation project(path:':freeLib', configuration: 'free')//for free
paidImplementation project(path:':paidLib', configuration: 'paid')//for paid
但是我遇到编译错误无法使用这个
注意:这不是重复的问题。我已经尝试了一些 Whosebug 问题。它已经过时了(他们正在使用编译)
参考 - Multi flavor app based on multi flavor library in Android Gradle
解决方案(来自 Gabriele Mariotti 评论)
freeImplementation project(path:':freeLib')
paidImplementation project(path:':paidLib')
如果您有一个包含多种产品口味的库,您可以在 lib/build.gradle
中定义:
android {
...
//flavorDimensions is mandatory with flavors.
flavorDimensions "xxx"
productFlavors {
free{
dimension "xxx"
}
paid{
dimension "xxx"
}
}
...
}
在你的app/build.gradle
中定义:
android {
...
flavorDimensions "xxx"
productFlavors {
free{
dimension "xxx"
// App and library's flavor have the same name.
// MatchingFallbacks can be omitted
matchingFallbacks = ["free"]
}
paid{
dimension "xxx"
matchingFallbacks = ["paid"]
}
}
...
}
dependencies {
implementation project(':mylib')
}
相反,如果您有单独的库,您可以简单地在 app/build.gradle
中使用像这样的东西:
dependencies {
freeImplementation project(':freeLib')
paidImplementation project(':paidLib')
}
首先将下面的 gradle 代码片段添加到您的
app/build.gradle
flavorDimensions "env" productFlavors { dev { dimension "env" } pre { dimension "env" } prod { dimension "env" } }
其次,将下面的 gradle 代码片段添加到您的
module/build.gradle
flavorDimensions "env" productFlavors { register("dev") register("pre") register("prod") }
同步你的项目,然后你会发现productFlavors配置成功,如下图