当我尝试编译代码时,Android Studio 3.0.1上会出现以下错误
Error:Program type already present: com.squareup.picasso.Action$RequestWeakReference
我的gradle代码:
...
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脚本以修复错误?
答案 0 :(得分:12)
将此添加到您的模块build.gradle文件
configurations.all {exclude group: 'com.android.support', module: 'support-v13'}
答案 1 :(得分:5)
我遇到了同样的问题,所以我将分享对我有用的解决方案。我的错误是:
Program type already present: org.json.CDL
它在我将grara文件添加到gradle文件后开始出现。因此解决方案是添加这样的acra:
compile('ch.acra:acra:4.5.0') {
exclude group: 'org.json'
}
所以在OP的情况下,解决方案是找到他的哪个依赖项已经编译了com.squareup.picasso并在上面的代码中排除。
答案 2 :(得分:4)
检查应用程序设置中的编译版本。我将其更改为与我使用的项目构建的API级别兼容的版本。 这解决了我的问题。
答案 3 :(得分:3)
在我将Android Studio升级到3.1.2并将targetSdkVersion
升级到27之后,我面临着构建APK的多重麻烦的噩梦。
implementation 'me.leolin:ShortcutBadger:1.1.21@aar'
此行导致生成错误Program type already present: me.leolin.shortcutbadger.Badger
目前,我只是将其注释掉,并且编译顺利。
答案 4 :(得分:1)
库版本不匹配。如果您使用的是较新版本的Android Studio,则会捕获error.just解决版本不匹配或更改编译版本,您将启动并运行。
请参阅下面定义的依赖项
答案 5 :(得分:1)
好吧,也许不是你的情况,但这也是在以下场景中编译出来的信息
我构建了一个应用程序。然后我修改了应用程序gradle文件以生成aar文件而不是apk [即Error:Program type already present
]以便在此处移动原始应用程序必须调用的一些方法
然后 - 在原始应用程序中 - 我评论了我在aar文件中移动的方法,并在应用程序项目中添加了之前生成的aar文件
此时我得到了同样的错误
消息probabilities = classifier.predict_proba(X_test)
max_probabilities = probabilities.max(axis=1)
order=np.argsort(probabilities, axis=1)
classification=(classifier.classes_[order[:, -1:]])
print(accuracy_score(classification,y_test))
帮助我理解我必须重命名正在构建库的Android Studio项目的包名,因为两者共享相同的包名。所以我重命名了,我再次构建了aar文件,然后我再次将这个“新”文件添加到构建apk的Android Studio项目中
一旦完成,问题就消失了
答案 6 :(得分:1)
如果库版本不匹配,可能会发生这种情况。
就我而言,我更新了Google服务依赖项:
classpath 'com.google.gms:google-services:3.0.0'
到
classpath 'com.google.gms:google-services:3.2.1'
错误消失了。
答案 7 :(得分:1)
在“我的应用程序”中,我添加了这一行,还将该库添加为导入。删除库导入效果很好 从libs文件夹导入所有jar文件的行。
implementation fileTree(include: ['*.jar'], dir: 'libs')
仍然导入此行会导致错误。
implementation(name: 'twitter4j-core-4.0.7', ext: 'jar')
将库删除为导入将解决问题。如果错误仍然存在,请执行构建>清理项目。
更多信息在这里找到: https://developer.android.com/studio/build/dependencies#duplicate_classes
答案 8 :(得分:0)
在我将Kotlin支持添加到Java项目后,我在Android Studio 3.1.2中遇到了这个错误,然后删除了所有Kotlin文件(但保留了gradle配置)。删除Kotlin配置解决了这个问题。
答案 9 :(得分:0)
对我来说,当我的build.gradle文件包含无效行时,就会出现此错误。
我添加了一个.jar文件作为库,并且构建失败。我检查了build.gradle文件,并以某种方式包含两行:
implementation files('libs/bcprov.jar')
implementation files('bcprov.jar')
当然,我只将.jar添加到libs文件夹中,因此第二行无效。删除第二行后,错误消失了。
希望这会对某人有所帮助。
答案 10 :(得分:0)
当您有重复的依赖项时,会发生这种情况,并用./gradlew app:dependencies
列出所有依赖项
例如dagger和robolectric都依赖于番石榴,但是dagger的最新版本使用guava 23+,而robolectric使用20+,从robolectric中排除番石榴将解决此问题。
答案 11 :(得分:0)
当您更新库构建版本并且旧的构建文件不清楚时,就会发生这种情况。或其他库依赖于该库。就我而言,我更新了com.google.gms:google-services
解决方案是打开您的项目文件夹并删除build
文件夹,然后重新打开并清除缓存,文件> Invalidate Caches/Restart
。
答案 12 :(得分:-3)
答案很简单:
转到“构建”>“重建项目”