IT

APK META-INF / LICENSE.txt에 복사 된 Android Studio 0.4 두 파일

lottoking 2020. 7. 25. 10:21
반응형

APK META-INF / LICENSE.txt에 복사 된 Android Studio 0.4 두 파일


Studio를 0.3.7에서 0.4.0으로 업데이트 한 후 프로젝트를 할 수 없습니다. stackoverflow에 대한 해결책을 찾았습니다 : 파일 복사 (Android Studio 0.4.0)

0.7. +를 gradle로 업데이트하기 프로젝트를 업데이트했지만 다음 어디에 배치할지 모르겠습니다.

android {

    packagingOptions {
       exclude 'META-INF/LICENSE.txt'
    }
}

내 logcat : 로그

Execution failed for task ':Prog:packageDebug'.
> Duplicate files copied in APK META-INF/LICENSE.txt
    File 1: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar
    File 2: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar

PS 우분투에서 개발 13.04


의존성을 맨 위에 마지막에 packageOptions를 넣는 것이 나를 위해 일했습니다.

apply plugin: 'android'. 

여기 앱 폴더의 전체 build.gradle이 있습니다.

dependencies {
    compile 'com.android.support:support-v4:+'
    compile files('libs/apache-mime4j-0.6.jar')
    compile files('libs/httpmime-4.0.jar')
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 10
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-    rules.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'
    }
}

편집 : 거의 모든 OS에있는 프로젝트에 "라이센스 사본을 포함"할 의무가 포함됩니다. 즉, 모든 OS의 사본을 포함해야합니다. gradle에서 "제외"하면 위반하게됩니다.

프로젝트에서 제외하는 것이 최선의 선택이 아닐 수 있습니다. 정보에 대해 RS에게 감사합니다.


주의!! 오픈 소스 라이선스 위반 가능성.

위에서 제안한대로 license.txt 파일을 제외하면 소스에 추가하는 데 동의하는 오픈 소스 라이선스의 공통 지점이므로 일부 오픈 소스 라이선스를 위반할 수 있습니다. 오픈 소스 라이선스를 더 잘 확인하십시오.

업데이트 : 더 나은 솔루션이있을 때까지

packagingOptions {
   pickFirst  'META-INF/license.txt'
}

이와 같이 최소한 라이센스 의무의 일부를 이행합니다.


그냥 추가

android {
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
    }
}

build.gradle에서


다음 코드를 추가하여 수정할 수 있습니다 project/app/build.gradle.

android {
    // Fixed build error : Duplicate files copied in APK META-INF/xxx
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE.txt'
    }
}

gradle의 새 버전에 따라 동일한 문제에 직면했습니다. build.gradle 텍스트 형식 아래 는 나를 위해 작동합니다.

내 libs 폴더에 두 개의 jackson jar가 있습니다.

android {
         compileSdkVersion 21
         buildToolsVersion "21.1.2"

         defaultConfig {
            applicationId "com.omtlab.myapplication"
            minSdkVersion 14
            targetSdkVersion 21
            versionCode 1
            versionName "1.0"
         }
         buildTypes {
             release {
                 minifyEnabled false
                 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
         }
         packagingOptions {
            exclude 'libs/jackson-core-asl-1.9.13.jar'
            exclude 'libs/jackson-mapper-asl-1.9.13.jar'
            exclude 'META-INF/ASL2.0'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/NOTICE'
         }
}

dependencies {
    //compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile files('libs/jackson-core-asl-1.9.13.jar')
    compile files('libs/jackson-mapper-asl-1.9.13.jar')
}


첨가:

packagingOptions {
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
}

나를 위해 일했습니다. biniam_Ethiopia의 솔루션은 아마도 가장 안전합니다.


이 코드를 삽입하는 동안

android{

packagingOptions{
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
 }
}

SURE도하지 의 경우 오류 가 표시되고

> APK META-INF / LICENSE.txt에 복사 된 중복 파일

그런 다음 추가

 android{

packagingOptions{
    exclude 'META-INF/LICENSE.txt'
 }

}

경우에 오류 가 보이고

> APK META-INF / LICENSE에 복사 된 중복 파일

그런 다음 추가

 android{

packagingOptions{
    exclude 'META-INF/LICENSE'
 }

}

경우에 오류 가 보이고

> APK META-INF / license.txt에 복사 된 중복 파일

그런 다음 추가

 android{

packagingOptions{
    exclude 'META-INF/license.txt'
 }

}

짧은 텍스트로 CASE와 문서 FORMAT (.txt)은 매우 중요합니다.

(이 오류는 Android Studio 1.1.0에도 있습니다.)


문제를 해결하는 데 도움이됩니다.

packagingOptions {
    exclude 'META-INF/ASL2.0'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/DEPENDENCIES'
}

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'
}

build.gradle 파일 및 syn 프로젝트 추가


2를 추가합니다.

android{

packagingOptions{
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/LICENSE'
 }

}

비슷한 오류가 발생하여 packingOptions()exclude기능 없이 해결했습니다 . 두 개의 종속성을 추가했지만 하나는 첫 번째의 하위 그룹이었습니다. 이로 인해 오류가 발생했으며 그중 하나를 제거하면 깨끗한 빌드를 얻었습니다. 종속성 블록 내에서 유사한 오류를 확인하는 것이 좋습니다.


다음을 사용 java-jwt하고 jackson-core함께 사용할 :

exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-annotations/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.properties")
exclude("META-INF/maven/com.fasterxml.jackson.core/jackson-databind/pom.xml")

이것은 매우 나쁜 습관 일 수 있지만 여러 개의 큰 라이브러리를 포함하는 경우 수백 가지 종류의 충돌을 통해 작업 할 수 있습니다.

다음은 이러한 경우에 대한 매우 간단한 수정 사항입니다.

android { 
    ....
    packagingOptions {
        // Allow the compilation process to choose the dependencies for us.
        pickFirst "**"
    }
}

참고 URL : https://stackoverflow.com/questions/20827885/android-studio-0-4-duplicate-files-copied-in-apk-meta-inf-license-txt

반응형