Android gradle buildTypes: Doublon de classe
Je suis la conversion de mon application à utiliser gradle, et je suis en train d'utiliser le buildTypes. J'ai un Constants
classe qui je souhaite modifier mon communiqué de construire. J'ai donc un fichier à src/main/java/my/package/name/Constants.java
et à src/release/java/my/package/name/Constants.java
.
Quand j'essaie de compiler ce, gradle me dit la compilation a échoué sur le Constants
fichier dans mon communiqué de buildtype, avec le message d'erreur que c'est un doublon de classe.
J'ai aussi essayé d'ajouter un autre sourceSet pour cela dans mon build.gradle
comme ceci:
sourceSets {
main {
java.srcDirs = ['src/main/java'];
//...
}
release {
java.srcDirs = ['src/release/java'];
}
}
Mais cela me donne toujours la même erreur. Alors je me demandais, ce que je fais mal ici?
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas avoir une classe en
main
etrelease
. Vous avez besoin de le découper en quelque chose commedebug
etrelease
.gradle de la fusion de la source fixe pour chaque
buildType
avecmain
.C'est la raison, pourquoi la classe obtient dupliqués dans votre
release
construire.La règle est donc: mettre une classe dans
main
, ou dans chaquebuildType
mais pas les deux.main
et un autre est dans une saveur.La réponse de "fix" m'a aidé sur le chemin, mais j'ai eu une erreur de la principale Gradle, en disant d'une constante est manquante (dans ma classe Config). Ce depuis que j'ai eu ma classe que dans le payant et le gratuit version et pas dans la main. Impossible de trouver la Config de la classe.
Je ne sais pas si c'est un bug dans le Studio... j'ai finalement résolu avec les éléments suivants:
Et la au lieu d'utiliser ma Config.XYZ constante de classe, j'ai utilisé buildConfig.XYZ
buildConfigField "boolean", "XYZ", "false"