webentwicklung-frage-antwort-db.com.de

Android Gradle BuildTypes: Duplizierte Klasse

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?

32
Arne517

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.

75
flx

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

0
powder366