Android Studio - 错误:程序类型已存在
Posted
技术标签:
【中文标题】Android Studio - 错误:程序类型已存在【英文标题】:Android Studio - Error:Program type already present 【发布时间】:2018-06-29 07:43:05 【问题描述】:当我尝试编译代码时,android Studio 3.0.1 出现以下错误
Error:Program type already present: com.squareup.picasso.Action$RequestWeakReference
我的毕业代码:
...
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'
compile 'com.android.support:support-v4:26.1.0'
compile 'com.android.support:support-vector-drawable:26.1.0'
compile 'com.android.support.constraint:constraint-layout:1.1.0-beta4'
compile 'com.google.firebase:firebase-messaging:11.8.0'
compile 'com.google.firebase:firebase-ads:11.8.0'
compile 'com.google.gms:google-services:3.1.0'
compile 'com.google.android.gms:play-services:11.8.0'
compile 'com.squareup.picasso:picasso:2.5.2'
testCompile 'junit:junit:4.12'
apply plugin: 'com.google.gms.google-services'
如何修复我的 gradle 脚本以修复错误?
【问题讨论】:
我修复了我的 libs 文件夹中的删除 jar 包。 哪个jar包? @Ezra 他通过两种方式将毕加索添加到他的图书馆,他们发生了冲突。我在另一个图书馆犯了这个错误 【参考方案1】:将此添加到您的模块 build.gradle 文件中
configurations.all exclude group: 'com.android.support', module: 'support-v13'
【讨论】:
它奏效了!但对我来说,将 v13 更改为 v4 进行轻微更改【参考方案2】:我刚刚遇到了同样的问题,所以我将分享对我有用的解决方案。我的错误是:
Program type already present: org.json.CDL
在我将 compile acra 添加到我的 gradle 文件后,它开始出现。所以解决方案是像这样添加 acra:
compile('ch.acra:acra:4.5.0')
exclude group: 'org.json'
所以在 OP 的情况下,解决方案是找出他的哪个依赖项已经编译了 com.squareup.picasso 并像上面的代码一样排除。
【讨论】:
感谢您的帖子。对我来说,这是 DavidWebb 图书馆:- github.com/hgoebl/DavidWebb 它对我有用..我还用“实现”替换了“编译”【参考方案3】:在您的应用设置中检查编译版本。我将其更改为与我构建项目的 API 级别兼容的版本。 这解决了我的问题。
【讨论】:
【参考方案4】:在将 Android Studio 升级到 3.1.2 并将targetSdkVersion
升级到 27 后,我面临构建 APK 的多重麻烦的噩梦。这就是其中之一。
implementation 'me.leolin:ShortcutBadger:1.1.21@aar'
此行导致构建错误Program type already present: me.leolin.shortcutbadger.Badger
目前我只是将其注释掉,编译顺利。
【讨论】:
【参考方案5】:好吧,也许这不是你的情况,但这也是在以下场景中编译出来的消息
我构建了一个应用程序。然后我修改了应用程序 gradle 文件以生成 aar 文件而不是 apk [即apply plugin: 'com.android.library'
] 为了将一些必须由原始应用程序调用的方法移到这里
然后 - 在原始应用程序中 - 我评论了我在 aar 文件中移动的方法,并将之前生成的 aar 文件添加到应用程序项目中
此时我得到了同样的错误
消息Error:Program type already present
帮助我理解我必须重命名正在构建库的 Android Studio 项目的包名,因为这两个项目共享相同的包名。所以我重命名了它,我再次构建了 aar 文件,并将这个“新”文件再次添加到构建 apk 的 Android Studio 项目中
完成后问题就消失了
【讨论】:
【参考方案6】:当您更新库构建版本并且旧的构建文件不清楚时会发生这种情况。或者其他库依赖于该库。就我而言,我更新com.google.gms:google-services
解决方法是打开你的项目文件夹并删除build
文件夹并重新打开并清除缓存,文件>Invalidate Caches/Restart
。
【讨论】:
【参考方案7】:库版本不匹配。如果您使用的是较新版本的 Android Studio,它将捕获错误。只需解决版本不匹配或更改编译版本即可。
请参阅下面定义的依赖项
【讨论】:
【参考方案8】:在我将 Kotlin 支持添加到 Java 项目后,我在 Android Studio 3.1.2 中遇到了这个错误,然后删除了所有 Kotlin 文件(但保留了 gradle 配置)。删除 Kotlin 配置解决了这个问题。
【讨论】:
【参考方案9】:当库版本不匹配时会发生这种情况。
就我而言,当我从以下位置更新 Google 服务依赖项时:
classpath 'com.google.gms:google-services:3.0.0'
到
classpath 'com.google.gms:google-services:3.2.1'
错误消失了。
【讨论】:
【参考方案10】:在我的应用程序中,我添加了这一行并将这个库添加为导入。删除库导入会很好用 从 libs 文件夹导入所有 jar 文件的行。
implementation fileTree(include: ['*.jar'], dir: 'libs')
我仍然在导入此行会导致错误。
implementation(name: 'twitter4j-core-4.0.7', ext: 'jar')
删除库作为导入将解决问题。如果错误仍然没有,请执行 build > Clean Project。
更多信息在这里找到: https://developer.android.com/studio/build/dependencies#duplicate_classes
【讨论】:
【参考方案11】:对我来说,当我的 build.gradle 文件包含无效行时出现此错误。
我添加了一个 .jar 文件作为库,但构建失败。我检查了 build.gradle 文件,不知何故它包含两行:
implementation files('libs/bcprov.jar')
implementation files('bcprov.jar')
当然,我只是将.jar添加到libs文件夹中,所以第二行无效。删除第二行后,错误消失了。
希望这会对某人有所帮助。
【讨论】:
【参考方案12】:当您有重复的依赖项时会发生这种情况,请使用 ./gradlew app:dependencies
列出所有依赖项
例如 dagger 和 robolectric 都依赖于 guava,但是 dagger 的最新版本使用 guava 23+ 而 robolectric 使用 20+,从 robolectric 中排除 guava 将解决这种情况下的问题。
【讨论】:
【参考方案13】:答案很简单:
转到构建 > 重建项目
【讨论】:
以上是关于Android Studio - 错误:程序类型已存在的主要内容,如果未能解决你的问题,请参考以下文章
项目已包含具有此名称的模块 - Android Studio
android studio 虚拟机adb.exe已停止工作的处理
错误:程序类型已存在:android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat