gpt4 book ai didi

android - 基于 Android Gradle 中多 flavor 库的多 flavor 应用

转载 作者:IT老高 更新时间:2023-10-28 13:05:31 27 4
gpt4 key购买 nike

我的应用针对多个市场的应用内计费系统具有多种风格。

我有一个共享我所有项目的基本代码的库。所以我决定将这些支付系统作为产品 flavor 添加到这个库中。

问题是android库可以有产品 flavor 吗?

如果是这样,我如何在应用的各个 flavor 中包含不同的 flavor ?

我搜索了很多,但我找不到关于这个场景的任何信息。我发现的唯一接近的东西是 http://tools.android.com/tech-docs/new-build-system/user-guide :

dependencies {
flavor1Compile project(path: ':lib1', configuration: 'flavor1Release')
flavor2Compile project(path: ':lib1', configuration: 'flavor2Release')
}

我将配置更改为不同的东西,但它不起作用!

我正在使用 android studio 0.8.2。

最佳答案

我终于找到了如何做到这一点,我会在这里为其他面临同样问题的人解释一下:

如果 App 和 Library 具有相同的 Flavor 名称

自 Gradle 插件 3.0.0(及更高版本)以来,可以执行以下操作:

库 build.gradle:

apply plugin: 'com.android.library'

// Change below's relative-path
// (as the `../` part is based on my project structure,
// and may not work for your project).
apply from: '../my-flavors.gradle'

dependencies {
// ...
}

android {
// ...
}

项目 build.gradle:

buildscript {
// ...
}

apply plugin: 'com.android.application'
// Note that below can be put after `dependencies`
// (I just like to have all apply beside each other).
apply from: './my-flavors.gradle'

dependencies {
api project(':lib')
}

android {
productFlavors {
// Optionally, configure each flavor.
market1 {
applicationIdSuffix '.my-market1-id'
}
market2 {
applicationIdSuffix '.my-market2-id'
}
}
}

我的口味 .gradle:

android {
flavorDimensions 'my-dimension'
productFlavors {
market1 {
dimension 'my-dimension'
}
market2 {
dimension 'my-dimension'
}
}
}

如果 App 或 Library 有不同的 Flavor-name (旧答案)

关键部分是在库build.gradle中将publishNonDefault设置为true,然后你必须按照用户指南的建议定义依赖关系。

Update 2022; publishNonDefault is now by default true, and setting it to false is ignored, since said option is deprecated.

整个项目会是这样的:

库 build.gradle:

apply plugin: 'com.android.library'

android {
....
publishNonDefault true
productFlavors {
market1 {}
market2 {}
market3 {}
}
}

项目 build.gradle:

apply plugin: 'com.android.application'

android {
....
productFlavors {
market1 {}
market2 {}
market3 {}
}
}

dependencies {
....
market1Compile project(path: ':lib', configuration: 'market1Release')
market2Compile project(path: ':lib', configuration: 'market2Release')

// Or with debug-build type support.
android.buildTypes.each { type ->
market3Compile project(path: ':lib', configuration: "market3${type.name}")
}

}

现在您可以选择应用风格和构建变体面板,库将被相应地选择,所有构建和运行都将基于所选风格完成。

如果你有多个基于库 Android Studio 的应用模块会提示 Variant selection 冲突,没关系,忽略它。

enter image description here

关于android - 基于 Android Gradle 中多 flavor 库的多 flavor 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24860659/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com