35

我正在将我的应用程序转换为使用 gradle,并且我正在尝试使用 buildTypes。我有一个Constants类,我希望为我的发布版本进行修改。所以我有一个文件 atsrc/main/java/my/package/name/Constants.java和 at src/release/java/my/package/name/Constants.java

当我尝试构建它时,gradle 告诉我Constants在我的发布构建类型中的文件上构建失败,错误是它是一个重复的类。

我还尝试为此添加不同的 sourceSet,build.gradle如下所示:

sourceSets {
    main {
        java.srcDirs = ['src/main/java'];
        //...
    }
    release {
        java.srcDirs = ['src/release/java'];
    }
}

但这仍然给了我同样的错误。所以我想知道,我在这里做错了什么?

4

2 回答 2

81

您不能在main和中上课release。您需要将其拆分为类似于debugand的内容release

gradle 会将每个源集buildTypemain.
这就是该类在您的release构建中重复的原因。

所以规则是:将一个类放入main,或放入其中 buildType但不能同时放入。

于 2013-09-13T09:06:43.023 回答
0

“修复”的答案在路上帮助了我,但我从主 Gradle 收到一个错误,说缺少一个常量(在我的类 Config 中)。这是因为我的课程只有付费和免费版本,而不是主要版本。找不到 Config 类。我不确定这是否是 Studio 中的错误......我终于用以下方法解决了它:

buildTypes {

    release {
        ...
        buildConfig "public static final boolean XYZ = false;"
    }

}

而不是使用我的 Config.XYZ 类常量,我使用了 buildConfig.XYZ

于 2013-11-24T15:35:08.267 回答