web-dev-qa-db-ja.com

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)

これを解決する方法が誰にありますか。

191
Cyrus

これを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'
      }          
}
279
Shaaban Ebrahim

私の場合は、yourProject/app/build.gradle内のAndroid{}上のパス「META-INF/LICENSE」のみを除外すれば十分でした。ここにあります

packagingOptions {
    exclude 'META-INF/LICENSE'
}

そして、Clean ProjectとRebuild Projectを実行します。

87
Mara

ここの解決策は私を助けませんでした、しかし このリンク

libassmidi.solibgnustl_shared.soのようにAndroidの.soファイルを追加するライブラリがある場合は、パッケージング時に1つだけを選択するよう gradle に指示する必要があります。そうしないと競合が発生します。

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

AndroidプロジェクトでReact Nativeアプリをライブラリとして使用しているときにこの問題が発生していました。それが役に立てば幸い

53
Daniel Reina

似たようなメッセージがありました

エラー:タスク ':app:transformResourcesWithMergeJavaResForDebug'の実行に失敗しました。 OSに依存しないパス 'constant-values.html'を持つファイルが複数見つかりました

それを解決するには、Android Studioでパッケージビュー( 1 )を有効にしてから、ツリーからライブラリを参照し、重複部分( 2 )を探します

それからctrl + alt + f12(またはRMB menu)( 3 ) - そして問題を引き起こしているライブラリを見つけました。問題を引き起こしたlib内のファイルのリストを作成し、それらを Android セクション内のアプリのbuild.gradleファイルに書き込みました。他のオプションは、重複ファイルを含むライブラリを扱うことです

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

enter image description here

25
Dmitriy Chichuk

私は同じ問題を抱えていたと私はこれを試してみました

エラー:OSに依存しないパス 'META-INF/proguard/androidx-annotations.pro'を持つファイルが複数見つかりました

解決策: これを修正するためにしなければならないのは、アプリの 'build.gradle'のAndroid {}セクションにこれを追加することだけです。

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

基本的にgradleがapkファイルをまとめるとき、それはすべてのコンパイル依存関係から内容をコピーします、それは2つの異なるjarファイルからの重複したfile..comingがあるのを見るのに十分知的です。これはa.txtやMETA-INF/DEPENDENCIESのようなファイルです。ファイルが情報提供のみを目的として存在する場合は、以下を使用してこれらのファイルを除外することをお勧めします。

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

あるいは、ファイルがクラスファイルのような必須ファイルで、互いに関連している2つのjar依存関係にまたがって複製されている場合は、より互換性のある方法でこれらのjarの代替を見つけるのが最善です。

18
ank

私は同じエラーに遭遇しました、そして、私はそれが異なるモジュールが異なるパッケージからの同じクラスを含んでいたことが原因であることがわかりました

例えば1つはandroidxパッケージを使用し、もう1つはpre-androidxを使用しました

私は、Android Studioの組み込み機能を使ってpre-androidxモジュールをandroidxに移行することでそれを解決しました:"Refactor - > Migrate to Androidx ..."何も除外せずに。


あなたの状況では、モジュール間に依存関係の不一致があるかどうかをチェックすることができます。

14
Owen Chen

StudioをJava 7からJava 8に更新したところ、この問題が発生しました。それから私はそれをこのように解決しました:

Android {
    defaultConfig {
    }
    buildTypes {
    }
    packagingOptions{
        exclude 'META-INF/rxjava.properties'
    }
}
10
Manasvi

私のアプリ、私はこのような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')

それはうまくいっています。

7
Sandeep Yohans

Android Studioでこのメッセージを取得することに関連するすべての回答を読みました。

OSに依存しないパス「META-INF/LICENSE」で複数のファイルが見つかりました

ただし、この場合、クラスを除外する必要はありません。'META-INF/DEPENDENCIES'を除外するだけです。これは/app/build.gradle内で実行できます。

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

}
4
Jorgesys

私は同様の問題を抱えていました。エラーメッセージが出ました -

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スタジオでは「どこでも検索」のオプションがあります。そこにファイルを書いて検索してください。そこに私はこのファイルの複数のインスタンスを見つけました。だから私は両方のインスタンスをクリックして、ファイルを右クリックして、彼らがAndroidのスタジオで開いたときにその場所を見ることによって彼らの場所を見た。

第二に、私は私がgradleファイルにいくつかの依存関係を持っていることを見つけました。私は以下のコードを使っていました

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

そしてまた私は場所に同じZipパッケージがありました:\ Users\user\AndroidStudioProjects\git\appname\app\libs\google-http-client-1.23!。

だからこれは冗長で、gradleが2つのファイルを見つけている理由です。だから私は私のZipパッケージを削除し、それは私のためのエラーを解決しました。これをしながら注意してください。どれが削除されるべき正しいファイルまたはパッケージであるかを把握する必要があります。

第三に、gradleはまた、この場所にこれらのバグファイルのZipを作成します(少なくとも私にとっては作成したものです) - 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ファイルを削除しました。

それでも混乱している場合は、Androidスタジオの「至る所で検索」をクリックして、そこにあるファイルのインスタンスを見つけてください。そうすれば、そのうちの1つを削除する必要があります。あなたの時間をかけてどれを見つけてください。

2
Vi012

私は同じ問題を抱えていると私はこれを試してみました

エラー: OSに依存しないパス 'META-INF/library_release.kotlin_module'を持つファイルが複数見つかりました

解決策:

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

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

私のために働きました…….

2

これは使用時に起こります

org.jetbrains.kotlinx:kotlinx-coroutines-core:1.2.0

そして次のバージョンで修正されています

org.jetbrains.kotlinx:kotlinx-coroutines-core:1.2.1

1
Vairavan

私は最初にいくつかのネイティブライブラリ(.soファイル)で、次にJava/kotlinファイルでこの問題に直面しました。結果的に、私はソースからのライブラリを含め、推移的な依存関係を通してアーティファクトを参照していました。依存関係ツリーを調べて、冗長なエントリがあるかどうかを確認してください。依存関係ツリーを取得するには./gradlew :app:dependenciesを使用してください。メインモジュール名が異なる場合は、 "app"をあなたのモジュール名に置き換えてください。

1
notsopopularguy

私が見つけた別の解決策。以下のように、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'**
}
0
Sanket Vekariya

デフォルト設定からマルチインデックスを削除し、ビルドエラーログを確認してください。そのログがINotificationクラスと関係がある場合。 Android {}で使用してください

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

これは私を助けます。

0
Harsh Mittal

解決策の下の私のためにあなたはあまりにも助けを得るかもしれない、私はアプリのgradleファイルに以下の行を書く

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