发现多个文件具有与操作系统无关的路径“protobuf.meta”

2024-05-03

我发现一些兼容性问题com.google.android.gms:play-services-auth:11.6.0 and com.android.support.test.espresso:espresso-core:3.0.1当用作 Android 库模块的依赖项时

我收到此错误:

Execution failed for task ':mylibrary:transformResourcesWithMergeJavaResForDebugAndroidTest'.   
More than one file was found with OS independent path 'protobuf.meta'

当我尝试执行时./gradlew :myLibrary:connectedAndroidTest

这是一个准系统的 build.gradle,我在其中重现了问题:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 26



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

}

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

    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.google.android.gms:play-services-auth:11.6.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

我认为我无法排除这些文件中的任何一个,因为内容不同。


出现此问题的原因是您使用了包含同一文件的两个单独导入。您的问题在于外部库可能具有重复的内容或导入了两次,要解决此问题,您应该将这些代码行放入其中构建.gradle(模块:app).

添加以下行:

android {
    // [...]
    packagingOptions {
        pickFirst 'protobuf.meta'
    }
}

有时,也可以完全排除该文件:exclude 'protobuf.meta'

在多模块项目的情况下,Android 库由于仪器测试中的此错误而无法构建,可能需要在其中包含此代码片段构建.gradle.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

发现多个文件具有与操作系统无关的路径“protobuf.meta” 的相关文章

随机推荐