Je travaille sur une application Android commerciale. J'utilise également certaines bibliothèques sous licence sous différents types de licence, certaines indiquant ce qui suit:
Si la bibliothèque a un fichier "NOTICE" avec des notes d'attribution, vous devez inclure cet AVIS lors de la distribution
(L'un d'eux est sous licence Apache License 2.0 par exemple).
Il existe plusieurs bibliothèques. Lorsque je fais la construction avec gradle ou avec Android Studio, j'obtiens l'erreur de construction 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ées jusqu'à présent sur Internet et stackoverflow suggèrent de supprimer le license.txt (notice.txt ou d'autres fichiers qui pourraient interférer comme ça) de l'empaquetage en ajoutant au build.gradle
fichier ce qui suit:
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 0.4 Fichiers dupliqués copiés dans APK META-INF / LICENSE.txt
Selon la licence de ces bibliothèques ( Apache License 2.0 par exemple), les fichiers de licence et d'avis doivent être inclus .
Ma question: Comment puis-je ajouter plusieurs fichiers liés aux licences (tels que license.txt , notice.txt etc) de gradle dans mon projet afin d'être conforme aux licences ( détail technique: les textes des licences seront concaténés)?
Réponses:
Il existe une solution si vous n'avez qu'une seule licence utilisant le nom
license.txt
(lire: toutes leslicense.txt
copies sont identiques):Sinon, Google a également publié un plugin Gradle pour gérer les licences de dépendances. Regardez ici . Je ne l'ai pas essayé, mais il semble qu'il soit capable d'agréger toutes les dépendances, et même de générer une activité affichant toutes ces licences.
la source
jar
fichierAjouter ce qui suit dans le fichier build.gradle respectif
la source
J'ai rencontré le même problème avec ma candidature. Vous devez vous assurer que vous n'avez ajouté aucune bibliothèque deux fois. Si vous avez suivi la documentation de Firebase https://firebase.google.com/docs/android/setup
Ensuite, vous ne devriez pas ajouter de bibliothèque Firebase à l'intérieur d'Android Studio ie fichier-> structure du projet-> cloud-> firebase
Vous devez faire un seul des deux, pour utiliser Firebase dans votre application Android.
À la fin, nettoyez et réexécutez votre application.
la source
Vous pouvez ajouter plusieurs licences dans gradle voir ceci
la source
Je pense que vous devez inclure uniquement ces options dans build.gradle:
la source
Cela fonctionnera sûrement
la source