android - 更新到 Gradle 3.0 后出现重复类错误

标签 android android-studio gradle android-studio-3.0

将 Android Studio 和 Gradle 更新到版本 3.0 后,我无法使用 3 种风格(dbg、生产和 nostore 生产)构建应用程序
在每个 flavor 源集的 java/src 文件夹中(不包括 main),我有类 Flavors.class ,其中包含为此源集指定的一些方法。
但是当我尝试运行或构建应用程序时出现错误: 错误:(9, 8) 错误:重复类:my.app.namespace.Flavors
此外,我还向 Gradle 变体维度添加 flavorDimensions "dbg", "prod","nostore" 并向每个 flavor 部分添加 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 上的示例.
有一件事,在“构建变体”面板上现在我只有 2 个变体:dbgProductionNostoreprodDebugdbgProductionNostoreprodRelease 但在以前版本的 AS 和 Gradle 中,我在此面板上的每种风格都有不同的变体。 (看起来 AStudio 尝试在同一时间使用所有变体进行单一构建还是什么?)

最佳答案

您粘贴的配置将正确地仅生成 2 个变体,因为每个 3 维只有 1 个 flavor ,并且有 2 个隐式构建类型(发布和调试):

+-----+------------+-------------+-----------+---------------------------------+
| dbg |    prod    |   nostore   | buildType |        resulting variant        |
+-----+------------+-------------+-----------+---------------------------------+
| dbg | production | nostoreprod | debug     | dbgProductionNostoreprodDebug   |
| dbg | production | nostoreprod | release   | dbgProductionNostoreprodRelease |
+-----+------------+-------------+-----------+---------------------------------+

您可能想要的是 1 个 flavor 维度和 3 个 flavor :

+-----------------+-----------+--------------------+
| 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 - 更新到 Gradle 3.0 后出现重复类错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47023424/

相关文章:

android-studio - 错误 : Can't determine type for tag '<item name="APP_URL"type ="String" >"https://www.dummyurl_dev.com/"</item>' in build gradleResValues. xml

java - Base64字符串仅保存相机拍摄的最后一张图像

gradle - 是否可以跳过特定类型的所有 gradle 任务?

java - 分析 Gradle 项目

Android: fragment :setContentView 替代

android - API 级别是什么意思?

android - Fabric 上的每日新用户数量始终远高于 Play Console 上的设备安装量

java - 如何暂停和播放音乐播放器

Android TTS 提供的语言比设置中提供的语言多

gradle - 是否可以在gradle中使用2个版本的相同依赖项?