Programing

OS 독립 경로 'META-INF / LICENSE'와 함께 둘 이상의 파일이 발견되었습니다.

lottogame 2020. 4. 6. 07:58
반응형

OS 독립 경로 'META-INF / LICENSE'와 함께 둘 이상의 파일이 발견되었습니다.


앱을 빌드 할 때 오류가 발생했습니다.

오류 : ': app : transformResourcesWithMergeJavaResForDebug'작업에 대한 실행이 실패했습니다. OS 독립 경로 'META-INF / LICENSE'와 함께 둘 이상의 파일이 발견되었습니다.

이것은 내 build.gradle 파일입니다

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "cn.sz.cyrus.kotlintest"
        minSdkVersion 14
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        javaCompileOptions{
            annotationProcessorOptions{
                includeCompileClasspath = true
            }
        }
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
 /*       exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'*/
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
    compile 'com.android.support:appcompat-v7:25.3.1'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1'
    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
    testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
    compile 'com.github.GrenderG:Toasty:1.2.5'
    compile 'com.orhanobut:logger:1.15'

    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.umeng.analytics:analytics:latest.integration'
    compile 'ai.api:libai:1.4.8'
    compile 'ai.api:sdk:2.0.5@aar'
// api.ai SDK dependencies
    compile 'com.google.code.gson:gson:2.8.0'
    compile 'commons-io:commons-io:2.4'
    compile 'com.android.support:multidex:1.0.1'
}

그 코드를 내 gradle 파일에 추가 할 때.

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

이 오류는 해결되지만 다른 문제가 발생합니다. 이처럼

java.lang.NoClassDefFoundError: com.squareup.leakcanary.internal.HeapAnalyzerService
at com.squareup.leakcanary.LeakCanary.isInAnalyzerProcess(LeakCanary.java:145)
at cn.sz.cyrus.wemz.TestApplication.onCreate(TestApplication.kt:32)

이 문제를 해결하는 방법은 누구에게 있습니까?


이것을 yourProject/app/build.gradle안에 추가 할 수 있습니다android{}

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

내 경우는에서만 경로 'META-INF / 라이센스'를 제외에 충분했다 yourProject/app/build.gradle내부 android{}. 여기있어

packagingOptions {
    exclude 'META-INF/LICENSE'
}

그런 다음 프로젝트 정리 및 프로젝트 다시 작성을 수행하십시오.


여기의 솔루션은 도움이되지 않지만 이 링크도움 이되었습니다.

안드로이드 .so 파일을 추가하는 라이브러리가있는 경우 – libassmidi.so또는 libgnustl_shared.so– – 포장 할 때 gradle 에 하나만 선택하도록 지시 해야합니다. 그렇지 않으면 충돌이 발생합니다.

android {
  packagingOptions {
    pickFirst 'lib/armeabi-v7a/libassmidi.so'
    pickFirst 'lib/x86/libassmidi.so'
  }
}

Android 프로젝트에서 React Native 앱을 라이브러리로 사용할 때이 문제가 발생했습니다. 그것이 도움이되기를 바랍니다.


비슷한 메시지를 받았습니다

오류 : ': app : transformResourcesWithMergeJavaResForDebug'작업에 대한 실행이 실패했습니다. OS 독립 경로 'constant-values.html'과 함께 둘 이상의 파일이 발견되었습니다.

이 문제를 해결하려면 Android Studio에서 패키지 view ( 1 ) 를 활성화 한 다음 트리를 통해 라이브러리를 찾아 중복 항목을 찾아야합니다 ( 2 )

그런 다음 ctrl + alt + f12 (또는 RMB 메뉴) ( 3 )-문제를 일으킨 라이브러리를 찾았습니다. libs에 파일 목록을 작성하여 문제를 일으켜 android 섹션 의 app 's build.gradle 파일에 썼습니다 . 다른 옵션은 중복 파일을 포함하는 라이브러리를 처리하는 것입니다

packagingOptions {
    exclude 'allclasses-frame.html'
    exclude 'allclasses-noframe.html'
    <..>

여기에 이미지 설명을 입력하십시오


기본적으로 gradle은 apk 파일을 모을 때 모든 컴파일 종속성의 내용을 복사합니다. 두 개의 다른 jar 파일에서 중복 된 파일이 있음을 알 수 있습니다. 이것은 a.txt 또는 META-INF / DEPENDENCIES와 같은 파일 일 수 있습니다. 정보 제공 목적으로 만 파일이 존재하는 경우 아래를 사용하여 이러한 파일을 제외하는 것이 가장 좋습니다.

android{
    packagingOptions {
       exclude 'META-INF/DEPENDENCIES'
    }
}

또는 파일이 클래스 파일과 같은 필수 파일 인 경우 서로 관련된 두 개의 jar 종속성에 걸쳐 복제 된 경우,보다 호환 가능한 버전의 방법으로 이러한 jar의 대안을 찾는 것이 가장 좋습니다.


나는 같은 문제가 있었고 이것을 시도했다.

오류 : OS 독립 경로 'META-INF / proguard / androidx-annotations.pro'에서 둘 이상의 파일을 찾았습니다.

솔루션 : 이 문제를 해결하려면 앱의 'build.gradle'에서 android {} 섹션에 추가하면됩니다.

packagingOptions {
    exclude 'META-INF/proguard/androidx-annotations.pro'
}

이것은 사용할 때 발생합니다

org.jetbrains.kotlinx : kotlinx- 코 루틴-코어 : 1.2.0

그리고 다음 버전에서 수정되었습니다

org.jetbrains.kotlinx : kotlinx- 코 루틴-코어 : 1.2.1


동일한 오류가 발생하여 다른 모듈에서 다른 패키지의 동일한 클래스가 포함되어 있음을 발견했습니다 .

예를 들어 하나는 androidx 패키지를 사용하고 다른 하나는 android-x를 사용했습니다.

Android Studio의 기본 제공 기능인 "Refactor-> Migrate to Androidx ..."사용하여 사전 안드로이드 모듈을 androidx로 마이그레이션하여 문제를 해결했습니다 .


상황에 따라 모듈간에 종속성이 일치하지 않는지 확인할 수 있습니다.


Studio를 Java 7에서 Java 8로 업데이트했는데이 문제가 발생했습니다. 그런 다음이 방법으로 해결했습니다.

android {
    defaultConfig {
    }
    buildTypes {
    }
    packagingOptions{
        exclude 'META-INF/rxjava.properties'
    }
}

내 응용 프로그램에서 다음과 같이 jar 종속성을 추가하고있었습니다.

implementation files('libs/json-simple-1.1.1.jar')

그러나 다음과 같은 첫 번째 종속성으로 인해 이미 추가되었음을 알았습니다.

implementation fileTree(include: ['*.jar'], dir: 'libs')

이 줄은 lib 폴더의 모든 jar을 앱 종속성에 추가합니다.

따라서 추가 종속성을 제거한 후 implementation files('libs/json-simple-1.1.1.jar')

잘 작동합니다.


이 메시지를받는 것과 관련된 모든 답변을 읽었습니다 Android Studio.

OS 독립 경로 'META-INF / LICENSE'와 함께 둘 이상의 파일이 발견되었습니다.

그러나이 경우 클래스를 제외하는 것이 필요하지 않으므로 제외 'META-INF/DEPENDENCIES'하면됩니다 /app/build.gradle.

android{
    ...
    ...
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
    }

}

나는 같은 문제가 있는데 이것을 시도했다.

오류 : OS 독립 경로 'META-INF / library_release.kotlin_module'에서 둘 이상의 파일을 찾았습니다.

해결책:

android {
    packagingOptions {
    exclude 'META-INF/library_release.kotlin_module'
    }
}

https://github.com/WindSekirun/NaraeImagePicker/issues/7

나를 위해 일했다 ....


나는 비슷한 문제가 있었다. 오류 메시지가 나타납니다.

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.

More than one file was found with OS independent path 'javax/annotation/WillCloseWhenClosed.java'

위의 답변 중 일부에서 언급했듯이 아래 코드를 사용하면 작동합니다.

'packagingOptions {
       exclude 'allclasses-frame.html'
    }'

그러나 20 개의 다른 파일에 대해이 오류가 발생했기 때문에 20 개의 파일을 제외 한 후 중지하고 적절한 솔루션을 찾으려고했습니다. 나는 또한 만났다

'Unable to execute dex: Multiple dex files' error.

나는 마침내 이것을 해결했다.

먼저 (내 경우에는 WillCloseWhenClosed.java가 중복 파일 임), android studio에서 'search everywhere'옵션이 있습니다. 거기에서 파일을 작성하고 검색하십시오. 이 파일의 여러 인스턴스를 찾았습니다. 그래서 두 인스턴스를 모두 클릭하고 파일을 마우스 오른쪽 버튼으로 클릭하고 Android Studio에서 열 때 위치를 확인하여 위치를 보았습니다.

둘째, gradle 파일에 종속성이 있음을 알았습니다. 아래 코드를 사용하고있었습니다

dependencies {
    compile 'com.google.api-client:google-api-client:1.23.0'
}

또한 위치 : \ Users \ user \ AndroidStudioProjects \ git \ appname \ app \ libs \ google-http-client-1.23!에 동일한 zip 패키지가 있습니다.

그래서 이것은 중복되었고 gradle이 2 개의 파일을 찾는 이유입니다. 그래서 zip 패키지를 삭제하고 오류가 해결되었습니다. 이 작업을 수행하는 동안 조심하십시오. 삭제할 올바른 파일 또는 패키지가 무엇인지 파악해야합니다.

세 번째로, gradle 은이 위치에 이러한 버그 파일을 압축합니다 (적어도 나를 위해 만들었습니다)-C : \ Program Files \ Android \ Android Studio \ gradle \ m2repository \ com \ google \ code \ findbugs \ jsr305 \ 1.3. 9 \ jsr305-1.3.9.jar!

그래서 여기에서 jsr305-1.3.9.jar 파일을 삭제했습니다.

여전히 혼란 스럽다면 안드로이드 스튜디오에서 '모든 곳에서 검색'으로 이동하여 파일 인스턴스를 찾으십시오. 그중 하나를 삭제해야합니다. 시간을 가지고 어느 것을 알아 내십시오.


나는이 문제에 직면했다. 먼저 기본 라이브러리 (.so 파일)와 java / kotlin 파일이 있습니다. 전이 의존성을 통해 유물을 참조 할뿐만 아니라 소스의 라이브러리를 포함하고있는 것으로 나타났습니다. 종속성 트리를 점검하여 중복 항목이 있는지 확인하십시오. ./gradlew :app:dependencies종속성 트리를 얻는 데 사용하십시오 . 기본 모듈 이름이 다른 경우 "앱"을 모듈 이름으로 바꾸십시오.


기본 설정에서 멀티 덱스를 제거하고 빌드 오류 로그를 확인하십시오. 해당 로그가 INotification 클래스와 관련이있는 경우 이것을 안드로이드에서 사용 {}

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}

이것은 나를 도와줍니다.


아래 솔루션이 작동하면 도움을받을 수도 있습니다. 앱의 gradle 파일에 아래 줄을 썼습니다.

  packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }

내가 찾은 또 다른 해결책. 아래와 같이 gradle에서 동일한 부모 및 자식 라이브러리의 버전이 동일한 지 확인하십시오.

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    **implementation 'com.google.android.gms:play-services-maps:12.0.1'**
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:mediarouter-v7:28.0.0'
    **implementation 'com.google.android.gms:play-services:12.0.1'**
}

유선이지만 프로젝트는 이미 AndroidX로 마이그레이션되었지만 androidX로 다시 마이그레이션 한 후 프로젝트의 일부를 리팩터링하고 문제가 해결되었습니다.


첨가

android.useAndroidX = true

android.enableJetifier = true

gradle.properties 날 위해 일했습니다.

참고 URL : https://stackoverflow.com/questions/44342455/more-than-one-file-was-found-with-os-independent-path-meta-inf-license

반응형