当我建立我的应用程序,我得到以下错误:

错误:执行失败任务':app:transformResourcesWithMergeJavaResForDebug'。 在OS独立路径'META-INF/LICENSE'中发现了多个文件

这是我的身材。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)

谁有办法解决这个问题?


当前回答

我将Studio从Java 7更新到Java 8,出现了这个问题。然后我是这样解决的:

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

其他回答

你可以在project /app/build中添加这个。Gradle在android{}内。exclude函数将指定的资源添加到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") 
      }          
}

排除函数在7.0.2中被弃用,你应该使用类似这样的函数:

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

这发生在使用

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

并在下一个版本中修复

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

我也有同样的问题,我试过这个

错误:在操作系统独立路径中发现了多个文件 “meta - inf /混淆器/ androidx-annotations.pro”

解决方案: 你所要做的就是在你的应用程序的“build.gradle”中添加android{}部分来解决这个问题。

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

我也有同样的问题,我试过这个

错误: 在OS独立路径'META-INF/library_release.kotlin_module'中发现了多个文件

解决方案:

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

尝试从默认配置中删除multidex,并检查生成错误日志。 如果该日志与INotification类相关。在android{}中使用

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

这对我有帮助。