Ich arbeite an einer kommerziellen Android-Anwendung. Ich verwende auch einige Bibliotheken, die unter verschiedenen Lizenztypen lizenziert sind. Einige von ihnen geben Folgendes an:
Wenn die Bibliothek eine "NOTICE" -Datei mit Attributionsnotizen enthält, müssen Sie diese NOTICE bei der Verteilung angeben
(Einer von ihnen ist beispielsweise unter Apache License 2.0 lizenziert ).
Es gibt mehr als eine Bibliothek. Wenn ich den Build mit gradle oder mit Android Studio mache, erhalte ich den folgenden Buildfehler :
* 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
Die Antworten, die ich bisher im Internet und im Stackoverflow gefunden habe, schlagen vor, die Datei license.txt (Notice.txt oder andere Dateien, die auf diese Weise stören könnten) aus dem Paket zu entfernen, indem Sie der build.gradle
Datei Folgendes hinzufügen :
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'
}
Siehe zum Beispiel: Android Studio 0.4 Doppelte Dateien, die in APK META-INF / LICENSE.txt kopiert wurden
Entsprechend der Lizenz dieser Bibliotheken ( z. B. Apache License 2.0 ) sollten die Lizenz- und Benachrichtigungsdateien enthalten sein .
Meine Frage: Wie kann ich mehrere gradungsbezogene Dateien (wie licence.txt , Notice.txt usw.) von gradle in mein Projekt einfügen, um die Lizenzen einzuhalten ( technisches Detail: Lizenztexte werden verkettet)?
Antworten:
Es gibt eine Lösung, wenn Sie nur eine Lizenz mit dem Namen haben
license.txt
(lesen Sie: Allelicense.txt
Kopien sind identisch):Andernfalls hat Google auch ein Gradle-Plugin zur Verwaltung von Abhängigkeitslizenzen veröffentlicht. Siehe hier . Ich habe es nicht ausprobiert, aber es sieht so aus, als ob es in der Lage ist, jede Abhängigkeit zu aggregieren und sogar eine Aktivität zu generieren, in der alle diese Lizenzen angezeigt werden.
quelle
jar
DateiFügen Sie Folgendes in die entsprechende build.gradle-Datei ein
quelle
Ich hatte das gleiche Problem mit meiner Bewerbung. Sie müssen sicherstellen, dass Sie keine Bibliotheken zweimal hinzugefügt haben. Wenn Sie die Firebase-Dokumentation https://firebase.google.com/docs/android/setup befolgt haben
Dann sollten Sie keine Firebase-Bibliothek in Android Studio hinzufügen, dh Datei-> Projektstruktur-> Cloud-> Firebase
Sie müssen nur eine der beiden Aktionen ausführen, um Firebase in Ihrer Android-Anwendung zu verwenden.
Am Ende bereinigen Sie Ihre App und führen Sie sie erneut aus.
quelle
Sie können mehrere Lizenz hinzufügen in gradle dies sehen
quelle
Ich denke, Sie müssen nur diese Optionen in build.gradle aufnehmen:
quelle
Sicher wird es funktionieren
quelle