Saya bekerja di aplikasi android komersial. Saya juga menggunakan beberapa pustaka yang dilisensikan dengan jenis lisensi yang berbeda, beberapa di antaranya menyatakan sebagai berikut:
Jika perpustakaan memiliki file "PEMBERITAHUAN" dengan catatan atribusi, Anda harus menyertakan PEMBERITAHUAN itu saat Anda mendistribusikan
(Salah satunya berlisensi di bawah Lisensi Apache 2.0 misalnya).
Ada lebih dari satu perpustakaan. Ketika saya melakukan build dengan gradle atau dengan Android Studio, saya mendapatkan error build berikut:
* 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
Jawaban yang saya temukan sampai sekarang di internet dan stackoverflow menyarankan untuk menghapus license.txt (notice.txt atau file lain yang dapat mengganggu seperti ini) dari pengemasan dengan menambahkan ke build.gradle
file berikut:
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'
}
Lihat misalnya: Android Studio 0.4 File duplikat yang disalin dalam APK META-INF / LICENSE.txt
Menurut lisensi pustaka tersebut ( Apache License 2.0 misalnya), file lisensi dan pemberitahuan harus disertakan .
Pertanyaan saya: Bagaimana saya dapat menambahkan beberapa file terkait dengan lisensi (seperti license.txt , notice.txt dll) dari gradle ke dalam proyek saya agar sesuai dengan lisensi ( detail teknis: teks lisensi akan digabungkan)?
Jawaban:
Ada solusi jika Anda hanya memiliki satu lisensi menggunakan nama
license.txt
(baca: semualicense.txt
salinan identik):packagingOptions { pickFirst 'META-INF/license.txt' }
Jika tidak, Google juga merilis plugin Gradle untuk mengelola lisensi dependensi. Lihat disini . Saya tidak mencobanya, tetapi sepertinya itu mampu menggabungkan setiap ketergantungan, dan bahkan menghasilkan aktivitas yang menampilkan semua lisensi tersebut.
sumber
jar
fileTambahkan mengikuti ke file build.gradle masing-masing
packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/MANIFEST.MF' }
sumber
Saya menghadapi masalah yang sama dengan aplikasi saya. Anda perlu memastikan bahwa Anda tidak menambahkan perpustakaan apa pun dua kali. Jika Anda telah mengikuti dokumentasi firebase https://firebase.google.com/docs/android/setup
Maka Anda tidak boleh menambahkan firebase library di dalam android studio ie file-> project structure-> cloud-> firebase
Anda hanya perlu melakukan salah satu dari keduanya, untuk menggunakan firebase di aplikasi android Anda.
Pada akhirnya, bersihkan dan jalankan kembali aplikasi Anda.
sumber
Anda dapat menambahkan beberapa lisensi di gradle lihat ini
sumber
Saya pikir Anda hanya perlu menyertakan opsi ini di build.gradle:
android { packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' } }
sumber
Pasti itu akan berhasil
packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' }
sumber