저는 상용 안드로이드 애플리케이션에서 일하고 있습니다. 또한 다른 라이센스 유형에 따라 라이센스가 부여 된 일부 라이브러리를 사용하고 있습니다.
라이브러리에 속성 메모가있는 “NOTICE”파일이있는 경우 배포 할 때 해당 NOTICE를 포함해야합니다.
(그 중 하나는 예를 들어 Apache License 2.0 에 따라 사용이 허가되었습니다 .)
둘 이상의 라이브러리가 있습니다. 내가 함께 빌드 작업을 수행 할 때 Gradle을 하거나 함께 안드로이드 스튜디오 나는 다음과 같은 빌드 오류를 얻을 :
* 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
지금까지 인터넷과 stackoverflow에서 찾은 답변 build.gradle
은 다음 을 파일 에 추가하여 패키지에서 license.txt (notice.txt 또는 이와 같이 방해 할 수있는 기타 파일)를 제거 할 것을 제안합니다 .
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'
}
예 : Android Studio 0.4 APK META-INF / LICENSE.txt에 복사 된 중복 파일
해당 라이브러리 (예 : Apache License 2.0 )의 라이선스에 따라 라이선스 및 알림 파일이 포함 되어야합니다 .
내 질문 : 라이선스 ( 기술 세부 정보 : 라이선스 텍스트가 연결됨)를 준수하기 위해 라이선스 (예 : license.txt , notice.txt 등) 와 관련된 여러 파일 을 gradle에서 프로젝트에 추가하려면 어떻게해야합니까?
답변
이름을 사용하는 라이선스가 하나만있는 경우 솔루션이 있습니다 license.txt
(읽기 : 모든 license.txt
사본이 동일 함).
packagingOptions {
pickFirst 'META-INF/license.txt'
}
그렇지 않으면 Google은 종속성 라이선스를 관리하는 Gradle 플러그인도 출시했습니다. 를 참조하십시오 여기 . 나는 그것을 시도하지 않았지만 모든 종속성을 집계하고 이러한 모든 라이센스를 표시하는 활동을 생성 할 수있는 것처럼 보입니다.
답변
각 build.gradle 파일에 다음을 추가하십시오.
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'
}
답변
내 응용 프로그램에서 동일한 문제에 직면했습니다. 라이브러리를 두 번 추가하지 않았는지 확인해야합니다. firebase 문서 https://firebase.google.com/docs/android/setup을 따른 경우
그런 다음 android studio ie file-> project structure-> cloud-> firebase 안에 firebase 라이브러리를 추가해서는 안됩니다.
Android 애플리케이션에서 firebase를 사용하려면 둘 중 하나만 수행하면됩니다.
마지막에 앱을 정리하고 다시 실행하십시오.
답변
Gradle을가에서 여러 라이센스를 추가 할 수 있습니다 이 참조
답변
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'
}
}
답변
확실히 작동합니다
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt' }