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

Posted

技术标签:

【中文标题】程序类型已存在:com.google.android.gms.common.util.VisibleForTesting -\':app:transformDexArchiveWithExternalLibsDexMergerForDebug\' [重复]【英文标题】:Program type already present: com.google.android.gms.common.util.VisibleForTesting -':app:transformDexArchiveWithExternalLibsDexMergerForDebug' [duplicate]程序类型已存在:com.google.android.gms.common.util.VisibleForTesting -':app:transformDexArchiveWithExternalLibsDexMergerForDebug' [重复] 【发布时间】:2018-10-14 03:14:40 【问题描述】:

每当我尝试在 android Studio 3.1.2 中运行程序时都会收到此错误。

程序类型已存在:com.google.android.gms.common.util.VisibleForTesting Messagekind=ERROR, text=Program type already present: com.google.android.gms.common.util.VisibleForTesting, sources=[Unknown source file], tool name=Optional.of(D8)

我的 gradle 模块应用程序:

buildscript 
repositories 
    google()
    jcenter()

    maven 
        url "https://maven.google.com" // Google's Maven repository
    

dependencies 
    classpath 'com.android.tools.build:gradle:3.1.2'
    classpath 'com.google.gms:google-services:3.2.1'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files

allprojects 
repositories 
    google()
    jcenter()

    maven 
        url "https://maven.google.com"
    
    maven 
        url "https://maven.fabric.io/public"
    

task clean(type: Delete) 
delete rootProject.buildDir

这是我的 Gradle 模块应用程序

apply plugin: 'com.android.application'

android 
compileSdkVersion 27
defaultConfig 
    applicationId "myproject"
    minSdkVersion 19
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

buildTypes 
    release 
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    


compileOptions 
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8

dependencies 
implementation fileTree(dir: 'libs', include: ['*.jar'])
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation'com.android.support:design:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
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'enter code here



// FirebaseUI for Firebase Auth
implementation 'com.firebaseui:firebase-ui-auth:3.3.1'
implementation 'com.google.firebase:firebase-auth:15.0.0'
//Firebase RealTime Database
implementation 'com.google.firebase:firebase-database:15.0.0'
// FirebaseUI for Cloud Storage
implementation 'com.firebaseui:firebase-ui-storage:3.3.1'
implementation 'com.google.firebase:firebase-storage:15.0.0'

//circleimageView
implementation 'de.hdodenhof:circleimageview:2.1.0'

//Libreria utilizada para medir dimension de layout de chat cuando cambia de tamaño
implementation 'net.the4thdimension:android-utils:2.0.4'

//To scale every screen sizes , sp
implementation 'com.intuit.sdp:sdp-android:1.0.5'

//authenticacion para formato de numero de telefono
implementation 'com.googlecode.libphonenumber:libphonenumber:8.4.2'
implementation 'com.weiwangcn.betterspinner:library-material:1.1.0'
implementation 'com.amitshekhar.android:android-networking:1.0.0'

//Volley
implementation 'com.android.volley:volley:1.0.+'
implementation 'org.apache.commons:commons-lang3:3.6'

apply plugin: 'com.google.gms.google-services'

【问题讨论】:

也检查一下:***.com/questions/50182756/… 【参考方案1】:

如果您不使用任何 jar,我通过删除未使用的 jar 或注释此行来解决此问题 实现 fileTree(dir: 'libs', include: ['*.jar'])

【讨论】:

【参考方案2】:

如果将 google play gradle 插件版本更新到最新版本后问题仍然存在,使用 Android Studio 文件搜索在整个项目中搜索给定文件使用相同的包名。问题是具有相同包和文件名的文件存在于两个不同的 jar 中(在我的情况下,一个 jar 是旧的 google 分析服务 jar,它已手动下载并添加为项目中的库)。@987654321 @我们必须解决这个冲突(我已经删除了我的旧 jar,因为它不再需要)并且项目将构建。

【讨论】:

嘿,@Sidharth Sethia 这个库有什么替代品吗? 这为我解决了问题:) 这是我读过的最有用的答案。谢谢。 你不知道这为我节省了多少!!!我整天都在寻找这个问题,这帮助我找到了哪个包有问题!非常感谢!【参考方案3】:

VisibleForTesting.java 是 Support Annotations 库 中的一个类,它会导致该问题,如果您导入了该库的多个版本,您将面临您提到的 D8 投诉,如果您的项目有多个模块尝试在您的 gradle.builds 中使用 api, implmentation 而不是 compile,并尝试仅使用提到的一个版本图书馆,这对我有用!

【讨论】:

不起作用:/还有什么?【参考方案4】:

我做了这里向我建议的更改,但问题仍然存在!!。

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

 dependencies 
implementation fileTree(dir: 'libs', include: ['*.jar'])
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
implementation 'com.google.firebase:firebase-messaging:15.0.2'
implementation 'com.google.firebase:firebase-invites:15.0.1'
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'
 compile 'com.google.firebase:firebase-core:15.0.2'
// FirebaseUI for Firebase Auth

implementation 'com.google.firebase:firebase-auth:15.1.0'
//Firebase RealTime Database
implementation 'com.google.firebase:firebase-database:15.0.1'
// FirebaseUI for Cloud Storage

implementation 'com.google.firebase:firebase-storage:15.0.2'

implementation 'com.google.android.gms:play-services-gcm:15.0.0'

//circleimageView
implementation 'de.hdodenhof:circleimageview:2.1.0'

//Libreria utilizada para medir dimension de layout de chat cuando cambia de tamaño
implementation 'net.the4thdimension:android-utils:2.0.4'

//To scale every screen sizes , sp
implementation 'com.intuit.sdp:sdp-android:1.0.5'

//authenticacion para formato de numero de telefono
implementation 'com.googlecode.libphonenumber:libphonenumber:8.4.2'
implementation 'com.weiwangcn.betterspinner:library-material:1.1.0'
implementation 'com.amitshekhar.android:android-networking:1.0.0'

//Volley
implementation 'com.android.volley:volley:1.0.+'
implementation 'org.apache.commons:commons-lang3:3.6'

应用插件:'com.google.gms.google-services'

【讨论】:

嘿,你解决了吗? 解决这个问题的方法是打开新项目,不要使用最新版本的android和firebase,我的意思是sdkversion 26。 嘿,我们为我们的案例解决了这个问题!原来我们的项目有一个遗留的谷歌分析 jar,它有 com.google.android.gms.common.util.VisibleForTesting,它与 firebase-common 中的那个冲突【参考方案5】:

请更改以下代码行:

implementation 'com.google.firebase:firebase-auth:15.0.0'
implementation 'com.google.firebase:firebase-storage:15.0.0'

implementation 'com.google.firebase:firebase-auth:15.1.0'
implementation 'com.google.firebase:firebase-storage:15.0.2'

更多信息here.

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

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

【讨论】:

你试过我上面的解决方案了吗? 不工作。同样的错误。 试试这个:classpath 'com.google.gms:google-services:3.3.1' 已将 google-services 更新到 4.0.1 仍然无法正常工作:/【参考方案6】:

Firebase Android SDK now have independent version numbers,允许更频繁、更灵活的更新。

将google play gradle插件版本更新到最新版本,目前为3.3.0。

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

【讨论】:

最后我解决了这个问题,创建了新项目,按照这里的建议完成了。不得不说,我们已经在运行的项目,当谷歌更新出现这种自发错误的时候,真是烦人啊!!! 嗨@LilianaJ,如果这个或任何答案解决了您的问题,请点击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。

以上是关于程序类型已存在:com.google.android.gms.common.util.VisibleForTesting -':app:transformDexArchiveWithExternalL的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio - 错误:程序类型已存在

程序类型已存在:android.support.v7.util.AsyncListUtil $ 1

错误:程序类型已存在:android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat

Proguard NoClassDefFoundError

错误:程序类型已存在:android.support.design.widget.CoordinatorLayout$Behavior

程序类型已存在:com.google.android.gms.location.places.zza