Estou trabalhando em um aplicativo comercial para Android. Também estou usando algumas bibliotecas licenciadas sob diferentes tipos de licença, algumas delas declarando o seguinte:
Se a biblioteca tiver um arquivo de "AVISO" com notas de atribuição, você deve incluir esse AVISO ao distribuir
(Um deles está licenciado sob a Licença Apache 2.0, por exemplo).
Existe mais de uma biblioteca. Quando faço a compilação com o gradle ou com o Android Studio , obtenho o seguinte erro de compilação:
* 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
As respostas que encontrei até agora na internet e stackoverflow sugerem remover o license.txt (notice.txt ou outros arquivos que possam interferir assim) da embalagem, adicionando ao build.gradle
arquivo o seguinte:
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'
}
Veja, por exemplo: Android Studio 0.4 arquivos duplicados copiados no APK META-INF / LICENSE.txt
De acordo com a licença dessas bibliotecas ( Licença Apache 2.0 por exemplo), os arquivos de licença e aviso devem ser incluídos .
Minha pergunta: Como posso adicionar vários arquivos relacionados ao licenciamento (como license.txt , notice.txt etc.) do gradle em meu projeto para estar em conformidade com as licenças ( detalhes técnicos: os textos das licenças serão concatenados)?
Respostas:
Existe uma solução se você tiver apenas uma licença usando o nome
license.txt
(leia: todas aslicense.txt
cópias são idênticas):Caso contrário, o Google também lançou um plug-in Gradle para gerenciar licenças de dependências. Veja aqui . Não tentei, mas parece que é capaz de agregar todas as dependências e até gerar uma atividade exibindo todas essas licenças.
fonte
jar
arquivoAdicione o seguinte ao respectivo arquivo build.gradle
fonte
Eu enfrentei o mesmo problema com meu aplicativo. Você precisa se certificar de que não adicionou nenhuma biblioteca duas vezes. Se você seguiu a documentação do firebase https://firebase.google.com/docs/android/setup
Então você não deve adicionar a biblioteca do firebase dentro do android studio, ou seja, arquivo-> estrutura do projeto-> nuvem-> firebase
Você precisa fazer apenas um dos dois para usar o firebase em seu aplicativo Android.
No final, limpe e execute novamente seu aplicativo.
fonte
Você pode adicionar várias licenças no gradle, veja isto
fonte
Acho que você precisa incluir apenas estas opções no build.gradle:
fonte
Com certeza vai funcionar
fonte