Comment puis-je résoudre “Dupliquer les fichiers copiés dans APK META-INF/*”
Je suis en train de travailler à une échelle commerciale de l'application android.
Je suis également en utilisant certaines bibliothèques sous licence en vertu de différents types de licence certains d'entre eux déclarant ce qui suit:
Si la bibliothèque dispose d'un "AVIS" du fichier avec l'attribution de notes, vous devez inclure l'AVIS lorsque vous distribuez
(L'un d'eux est sous licence Licence Apache 2.0 par exemple).
Il n'y a plus d'une bibliothèque. Quand je fais le construire avec gradle ou avec Android Studio - je obtenir de l'erreur de génération suivante:
* What went wrong:
Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/license.txt
Les réponses que j'ai trouvé jusqu'à maintenant, sur internet, et stackoverflow proposer de supprimer le license.txt(notice.txt ou d'autres fichiers qui pourraient interférer comme ça), de l'emballage, en ajoutant à build.gradle
le fichier suivant:
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
}
Voir par exemple: Android Studio De 0,4 Dupliquer les fichiers copiés dans APK META-INF/LICENSE.txt
Conformément à la licence de ces bibliothèques(Licence Apache 2.0 par exemple), la licence et de l'avis de fichiers doivent être inclus.
Ma question: Comment puis-je ajouter de multiples fichiers liés à l'octroi de licences(comme license.txt, notice.txt etc) à partir de gradle dans mon projet afin d'être en conformité avec les licences(détail technique: licences textes seront concaténés)?
- À partir d'une technique de POV, pouvez-vous pas emballer les choses, de sorte que tous les "doit inclure les fichiers de chaque bibliothèque est dans leur propre répertoire? Une alternative que j'ai vu de certaines applications est pour vous (manuellement) combiner tous les permis/avis des fichiers en un seul de ressources et include/afficher cette (là où deux ou plusieurs bibliothèques partagent la même licence version, vous devriez être en mesure de les regrouper, "Bibliothèque Une Bibliothèque et B sont inclus sous réserve de la licence suivante:...").
- c'est ce que je fais comme une solution, alors que dans le processus de développement, je les exclure et quand il s'agit de la sortie: commenter tous les "exclut" et résoudre les licences manuellement.
- chercher la réponse "packagingOptions - exclure" mérite un upvote
Vous devez vous connecter pour publier un commentaire.
Il existe une solution si vous n'avez qu'une licence en utilisant le nom
license.txt
(lire: tous leslicense.txt
copies sont identiques):Sinon, Google a également publié un plugin Gradle pour gérer les dépendances de licences. Voir ici. Je ne l'ai pas essayé, mais on dirait qu'il est capable de faire de l'agrégation de toutes les dépendances, et même la création d'une activité de l'affichage de l'ensemble de ces licences.
jar
fichierAjouter la suite en version respectives.gradle fichier
J'ai connu le même problème avec mon application.
Vous devez vous assurer que vous n'avez pas ajouté les bibliothèques à deux reprises.
Si vous avez suivi les firebase documentation
https://firebase.google.com/docs/android/setup
Alors vous ne devez pas ajouter de firebase bibliothèque à l'intérieur de android studio
c'est à dire
fichier->structure de projet->cloud->firebase
Vous avez à faire seulement l'un des deux, à utiliser firebase dans votre application android.
À la fin propre et relancez votre application.
Vous pouvez ajouter plusieurs licence en gradle voir ce
Je pense que vous devez inclure seulement ces options dans la construction.gradle:
Ça sera sûrement travail