programing

OS 독립 경로 'META-INF/LICENSE'에서 두 개 이상의 파일이 발견되었습니다.

easyjava 2023. 6. 13. 22:52
반응형

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

이 코드를 내 build.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{}제외 함수는 명명된 리소스를 APK에 패키지되지 않은 리소스 목록에 추가합니다.

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")
        exclude("META-INF/*.kotlin_module") 
      }          
}

exclude함수는 7.0.2에서 더 이상 사용되지 않으며 다음과 유사한 방법을 사용해야 합니다.

android {
   ...
   packagingOptions {
       resources.excludes.add("META-INF/*")
   }
}

에는 'META-INF/DEPENCYNS'의 경로 'META-INF했습니다.yourProject/app/build.gradle東京의 android{} 있습니다.여기 있어요.

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
}

그런 다음 프로젝트 정리 및 프로젝트 재구성을 수행합니다.

여기에 있는 해결책들은 저에게 도움이 되지 않았지만, 링크는 도움이 되었습니다.

Android 파일 Android .so 추부라는하리있가같다다러다습음)을 추가하는 .libassmidi.so또는libgnustl_shared.so포장할 때 하나만 고르라고 그래들에게 말해야 해요, 그렇지 않으면 갈등이 생길 거예요.

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

안드로이드 프로젝트에서 React Native 앱을 라이브러리로 사용할 때 이 문제가 발생했습니다.

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

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

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

여러 모듈 앱 환경에서 작업할 때 비슷한 문제에 직면한 적이 있습니다.

오류: ':app:transformResourcesWithMergeJavaResForDebug' 작업에 대해 실행하지 못했습니다.OS 독립 경로 'META-INF/AL2.0'에서 두 개 이상의 파일이 발견되었습니다.

이 문제는 저의 몇몇 모듈에 의해 보고되고 있었고 위의 해결책 중 어느 것도 이 문제를 해결하지 못했습니다.알고 보니 제가 사용하던 다른 라이브러리에 이미 포함되어 있는 META-INF/AL2.0을 포함하고 있는 것처럼 보이는 버전의 코루틴 1.3.6을 사용하고 있었습니다.이 문제를 해결하기 위해 실패한 모듈의 build.gradle에 다음 코드 스니펫을 추가했습니다.

configurations.all {
    resolutionStrategy {
        exclude group: "org.jetbrains.kotlinx", module: "kotlinx-coroutines-debug"

    }
}

여러 모듈에서 발생한 일이기 때문에, 저는 그것을 옮겼습니다.resolutionStrategy내 프로젝트 수준의 build.gradle 코드입니다.그 후 모든 것이 작동했습니다.

유사한 메시지가 있음

오류: ':app:transformResourcesWithMergeJavaResForDebug' 작업에 대해 실행하지 못했습니다.OS 독립 경로가 '상수 값'인 파일이 두 개 이상 발견되었습니다.html'

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

그런 다음 ctrl+alt+f12(또는 RMB 메뉴)(3) - 문제를 일으킨 라이브러리를 찾았습니다.문제의 원인이 된 립 안의 파일 목록을 만들고 안드로이드 섹션 에 있는 앱의 build.gradle 파일에 썼습니다.다른 옵션은 중복 파일이 포함된 라이브러리를 처리하는 것입니다.

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

여기에 이미지 설명 입력

문서 및 정보 목적으로만 존재하는 모든 메타정보 파일을 제외하는 것이 완벽하게 안전합니다.

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

출처: https://stackoverflow.com/a/49101232/13093413

Android{} 내부의 앱 수준 Gradle 파일에서 다음을 추가합니다.

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'
    exclude("META-INF/*.kotlin_module") 
} 

     

Gradle 7.2 이상의 경우 앱 추가 Gradle 파일

android {
  
   packagingOptions {
       resources.excludes.add("META-INF/*")
   }


}

사용할 때 발생하는 문제

기관 제트 두뇌kotlinx:novlinx-coroutine-core:1.2.0

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

기관 제트 두뇌kotlinx:novlinx-coroutine-core:1.2.1

저도 같은 문제를 겪고 있었고 이것을 시도했습니다.

오류: OS 독립 경로 'METa-INF/proguard/androidx-annotations.pro '에서 두 개 이상의 파일이 발견되었습니다.

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

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

동일한 오류가 발생했는데, 다른 모듈에 다른 패키지의 동일한 클래스가 포함되어 있기 때문에 발생한 오류입니다.

예: 하나는 중고 안드로이드x 패키지이고, 다른 하나는 프리 안드로이드x 패키지입니다.

Android Studio의 내장 기능인 "Refactor --> Migrate to Androidx"를 사용하여 Pre-Androidx 모듈을 Androidx로 마이그레이션하여 해결했습니다.하나도 빼놓지 않고


사용자의 경우 모듈 간에 종속성 불일치가 있는지 확인할 수 있습니다.

는 이 것과 을 이메시받것모읽에서 .Android Studio:

OS 독립 경로 'META-INF/LICENSE'에서 두 개 이상의 파일이 발견되었습니다.

하지만 이 경우에는 수업을 제외할 필요가 없습니다, 우리는 단지 제외하기만 하면 됩니다.'META-INF/DEPENDENCIES'이것은 내부에서 수행될 수 있습니다./app/build.gradle:

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

}

@Johnny Lambada 및 @Shaaban Ebrahim이 제공한 답변을 기반으로 합니다.

중첩된 파일을 제외하기 위해 다음을 사용했습니다.

    packagingOptions {
        resources.excludes.add("META-INF/**/*")
    }

PS: 동일한 답변으로 스팸을 보내는 것이 아니라, 다음과 같은 오류가 발생하면 제안하는 것입니다.

4 files found with path 'META-INF/gradle/incremental.annotation.processors'.

는 중된디리에오류감참종고설다고니정을 사용하여 했습니다.kotlin-dsl

내 앱에서 다음과 같은 병 종속성을 추가했습니다.

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

잘 작동하고 있습니다.

스튜디오를 자바 7에서 자바 8로 업데이트했는데 이런 문제가 발생했습니다.그런 다음 저는 이렇게 해결했습니다.

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

나를 위한 이 일

packagingOptions {
   exclude 'META-INF/*'
}

추가 중

Android.use AndroidX=true

Android.enableJetifier=true

gradlel. 속성은 나에게 효과가 있었습니다.

이 오류는 AndroidX 대신 지원 라이브러리를 추가함으로써 발생합니다.다음 중 하나를 사용해야 합니다.

Android X의 경우:

dependencies {
    def multidex_version = "2.0.1"
    implementation 'androidx.multidex:multidex:$multidex_version'
}

AndroidX를 사용하지 않는 경우:

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}

또한 매니페스트에서는 "안드로이드" 대신 응용 프로그램 클래스 이름을 사용합니다.support.multidex.응용 프로그램 태그의 "MultiDexApplication"(내 응용 프로그램 클래스 이름은 G):

실수:

<application
            android:name="android.support.multidex.MultiDexApplication" >
        ...
</application>

오른쪽:

<application
            android:name=".G" >
        ...
</application>

요구 하기 위해 도 있습니다( 아언급않라요사따구다있항직파니습수사병나거용하할합라에을일이스로센지므되았으▁use▁just▁since다있아니or직▁to▁you▁altern습▁the▁files▁require수▁merge'▁in▁stayatively▁may,사를 사용).pickFirst다니엘 레이나가 언급한 바와 같이).

packagingOptions {
    merge "META-INF/LICENSE"
    merge "META-INF/AL2.0"
    merge "META-INF/LGPL2.1"
}

참조: Gradle API 4.2 패키징 옵션

저도 비슷한 문제가 있었습니다.오류 메시지를 받고 있었습니다.

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.

저는 마침내 이것을 해결했습니다.

먼저(내 경우처럼 WillClose)닫혔을 때.java는 중복 파일이었습니다), 안드로이드 스튜디오에서 '어디서나 검색' 옵션이 있습니다.거기에 파일을 쓰고 검색합니다.이 파일의 여러 인스턴스를 찾았습니다.그래서 저는 두 인스턴스를 모두 클릭했고 파일을 마우스 오른쪽 버튼으로 클릭하여 위치를 확인했고 안드로이드 스튜디오에서 열었을 때 위치를 확인했습니다.

두 번째로, 저는 gradle 파일에 의존성이 있다는 것을 알게 되었습니다.나는 아래 코드를 사용하고 있었습니다.

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

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

그래서 이것은 중복되었고 그것이 gradle이 2개의 파일을 찾는 이유입니다.그래서 우편물을 지웠더니 오류가 해결되었습니다.이 작업을 할 때는 주의해야 합니다.삭제할 올바른 파일 또는 패키지를 파악해야 합니다.

셋째, Gradle은 또한 이 위치에서 이러한 버그 파일의 zip을 만듭니다(적어도 저는 만들었습니다) - C:\Program Files\안드로이드\Android Studio\gradle\m2repository\com\google\code\findbugs\jsr305\1.3.9\jsr305-1.3.9.jar!

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

여전히 혼란스럽다면 안드로이드 스튜디오에서 '어디서나 검색'을 하고, 거기서 파일의 인스턴스를 찾으면 그 중 하나를 삭제해야 합니다.천천히 생각해 보세요.

저도 같은 문제를 겪고 있고 이것을 시도했습니다.

오류: OS 독립 경로 'META-INF/library_release'에서 파일을 두 개 이상 찾았습니다.코틀린_코틀린'

솔루션:

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

나를 위해 일했습니다.Android{} 블록 내에서 앱의 build.gradle에 추가합니다.

packagingOptions {
    exclude 'META-INF/AL2.0'
    exclude 'META-INF/LGPL2.1'
}

Gradle 7.2 이상에서는 다음과 같은 문제를 해결할 수 있습니다.

의 신의에app/build.gradleandroid슬라이드:

  packagingOptions {
        resources.excludes.add("META-INF/notice.txt")
        resources.merges.add("META-INF/LICENSE")
        resources.merges.add("META-INF/AL2.0")
        resources.merges.add("META-INF/LGPL2.1")
    }

이것을 build.gradle(Module AppName) 안에 넣습니다.

android {
   // ....
   packagingOptions{
     pickFirst "androidsupportmultidexversion.txt"
  }
}

처음에는 일부 네이티브 라이브러리(.so 파일)와 Java/kotlin 파일에서 이 문제에 직면했습니다.결과적으로 저는 과도 의존성을 통해 유물을 참조할 뿐만 아니라 출처의 라이브러리를 포함하고 있었습니다.종속성 트리를 확인하여 중복 항목이 있는지 확인합니다.사용하다./gradlew :app:dependencies종속성 트리를 가져옵니다.메인 모듈 이름이 다른 경우 "app"을 모듈 이름으로 대체합니다.

기본 구성에서 다중 인덱스를 제거하고 빌드 오류 로그를 확인합니다.해당 로그가 INNotification 클래스와 관련이 있는 경우.Android {}에서 사용

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

도움이 됩니다.

이 문제에 대한 SO에 대한 많은 답변에서 추가할 것을 제안했습니다.exclude 'META-INF/DEPENDENCIES'그리고 다른 일부 제외.하지만 이것들 중 어느 것도 저에게 효과가 없었습니다.는 이렇습니다 경우시나다같았음습다니과제는오리다▁in니같.

저는 이 독립성을 추가했습니다.

implementation 'androidx.annotation:annotation:1.1.0'

또한 gradle.properties에 다음을 추가했습니다.

android.useAndroidX=true

빌드 오류 'cannot find symbol class nullable'이 발생하여 이에 대한 해결책으로 다음과 같은 답변을 추가했습니다.

하지만 결국 오류가 발생했습니다.

 More than one file was found with OS independent path 'androidsupportmultidexversion.txt'

아니요.exclude나를 위해 일하고 있었습니다.마지막으로 위에 추가된 행을 단지 의심에서 제거했습니다(Solved 'could not find symbol class nullable' 대체 방법). 그리고 마침내 "OS에서 두 개 이상의 파일을 찾았습니다..." 빌드 오류를 제거했습니다.시간을 낭비했어요.하지만 마침내 그것을 없앴습니다.

만약 당신이 이 문제를 가지고 있고 당신이.gradle .jar dependency다음과 같이:

implementation group: 'org.mortbay.jetty', name: 'jetty', version: '6.1.26'

예외가 일치하고 해결될 때까지 버전을 간격으로 지정하고 이 스레드의 최상의 답변을 적용합니다.`

멀티 모듈 프로젝트로 작업할 경우 에스프레소 테스트 중에 이 문제가 발생하면 패키징 옵션 코드를 각 그래들 파일에 추가해야 합니다.저의 경우, 각 Gradle 파일에 대해 아래 코드를 추가했습니다.

packagingOptions {
    exclude 'META-INF/lib_release.kotlin_module'
}

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

반응형