Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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.

like image 373
AJD Avatar asked Nov 15 '17 03:11

AJD


1 Answers

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.

like image 139
T.Binyam Avatar answered Oct 13 '22 02:10

T.Binyam