程序类型已存在:com.google.android.gms.common.util.VisibleForTesting

Program type already present: com.google.android.gms.common.util.VisibleForTesting

您好,我遇到以下错误。我搜索了很多,但是 none 的解决方案对我有用。

Caused by: com.android.builder.multidex.D8MainDexList$MainDexListException: com.android.tools.r8.errors.CompilationError: Program type already present: com.google.android.gms.common.util.VisibleForTesting

我的Gradle

dependencies {
    implementation('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
        transitive = true;
    }
    implementation 'com.android.support:multidex:1.0.3'
    implementation files('libs/AdiquityAndroidSDK.jar')
    implementation files('libs/gdx-backend-android.jar')
    implementation files('libs/libGoogleAnalyticsServices.jar')
    implementation files('src/main/jniLibs/gdx.jar')
//    implementation files('src/main/jniLibs/gdx-backend-android.jar')
    implementation 'com.google.android.gms:play-services-ads:15.0.1'
    implementation 'com.facebook.android:facebook-android-sdk:4.33.0'
}

我也用过最新的gms插件

classpath 'com.google.gms:google-services:4.0.1'

使用 gradle-wrapper 4.4 并构建 gradle 3.1.3.

请帮我解决这个问题。

经过大量搜索,得到解决方案。

删除后 implementation files('libs/libGoogleAnalyticsServices.jar') 问题已解决。

问题是具有相同包和文件名的文件出现在两个不同的 jar 中,一个是旧的 google 分析服务 jar。

我们必须解决这个冲突(我已经删除了我的旧 jar,因为它不再需要)并且项目将会构建。

在我的案例中,降级 "play services" 回版本 12 问题已成功修复。

改变

implementation('com.google.android.gms:play-services-gcm:16.0.0') {
        exclude module: 'guava-jdk5'
    }
    implementation ('com.google.android.gms:play-services-maps:16.0.0'){
        exclude module: 'guava-jdk5'
    }

implementation('com.google.android.gms:play-services-gcm:12.0.0') {
        exclude module: 'guava-jdk5'
    }
    implementation ('com.google.android.gms:play-services-maps:12.0.0'){
        exclude module: 'guava-jdk5'
    }