Android:仅添加特定风格的库模块
在我的android应用程序中,我有两个库模块,需要根据味道有条件地包含它们。以下是应用程序结构Android:仅添加特定风格的库模块,android,android-gradle-plugin,build.gradle,android-library,android-flavors,Android,Android Gradle Plugin,Build.gradle,Android Library,Android Flavors,在我的android应用程序中,我有两个库模块,需要根据味道有条件地包含它们。以下是应用程序结构 :app:library1:library2 该应用程序有两种风格,所以它将生成两个apk,一个免费版本,另一个付费版本。因此,相应地将app build.gradle配置如下: android { flavorDimensions("billing_type") productFlavors { free { dimension "billi
:app
:library1
:library2
该应用程序有两种风格,所以它将生成两个apk,一个免费版本,另一个付费版本。因此,相应地将app build.gradle配置如下:
android {
flavorDimensions("billing_type")
productFlavors {
free {
dimension "billing_type"
}
paid {
dimension "billing_type"
}
}
}
dependencies {
implementation project(path: 'flavor1')
implementation project(path: 'flavor2')
}
正如我们所看到的,这两个库模块将包含在两种风格中(免费和付费)。但是我只想把图书馆2收录在付费的风味中。那么,我如何才能有条件地只在付费风味中添加library2?我遵循了本文中提到的一些方法
并进行了以下更改:android {
flavorDimensions("billing_type")
productFlavors {
free {
dimension "billing_type"
}
paid {
dimension "billing_type"
}
}
}
configurations {
freeImplementation
paidImplementation
}
dependencies {
freeImplementation implementation project(path: 'flavor1')
paidImplementation implementation project(path: 'flavor2')
}
所有在线参考资料均适用于使用compile添加库模块的较旧grdale版本,
但自从gradle plugin 3.0.0以来,它就被弃用了。那么,有谁能帮我弄清楚如何在最新的选项1:中有条件地添加特定风格的库模块吗 最后,我发现了如何做到这一点,我将在这里向面临同样问题的其他人解释: 关键部分是在library build.gradle中将publishNonDefault设置为true,然后必须按照用户指南的建议定义依赖项 整个项目将是这样的: 库构建。渐变: 项目构建。渐变: 现在,您可以选择AppFlavor和BuildVariants面板,相应地选择库,所有构建和运行都将基于所选的flavor完成 如果你有多个基于库的应用程序模块,Android Studio会抱怨变量选择冲突,没关系,忽略它 选项2: 示例解决方案: Lib build.gradle App build.gradle
适用于Gradle 3.0及更高版本 当您的主项目使用具有风格维度的模块或库模块(AAR)时,您的应用程序不知道使用哪一个。您应该在应用程序的build.gradle文件的defaultConfig块中使用missingDimensionStrategy来指定默认风格。例如:
missingDimensionStrategy 'dimension', 'flavor1', 'flavor2'
请查看链接以了解更多详细信息
apply plugin: 'com.android.application'
android {
....
productFlavors {
market1 {}
market2 {}
}
}
dependencies {
....
market1Compile project(path: ':lib', configuration: 'market1Release')
market2Compile project(path: ':lib', configuration: 'market2Release')
}
android {
publishNonDefault true
buildTypes {
release {
}
debug {
}
}
productFlavors {
free {
}
paid {
}
}
}
android {
buildTypes {
debug {
}
release {
}
}
productFlavors {
free {
}
paid {
}
}
}
configurations {
freeDebugCompile
paidDebugCompile
freeReleaseCompile
paidReleaseCompile
}
dependencies {
freeDebugCompile project(path: ':lib', configuration: 'freeDebug')
paidDebugCompile project(path: ':lib', configuration: 'paidDebug')
freeReleaseCompile project(path: ':lib', configuration: 'freeRelease')
paidReleaseCompile project(path: ':lib', configuration: 'paidRelease')
}
missingDimensionStrategy 'dimension', 'flavor1', 'flavor2'