Build errores después de actualizar las dependencias de Gradle. El sospechoso # 1 es firebase
Tengo una aplicación que funciona bien, pero comienza a fallar tan pronto como intento actualizar algunas dependencias de Gradle, mientras que el principal sospechoso es firebase.
Este es el error que recibo:
Causado por: com.android.builder.multidex.D8MainDexList $ MainDexListException: com.android.tools.r8.errors.CompilationError: Tipo de programa ya presente: com.google.android.gms.internal.measurement.zzdz
Y este es el git diff para mi proyecto, que muestra las diferencias en los archivos de Gradle:
diff --git a/android/build.gradle b/android/build.gradle
index 9f63f745..08fda2eb 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -81,8 +81,8 @@ dependencies {
implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
implementation "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
implementation "com.android.billingclient:billing:$playBillingLibVersion"
- implementation "com.google.firebase:firebase-core:16.0.3"
- implementation "com.google.firebase:firebase-ads:15.0.1"
+ implementation "com.google.firebase:firebase-core:16.0.5"
+ implementation "com.google.firebase:firebase-ads:17.0.0"
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.5'
implementation fileTree(include: ['*.jar'], dir: 'libs')
diff --git a/android_common/build.gradle b/android_common/build.gradle
index f8224509..3a5d45e1 100644
--- a/android_common/build.gradle
+++ b/android_common/build.gradle
@@ -19,7 +19,7 @@ android {
androidTest.setRoot('tests')
}
defaultConfig {
- minSdkVersion 15
+ minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
@@ -65,8 +65,8 @@ dependencies {
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"
implementation "com.android.billingclient:billing:$playBillingLibVersion"
- implementation "com.google.firebase:firebase-core:16.0.3"
- implementation "com.google.firebase:firebase-ads:15.0.1"
+ implementation "com.google.firebase:firebase-core:16.0.5"
+ implementation "com.google.firebase:firebase-ads:17.0.0"
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
diff --git a/android_instant_feature/build.gradle b/android_instant_feature/build.gradle
index 30431c11..17c4ef27 100644
--- a/android_instant_feature/build.gradle
+++ b/android_instant_feature/build.gradle
@@ -18,7 +18,7 @@ android {
defaultConfig {
versionCode 4031
versionName "4.1.2.1i"
- minSdkVersion 15
+ minSdkVersion 16
targetSdkVersion 28
multiDexEnabled true
}
@@ -77,8 +77,8 @@ dependencies {
api 'com.android.support:multidex:1.0.3'
implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
implementation "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
- implementation "com.google.firebase:firebase-core:16.0.3"
- implementation 'com.google.android.gms:play-services-instantapps:16.0.0'
+ implementation "com.google.firebase:firebase-core:16.0.5"
+ implementation 'com.google.android.gms:play-services-instantapps:16.0.1'
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
diff --git a/core/build.gradle b/core/build.gradle
index dd2640cf..5694a1da 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -15,7 +15,7 @@ dependencies {
compile group: 'commons-io', name: 'commons-io', version: '2.6'
// https://mvnrepository.com/artifact/commons-codec/commons-codec
compile group: 'commons-codec', name: 'commons-codec', version: '1.11'
- compile 'com.google.code.gson:gson:2.8.2'
+ compile 'com.google.code.gson:gson:2.8.5'
compile group: 'org.apache.commons', name: 'commons-text', version: '1.2'
compile group: 'org.apache.commons', name: 'commons-collections4', version: '4.1'
compile group: 'org.jetbrains', name: 'annotations', version: '16.0.1'
@@ -23,7 +23,7 @@ dependencies {
implementation "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
testCompile 'junit:junit:4.12'
- testCompile 'org.mockito:mockito-core:2.7.22'
+ testCompile 'org.mockito:mockito-core:2.8.9'
testCompile group: 'org.powermock', name: 'powermock-api-mockito2', version: '1.7.3'
testCompile group: 'org.powermock', name: 'powermock-module-junit4', version: '1.7.3'
}
Por favor, tenga en cuenta que algunos de estos cambios, como la minSDKVersion, pueden descartarse como la fuente del error. Parece más probable que esté relacionado con firebase. ¿Por qué? Bueno, entre otras cosas, hay otras preguntas en Stackoverflow en las que ese es el caso, sin embargo, la solución propuesta en todas estas es actualizar las dependencias de Firebase a la última versión,@ pero actualizar las dependencias de Firebase a la última versión es lo que parece estar causando el problema en mi proyecto! Con las versiones anteriores simplemente funciona bien.
Estos son los contenidos de los scripts de Gradle involucrados (he reemplazado el ID de aplicación real con 'com.myapp.id')
:núcle
apply plugin: "java"
targetCompatibility = 1.8
sourceCompatibility = 1.8
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
sourceSets.main.java.srcDirs = ["src/main"]
sourceSets.test.java.srcDirs = ["src/test"]
dependencies {
compile 'commons-io:commons-io:2.6'
compile 'commons-codec:commons-codec:1.11'
compile 'com.google.code.gson:gson:2.8.5'
compile 'org.apache.commons:commons-text:1.2'
compile 'org.apache.commons:commons-collections4:4.1'
compile 'org.jetbrains:annotations:16.0.1'
compile "com.badlogicgames.gdx:gdx:1.9.9-SNAPSHOT"
compile "com.badlogicgames.gdx:gdx-freetype:1.9.9-SNAPSHOT"
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:2.8.9'
testCompile 'org.powermock:powermock-api-mockito2:1.7.3'
testCompile 'org.powermock:powermock-module-junit4:1.7.3'
}
repositories {
mavenCentral()
}
jar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
: android_common
apply plugin: "com.android.feature"
configurations { natives }
android {
baseFeature true
compileSdkVersion 28
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
androidTest.setRoot('tests')
}
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
sourceSets {
all {
manifest.srcFile "AndroidManifest.xml"
}
}
multiDexEnabled true
}
buildTypes {
release {
setMinifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
buildToolsVersion '28.0.2'
lintOptions {
abortOnError false
}
dexOptions {
jumboMode true
}
}
dependencies {
application project(':android')
feature project(':android_instant_feature')
api project(':core')
api 'com.android.support:multidex:1.0.3'
implementation "com.badlogicgames.gdx:gdx-backend-android:1.9.9-SNAPSHOT"
natives "com.badlogicgames.gdx:gdx-platform:1.9.9-SNAPSHOT:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-platform:1.9.9-SNAPSHOT:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-platform:1.9.9-SNAPSHOT:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-platform:1.9.9-SNAPSHOT:natives-x86"
natives "com.badlogicgames.gdx:gdx-platform:1.9.9-SNAPSHOT:natives-x86_64"
implementation "com.badlogicgames.gdx:gdx-freetype:1.9.9-SNAPSHOT"
natives "com.badlogicgames.gdx:gdx-freetype-platform:1.9.9-SNAPSHOT:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-freetype-platform:1.9.9-SNAPSHOT:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:1.9.9-SNAPSHOT:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-freetype-platform:1.9.9-SNAPSHOT:natives-x86"
natives "com.badlogicgames.gdx:gdx-freetype-platform:1.9.9-SNAPSHOT:natives-x86_64"
implementation "com.android.billingclient:billing:dp-1"
implementation "com.google.firebase:firebase-core:16.0.5"
implementation "com.google.firebase:firebase-ads:17.0.0"
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.guava:guava:24.0-android'
}
task copyAndroidNatives() {
file("libs/armeabi/").mkdirs();
file("libs/armeabi-v7a/").mkdirs();
file("libs/arm64-v8a/").mkdirs();
file("libs/x86_64/").mkdirs();
file("libs/x86/").mkdirs();
configurations.natives.files.each { jar ->
def outputDir = null
if (jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a")
if (jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a")
if (jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi")
if (jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64")
if (jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86")
if (outputDir != null) {
copy {
from zipTree(jar)
into outputDir
include "*.so"
}
}
}
}
:android
apply plugin: "com.android.application"
apply plugin: 'io.fabric' // Needed by crashlytics. DO NOT REMOVE.
android {
buildToolsVersion "28.0.2"
compileSdkVersion 28
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ["${project(':android_common').projectDir}/res"]
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
androidTest.setRoot('tests')
}
defaultConfig {
applicationId "com.myapp.id"
versionCode 4032
versionName "4.1.2.1"
minSdkVersion 16
targetSdkVersion 28
multiDexEnabled true
}
dexOptions {
jumboMode true
}
// Proguard configuration
buildTypes {
release {
//minifyEnabled true will turn proguard ON
minifyEnabled true
//proguardFiles let you add your own proguard rules ('proguard-project.txt') in this case, as its already created by gdx-setup
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
productFlavors {
}
lintOptions {
abortOnError false
}
}
task importPuzzles(type: Exec) {
// TODO
}
task run(type: Exec) {
def path
def localProperties = project.file("../local.properties")
if (localProperties.exists()) {
Properties properties = new Properties()
localProperties.withInputStream { instr ->
properties.load(instr)
}
def sdkDir = properties.getProperty('sdk.dir')
if (sdkDir) {
path = sdkDir
} else {
path = "$System.env.ANDROID_HOME"
}
} else {
path = "$System.env.ANDROID_HOME"
}
def adb = path + "/platform-tools/adb"
commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.myapp.id/com.myapp.id.AndroidLauncher'
}
dependencies {
implementation project(":android_common")
api 'com.android.support:multidex:1.0.3'
implementation "com.badlogicgames.gdx:gdx-backend-android:1.9.9-SNAPSHOT"
implementation "com.badlogicgames.gdx:gdx-freetype:1.9.9-SNAPSHOT"
implementation "com.android.billingclient:billing:dp-1"
implementation "com.google.firebase:firebase-core:16.0.5"
implementation "com.google.firebase:firebase-ads:17.0.0"
implementation 'com.crashlytics.sdk.android:crashlytics:2.9.5'
implementation fileTree(include: ['*.jar'], dir: 'libs')
}
// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
: android_instant_feature
apply plugin: "com.android.feature"
android {
// baseFeature true
buildToolsVersion "28.0.2"
compileSdkVersion 28
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ["${project(':android_common').projectDir}/res"]
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
}
defaultConfig {
versionCode 4031
versionName "4.1.2.1i"
minSdkVersion 16
targetSdkVersion 28
multiDexEnabled true
}
dexOptions {
jumboMode true
}
// Proguard configuration
buildTypes {
release {
//minifyEnabled true will turn proguard ON
// minifyEnabled true
//proguardFiles let you add your own proguard rules ('proguard-project.txt') in this case, as its already created by gdx-setup
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
}
debug {}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
productFlavors {
}
lintOptions {
abortOnError false
}
}
task run(type: Exec) {
def path
def localProperties = project.file("../local.properties")
if (localProperties.exists()) {
Properties properties = new Properties()
localProperties.withInputStream { instr ->
properties.load(instr)
}
def sdkDir = properties.getProperty('sdk.dir')
if (sdkDir) {
path = sdkDir
} else {
path = "$System.env.ANDROID_HOME"
}
} else {
path = "$System.env.ANDROID_HOME"
}
def adb = path + "/platform-tools/adb"
commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.myapp.id/com.myapp.id.AndroidLauncher'
}
dependencies {
implementation project(":android_common")
api 'com.android.support:multidex:1.0.3'
implementation "com.badlogicgames.gdx:gdx-backend-android:1.9.9-SNAPSHOT"
implementation "com.badlogicgames.gdx:gdx-freetype:1.9.9-SNAPSHOT"
implementation "com.google.firebase:firebase-core:16.0.5"
implementation 'com.google.android.gms:play-services-instantapps:16.0.1'
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
Finalmente, esta es la estructura de mi proyecto. La parte más relevante ya que está relacionada con Android es la de arriba. A continuación, solo muestro cómo se relaciona con el módulo central.
Este es un juego libGDX y estoy trabajando con IntelliJ Idea, aunque esto no es relevante ya que obtengo estos errores con la compilación ./gradlew en la línea de comandos.
EDIT: degradé firebase-core de 16.0.5 a 16.0.4 según lo sugerido por TWL y funcionó, así que creo que es una solución aceptable, al menos mientras los chicos de firebase lanzan un firebase-core 16.0.6 más o menos realmente compatible con firebase-ads 17.0.0. El problema parece ser efectivamente que firebase-ads 17.0.0 se basa en una versión anterior de la biblioteca que está causando el error.
Mire estas salidas de dependencias:
Esto es lo que obtengo con firebase-core 16.0.4:
$ ./gradlew android_common:dependencies | grep measurement-base
<-------------> 0% EXECUTING [0s]
> :android_common:dependencies
| | | +--- com.google.android.gms:play-services-measurement-base:16.0.3
| | | | +--- com.google.android.gms:play-services-measurement-base:16.0.3
| | +--- com.google.android.gms:play-services-measurement-base:16.0.3
| +--- com.google.android.gms:play-services-measurement-base:16.0.3
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3
| | | +--- com.google.android.gms:play-services-measurement-base:16.0.3
| | | | +--- com.google.android.gms:play-services-measurement-base:16.0.3
| | +--- com.google.android.gms:play-services-measurement-base:16.0.3
| +--- com.google.android.gms:play-services-measurement-base:16.0.3
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3
| | | +--- com.google.android.gms:play-services-measurement-base:16.0.3
| | | | +--- com.google.android.gms:play-services-measurement-base:16.0.3
| | +--- com.google.android.gms:play-services-measurement-base:16.0.3
| +--- com.google.android.gms:play-services-measurement-base:16.0.3
... (y así sucesivamente, todo 16.0.3 directo)
Y esto para firebase-core 16.0.5:
$ ./gradlew android_common:dependencies | grep measurement-base
<-------------> 0% EXECUTING [1s]
> :android_common:dependencies > Resolve dependencies of :android_common:releaseUnitTestRuntimeClasspath
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | | \--- com.google.android.gms:play-services-measurement-base:16.0.3 -> 16.0.4 (*)
| | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4
| | | | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
| | +--- com.google.android.gms:play-services-measurement-base:[16.0.4] -> 16.0.4 (*)
Como puede ver, hay algunas entradas como "com.google.android.gms: play-services-measure-base: 16.0.3 -> 16.0.4 (*)" que, a pesar de que no soy competente en interpretarlas salidas, creo que son la causa del problema.