在 gradle:3.0.0 上找到多个文件,其独立于操作系统的路径为“META-INF/ASL2.0”

Posted

技术标签:

【中文标题】在 gradle:3.0.0 上找到多个文件,其独立于操作系统的路径为“META-INF/ASL2.0”【英文标题】:On gradle:3.0.0 More than one file was found with OS independent path 'META-INF/ASL2.0' 【发布时间】:2018-04-07 22:55:47 【问题描述】:

我已将我的 android 工作室更新到 3.0 然后他要求升级到'com.android.tools.build:gradle:3.0.0'

一切都很顺利,直到我决定运行我的项目并且它给了我这个错误

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

发现多个文件具有独立于操作系统的路径“META-INF/ASL2.0”

我的应用 gradle

   android 
    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    useLibrary 'org.apache.http.legacy'
    defaultConfig 
        applicationId "com.test.demo"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    
'

我的图书馆毕业典礼

android 
    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    useLibrary 'org.apache.http.legacy'

    defaultConfig 
        compileOptions 
            sourceCompatibility JavaVersion.VERSION_1_6
            targetCompatibility JavaVersion.VERSION_1_6
        
    

    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        
    
    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'
    

【问题讨论】:

More than one file was found with OS independent path 'META-INF/LICENSE'的可能重复 【参考方案1】:

您应该将build.gradle 添加到应用程序packagingOptions

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'

【讨论】:

我会试试的 已修复,在“无法合并 dex”后出现另一个错误,我进入了 multidex 并且成功了! 嘿!我做了 multiDexEnabled true 并编译了 'com.android.support:multidex:1.0.2' 但仍然无法正常工作..有什么想法吗? :)【参考方案2】:

在尝试其他方法之前先试试这个。

第一:

检查您是否在 build.gradle->dependencies

中设置了此项
implementation fileTree(include: ['*.jar'], dir: 'libs')

如果你在 build.gradle 文件中设置了这个,那么如果你尝试从你的 libs 目录导入库,也要检查这个:

implementation files('libs/...')

如果您的 build.gradle 文件中也有此内容,请将其删除或注释掉,因为您正在尝试再次重新导入该库,结果就是该错误。

【讨论】:

添加这个“实现文件树(包括:['*.jar'],目录:'libs')”对我有用,谢谢!【参考方案3】:

只需添加以下代码即可解决问题

packagingOptions 
    pickFirst  'META-INF/*'

【讨论】:

【参考方案4】:

您可以添加到 packagingOptions 块中,在您的应用程序 build.gradleandroid 块中,

android 
    compileSdkVersion 29
    defaultConfig 
        applicationId "abcd.efgh.com.x"
        minSdkVersion 22
        targetSdkVersion 29
        versionCode 29
        versionName "1.9.2"
    
    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'
    

【讨论】:

以上是关于在 gradle:3.0.0 上找到多个文件,其独立于操作系统的路径为“META-INF/ASL2.0”的主要内容,如果未能解决你的问题,请参考以下文章

Could not find com.android.tools.build:gradle:3.0.0-alpha3

找不到 com.android.tools.build:gradle:3.0.0 [重复]

使用android gradle插件3.0.0比gradle插件2.3.3慢

Could not find com.android.tools.build:gradle:3.3.0.

greenDao的使用

Gradle 3.0.0-alpha1 与 kotlin-android 插件 1.1.2-3 不兼容? [复制]