More than one file was found with OS independent path 'protobuf.meta'

回眸只為那壹抹淺笑 提交于 2019-12-22 08:24:23

问题


I'm seeing some issues with compatibility between com.google.android.gms:play-services-auth:11.6.0 and com.android.support.test.espresso:espresso-core:3.0.1 when used as dependencies on an android library module

I'm getting this error:

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

when I try to execute ./gradlew :myLibrary:connectedAndroidTest

Here's a barebones build.gradle that I've reproduced the problem on:

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

I don't think I can exclude either of these files as the contents is different.


回答1:


This issue occurred because you use two separate imports containing the same file. Your issue is with an external library that may have duplicate contents or was imported twice, to solve this You should put these lines of code inside build.gradle (Module: app).

Add the following lines:

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

Sometimes, it is also possible to completely exclude this file: exclude 'protobuf.meta'

In case of multi-module projects, Android libraries failing to build due to this error on instrumentation tests, might need to include this snippet inside build.gradle.



来源:https://stackoverflow.com/questions/47298895/more-than-one-file-was-found-with-os-independent-path-protobuf-meta

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!