我有一个构建良好的应用程序,但是当我尝试更新某些Gradle依赖项时就开始失败,而主要的怀疑对象是firebase.
这是我得到的错误:
Caused by:
com.android.builder.multIDex.D8MainDexList$MainDexListException:
com.androID.tools.r8.errors.CompilationError: Program type already
present: com.Google.androID.gms.internal.measurement.zzdz
这是我的项目的git diff,显示了Gradle文件中的差异:
diff --git a/androID/build.gradle b/androID/build.gradleindex 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.gradleindex 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.gradleindex 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.gradleindex 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' }
请注意,其中的某些更改(如minSDKVersion)可以作为错误源丢弃.似乎最有可能与firebase有关.为什么?好吧,在Stackoverflow中还存在其他问题,但是所有这些中提出的解决方案都是将firebase依赖关系更新到最新版本,但是将firebase依赖关系更新到最新版本似乎是导致问题的原因.在我的项目中!使用旧版本,它可以正常运行.
这些是涉及的Gradle脚本的内容(我已经用’com.myapp.ID’替换了实际的applicationID)
:核心
apply plugin: "java"targetCompatibility = 1.8sourceCompatibility = 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" } } }}
:机器人
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 BottOMapply 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 BottOMapply plugin: 'com.Google.gms.Google-services'
最后,这是我项目的结构.与androID相关的最相关的部分是顶部.下面我只展示它与核心模块的关系.
这是一个libGDX游戏,我正在使用IntelliJ IDea,尽管这无关紧要,因为我在命令行中使用./gradlew构建时遇到这些错误.
编辑:我按照TWL的建议将firebase-core从16.0.5降级到16.0.4,并且可以正常工作,因此,我认为这是可以接受的解决方法,至少在firebase家伙发布了firebase-core 16.0.6或与之实际兼容的情况下firebase-ads 17.0.0.问题似乎有效地在于,firebase-ads 17.0.0依赖于导致错误的较旧版本的库.
查看以下依赖项输出:
这是我用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
…(依此类推,所有16.0.3都直接输入)
而对于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 (*)
如您所见,有些条目“ com.Google.androID.gms:play-services-measurement-base:16.0.3-> 16.0.4(*)”尽管我并不擅长解释这些条目,我认为这是造成问题的原因.
解决方法:
好吧,既然所有评论都移到了聊天中,并且我的临时解决方法也在那里,那么这里是:
您的错误消息使我的搜索达到com.android.tools.r8.errors.CompilationError: Program type already present: androidx.annotation.AnimRes
Caused by:
com.androID.builder.multIDex.D8MainDexList$MainDexListException:
com.androID.tools.r8.errors.CompilationError: Program type already
present: ___
该错误表明某个地方存在重复的依赖关系,该依赖关系运行于两个不同的版本.然后的目标是运行./gradlew app:dependencIEs以生成依赖项的树/列表以查找com.Google.androID.gms.internal.measurement.zzdz.问题在于,这是一个模糊的内部私有包,因此无法在列表中直接找到它,但是关键字Measurement只是一个提示.
这使我注意到核心和广告具有相似之处:play-services-measurement-API:[16.0.3]-> 16.0.3(*)和play-services-measurement-sdk-API:16.0.2.通过测试,我发现了两种解决方法:
>将com.Google.firebase:firebase-core:16.0.5降级为16.0.4
>将排除组:“ com.Google.androID.gms”,模块:“ play-services-measurement-sdk-API”添加到广告依赖项
第一种选择可能更安全,因为重新运行./gradlew app:dependencIEs显示play-services-measurement-API和play-services-measurement-sdk-API现在都为16.0.2.
而且我确定Google / Firebase知道了这一点,因为我在https://issuetracker.google.com/issues/119213680处又找到了它.翻译是:错误是zzdz类的重复,zzdz类的存在状态的转换如下.因此,请注意play-services-measurement-sdk-API可能会遇到其他Firebase / GMS库的问题.应该有一个即将发布的修复程序来更新它.
*请注意,即使切换到“ com.Google.firebase:firebase-ads:17.1.0”仍会导致此错误.
总结以上是内存溢出为你收集整理的java-更新Gradle依赖项后生成错误.嫌疑犯#1是火力发源地全部内容,希望文章能够帮你解决java-更新Gradle依赖项后生成错误.嫌疑犯#1是火力发源地所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)