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.
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:
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.