アプリをgradleを使用するように変換し、buildTypesを使用しようとしています。リリースビルド用に変更したいConstants
クラスがあります。そのため、src/main/Java/my/package/name/Constants.Java
とsrc/release/Java/my/package/name/Constants.Java
にファイルがあります。
これをビルドしようとすると、gradleは、リリースのビルドタイプのConstants
ファイルでビルドが失敗し、重複するクラスであるというエラーが表示されます。
次のように、build.gradle
に別のsourceSetを追加してみました。
sourceSets {
main {
Java.srcDirs = ['src/main/Java'];
//...
}
release {
Java.srcDirs = ['src/release/Java'];
}
}
しかし、これでも同じエラーが発生します。だから、私はここで何が間違っているのだろうと思いますか?
main
およびrelease
にクラスを含めることはできません。 debug
とrelease
のように分割する必要があります。
gradleは、各buildType
のソースセットをmain
とマージします。
これが、release
ビルドでクラスが複製される理由です。
したがって、ルールは次のとおりです。クラスをmain
に、またはeverybuildType
に入れますが、両方には入れません。
「修正」からの回答は途中で助けになりましたが、(クラスConfigに)定数が欠落しているというメインGradleからエラーが発生しました。これは、クラスが有料版と無料版のみでメインではなかったためです。 Configクラスが見つかりませんでした。これがスタジオのバグかどうかわかりません...私は最終的に次のように解決しました:
buildTypes {
release {
...
buildConfig "public static final boolean XYZ = false;"
}
}
そして、Config.XYZクラス定数を使用する代わりに、buildConfig.XYZを使用しました