Je convertis mon application pour utiliser gradle et j'essaie d'utiliser les buildTypes. J'ai une classe Constants
que je souhaite modifier pour la construction de ma version. J'ai donc un fichier à src/main/Java/my/package/name/Constants.Java
et à src/release/Java/my/package/name/Constants.Java
.
Lorsque j'essaie de construire ceci, gradle me dit que la construction a échoué sur le fichier Constants
dans mon build version, avec l'erreur qu'il s'agit d'une classe dupliquée.
J'ai aussi essayé d'ajouter un sourceSet différent 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 demande, qu'est-ce que je fais mal ici?
Vous ne pouvez pas avoir une classe dans main
et release
. Vous devez le scinder en quelque chose comme debug
et release
.
gradle fusionnera les ensembles source pour chaque buildType
avec main
.
C'est la raison pour laquelle la classe est dupliquée dans votre build release
.
La règle est donc la suivante: placez une classe dans main
ou dans every buildType
mais pas les deux.
La réponse de "correctif" m'a aidé sur le chemin, mais j'ai eu une erreur de la part de Gradle principal, disant qu'une constante manquait (dans ma classe Config). Ceci depuis que j'ai eu ma classe uniquement en version payante et gratuite et non en version principale. Impossible de trouver la classe de configuration . Je ne suis pas sûr qu'il s'agisse d'un bogue dans Studio ... Je l'ai finalement résolu avec ce qui suit:
buildTypes {
release {
...
buildConfig "public static final boolean XYZ = false;"
}
}
Et au lieu d'utiliser ma constante de classe Config.XYZ, j'ai utilisé buildConfig.XYZ