Estoy trabajando en una aplicación comercial de Android. También estoy usando algunas bibliotecas con licencias de diferentes tipos de licencias, algunas de las cuales indican lo siguiente:
Si la biblioteca tiene un archivo de "AVISO" con notas de atribución, debe incluir ese AVISO cuando distribuya
(Uno de ellos tiene la licencia Apache License 2.0, por ejemplo).
Hay más de una biblioteca. Cuando hago la compilación con gradle o con Android Studio, obtengo el siguiente error de compilación:
* 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
Las respuestas que encontré hasta ahora en Internet y stackoverflow sugieren eliminar el license.txt (aviso.txt u otros archivos que podrían interferir como este) del paquete agregando al build.gradle
archivo lo siguiente:
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'
}
Ver, por ejemplo: Android Studio 0.4 Archivos duplicados copiados en APK META-INF / LICENSE.txt
De acuerdo con la licencia de esas bibliotecas ( Apache License 2.0, por ejemplo), se deben incluir los archivos de licencia y aviso .
Mi pregunta: ¿Cómo puedo agregar varios archivos relacionados con las licencias (como license.txt , notice.txt , etc.) de gradle en mi proyecto para cumplir con las licencias ( detalle técnico: los textos de las licencias se concatenarán)?
Respuestas:
Existe una solución si solo tiene una licencia con el nombre
license.txt
(lea: todas laslicense.txt
copias son idénticas):De lo contrario, Google también lanzó un complemento de Gradle para administrar licencias de dependencias. Vea aquí . No lo probé, pero parece que es capaz de agregar todas las dependencias e incluso generar una actividad que muestre todas esas licencias.
fuente
jar
archivoAgregue lo siguiente en el archivo build.gradle respectivo
fuente
Enfrenté el mismo problema con mi solicitud. Debe asegurarse de no haber agregado ninguna biblioteca dos veces. Si ha seguido la documentación de firebase https://firebase.google.com/docs/android/setup
Entonces no debe agregar la biblioteca de base de fuego dentro de Android Studio, es decir, archivo-> estructura del proyecto-> nube-> base de fuego
Tienes que hacer solo uno de los dos para usar firebase en tu aplicación de Android.
Al final, limpia y vuelve a ejecutar tu aplicación.
fuente
Puede agregar varias licencias en gradle ver esto
fuente
Creo que necesitas incluir solo estas opciones en build.gradle:
fuente
Seguramente funcionará
fuente