Ich konvertiere meine App für Gradle und versuche, die buildTypes zu verwenden. Ich habe eine Constants
-Klasse, die ich für meinen Release-Build ändern möchte. Ich habe also eine Datei bei src/main/Java/my/package/name/Constants.Java
und bei src/release/Java/my/package/name/Constants.Java
.
Wenn ich versuche, dies zu erstellen, teilt Gradle mit, dass der Build für die Constants
-Datei in meinem Release-Buildtyp fehlgeschlagen ist.
Ich habe auch versucht, einen anderen Quellsatz für diesen Code in meinem build.gradle
hinzuzufügen:
sourceSets {
main {
Java.srcDirs = ['src/main/Java'];
//...
}
release {
Java.srcDirs = ['src/release/Java'];
}
}
Aber das gibt mir immer noch den gleichen Fehler. Ich frage mich also, was mache ich hier falsch?
Sie können in main
und release
keine Klasse haben. Sie müssen es in etwas wie debug
und release
aufteilen.
gradle führt die Quellensätze für jede buildType
mit main
zusammen.
Dies ist der Grund, warum die Klasse in Ihrem Build release
dupliziert wird.
Die Regel ist also: setze eine Klasse in main
oder in every buildType
, aber nicht beides.
Die Antwort von "fix" half mir auf dem Weg, aber ich bekam einen Fehler vom Hauptgradle, dass eine Konstante fehlte (in meiner Klasse Config). Dies, da ich meine Klasse nur in der kostenpflichtigen und kostenlosen Version hatte und nicht in der Hauptversion. Konnte die Config-Klasse nicht finden ... Ich bin mir nicht sicher, ob dies ein Fehler in Studio ist ... Ich habe es schließlich mit dem folgenden Problem gelöst:
buildTypes {
release {
...
buildConfig "public static final boolean XYZ = false;"
}
}
Und statt meiner Konfig.XYZ-Konstante habe ich buildConfig.XYZ verwendet