Gadle 3.0 Flavor错误重复类

Ale*_*son 2 android gradle android-studio android-studio-3.0

在将Android Studio和Gradle更新到3.0版后,我无法使用3种风格(dbg,production和nostore production)构建我的应用程序
在每个风味源集的java/src文件夹中(排除main)我有一些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"
    }
  }     
}
Run Code Online (Sandbox Code Playgroud)

我不明白什么是错的,这段代码看起来像https://developer.android.com/studio/build/build-variants.html上的示例.
有一点,在Build Varians面板上,我现在只有2个varians:dbgProductionNostoreprodDebug和dbgProductionNostoreprodRelease但是在之前的AS和Gradle版本中,我对这个面板上的每种风格都有不同的变体.(看起来像AStudio尝试在同一时间内使用所有变体进行单一构建或什么?)

woj*_*ski 12

您粘贴的配置将正确生成2个变体,因为3维中的每个只有1个味道,然后有2个隐式构建类型(发布和调试):

+-----+------------+-------------+-----------+---------------------------------+
| dbg |    prod    |   nostore   | buildType |        resulting variant        |
+-----+------------+-------------+-----------+---------------------------------+
| dbg | production | nostoreprod | debug     | dbgProductionNostoreprodDebug   |
| dbg | production | nostoreprod | release   | dbgProductionNostoreprodRelease |
+-----+------------+-------------+-----------+---------------------------------+
Run Code Online (Sandbox Code Playgroud)

您可能想要的是1种口味尺寸,而不是3种口味:

+-----------------+-----------+--------------------+
| myDimensionName | buildType | resulting variant  |
+-----------------+-----------+--------------------+
| dbg             | debug     | dbgDebug           |
| dbg             | release   | dbgRelease         |
| production      | debug     | prodDebug          |
| production      | release   | prodRelease        |
| nostoreprod     | debug     | nostoreprodDebug   |
| nostoreprod     | release   | nostoreprodRelease |
+-----------------+-----------+--------------------+
Run Code Online (Sandbox Code Playgroud)

这看起来像这样:

...
flavorDimensions "myDimensionName"
productFlavors {

dbg{
    ndk {
        abiFilters "armeabi", "x86"
    }
    dimension "myDimensionName"
}

production{
    ndk {
        abiFilters "armeabi", "x86"
    }
    dimension "myDimensionName"
}

nostoreprod {
    ndk {
        abiFilters "armeabi", "x86"
    }
    dimension "myDimensionName"
}
Run Code Online (Sandbox Code Playgroud)