更新到 Gradle 3.0 后风味错误重复 类
Flavor error duplicate classes after updating to Gradle 3.0
将 Android Studio 和 Gradle 更新到版本 3.0 后,我无法使用 3 种风格(dbg、生产和 nostore 生产)构建我的应用程序
在每个风味源集的 java/src 文件夹中(不包括主要)我有 class Flavors.class 以及为此源集指定的一些方法。
但是当我尝试 运行 或构建应用程序时出现错误:
Error:(9, 8) error: duplicate class: my.app.namespace.Flavors
.
我还添加了 Gradle 变体尺寸 flavorDimensions "dbg", "prod","nostore"
并为每个风味部分添加了 dimension
值。
这是它的样子:
android{
compileSdkVersion 24
buildToolsVersion '26.0.2'
...
flavorDimensions "dbg", "prod","nostore"
productFlavors {
dbg{
ndk {
abiFilters "armeabi", "x86"
}
dimension "dbg"
}
production{
ndk {
abiFilters "armeabi", "x86"
}
dimension "prod"
}
nostoreprod {
ndk {
abiFilters "armeabi", "x86"
}
dimension "nostore"
}
}
}
我不明白哪里出了问题,这段代码看起来像 https://developer.android.com/studio/build/build-variants.html 上的示例。
有一件事,现在在 Build Variants 面板上我只有 2 个变体:dbgProductionNostoreprodDebug
和 dbgProductionNostoreprodRelease
但在以前版本的 AS 和 Gradle 中,我在这个面板上的每种风格都有不同的变体。 (看起来像 AStudio 尝试同时使用所有变体进行单一构建还是什么?)
您粘贴的配置将正确地只产生 2 个变体,因为 3 个维度中的每个维度只有 1 个风格,然后有 2 个隐式构建类型(发布和调试):
+-----+------------+-------------+-----------+---------------------------------+
| dbg | prod | nostore | buildType | resulting variant |
+-----+------------+-------------+-----------+---------------------------------+
| dbg | production | nostoreprod | debug | dbgProductionNostoreprodDebug |
| dbg | production | nostoreprod | release | dbgProductionNostoreprodRelease |
+-----+------------+-------------+-----------+---------------------------------+
您可能想要的是 1 个风味维度和 3 个风味:
+-----------------+-----------+--------------------+
| myDimensionName | buildType | resulting variant |
+-----------------+-----------+--------------------+
| dbg | debug | dbgDebug |
| dbg | release | dbgRelease |
| production | debug | prodDebug |
| production | release | prodRelease |
| nostoreprod | debug | nostoreprodDebug |
| nostoreprod | release | nostoreprodRelease |
+-----------------+-----------+--------------------+
可能看起来像这样:
...
flavorDimensions "myDimensionName"
productFlavors {
dbg{
ndk {
abiFilters "armeabi", "x86"
}
dimension "myDimensionName"
}
production{
ndk {
abiFilters "armeabi", "x86"
}
dimension "myDimensionName"
}
nostoreprod {
ndk {
abiFilters "armeabi", "x86"
}
dimension "myDimensionName"
}
将 Android Studio 和 Gradle 更新到版本 3.0 后,我无法使用 3 种风格(dbg、生产和 nostore 生产)构建我的应用程序
在每个风味源集的 java/src 文件夹中(不包括主要)我有 class Flavors.class 以及为此源集指定的一些方法。
但是当我尝试 运行 或构建应用程序时出现错误:
Error:(9, 8) error: duplicate class: my.app.namespace.Flavors
.
我还添加了 Gradle 变体尺寸 flavorDimensions "dbg", "prod","nostore"
并为每个风味部分添加了 dimension
值。
这是它的样子:
android{
compileSdkVersion 24
buildToolsVersion '26.0.2'
...
flavorDimensions "dbg", "prod","nostore"
productFlavors {
dbg{
ndk {
abiFilters "armeabi", "x86"
}
dimension "dbg"
}
production{
ndk {
abiFilters "armeabi", "x86"
}
dimension "prod"
}
nostoreprod {
ndk {
abiFilters "armeabi", "x86"
}
dimension "nostore"
}
}
}
我不明白哪里出了问题,这段代码看起来像 https://developer.android.com/studio/build/build-variants.html 上的示例。
有一件事,现在在 Build Variants 面板上我只有 2 个变体:dbgProductionNostoreprodDebug
和 dbgProductionNostoreprodRelease
但在以前版本的 AS 和 Gradle 中,我在这个面板上的每种风格都有不同的变体。 (看起来像 AStudio 尝试同时使用所有变体进行单一构建还是什么?)
您粘贴的配置将正确地只产生 2 个变体,因为 3 个维度中的每个维度只有 1 个风格,然后有 2 个隐式构建类型(发布和调试):
+-----+------------+-------------+-----------+---------------------------------+
| dbg | prod | nostore | buildType | resulting variant |
+-----+------------+-------------+-----------+---------------------------------+
| dbg | production | nostoreprod | debug | dbgProductionNostoreprodDebug |
| dbg | production | nostoreprod | release | dbgProductionNostoreprodRelease |
+-----+------------+-------------+-----------+---------------------------------+
您可能想要的是 1 个风味维度和 3 个风味:
+-----------------+-----------+--------------------+
| myDimensionName | buildType | resulting variant |
+-----------------+-----------+--------------------+
| dbg | debug | dbgDebug |
| dbg | release | dbgRelease |
| production | debug | prodDebug |
| production | release | prodRelease |
| nostoreprod | debug | nostoreprodDebug |
| nostoreprod | release | nostoreprodRelease |
+-----------------+-----------+--------------------+
可能看起来像这样:
...
flavorDimensions "myDimensionName"
productFlavors {
dbg{
ndk {
abiFilters "armeabi", "x86"
}
dimension "myDimensionName"
}
production{
ndk {
abiFilters "armeabi", "x86"
}
dimension "myDimensionName"
}
nostoreprod {
ndk {
abiFilters "armeabi", "x86"
}
dimension "myDimensionName"
}