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
InformationsquelleAutor Flowryn | 2015-11-25