Android Studio - Error:Program type already presen

2019-01-12 06:04发布

问题:

When I try to compile the code, the following error appears on Android Studio 3.0.1

Error:Program type already present: com.squareup.picasso.Action$RequestWeakReference

My gradle code:

  ...
    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'

How do I fix my gradle script to fix the error?

回答1:

Add this to your module build.gradle file

  configurations.all {exclude group: 'com.android.support', module: 'support-v13'}


回答2:

Check the compile version in your App settings. I changed it to the version compatible with the API level I've built my project with. This fixed the problem for me.



回答3:

I just had the same problem so I will share the solution that worked for me. My error was:

Program type already present: org.json.CDL

and it started appearing after I added compile acra to my gradle file. So the solution was to add acra like this:

    compile('ch.acra:acra:4.5.0') {
    exclude group: 'org.json'
}   

So in OP's case the solution would be to find which one of his dependencies already compiles com.squareup.picasso and exclude like in the code above.



回答4:

I faced nightmare of multiple troubles building APK after I upgraded Android Studio to 3.1.2 and targetSdkVersion to 27. This was one of them.

implementation 'me.leolin:ShortcutBadger:1.1.21@aar' 

This line causing build error Program type already present: me.leolin.shortcutbadger.Badger

For now I just commented it out and it compiled smoothly.



回答5:

There is a Library Version Mismatch. if you are using newer version of Android Studio, it will trap error.just Resolve the Version mismatch or Change Compile version and you will be up and running. See the dependencies defined here



回答6:

Ok, maybe it's not your case but this is the message coming out of compilation also in the following scenario

I built an app. Then I modified the app gradle file in such a way to produce an aar file instead of an apk [i.e. apply plugin: 'com.android.library'] in order to move here some of the methods that had to be called by the original app

Then - in the original app - I commented the methods that I moved in the aar file and I added to the app project the aar file produced before

At this point I got the same error

The message Error:Program type already present helped me understanding that I had to rename the package name of the Android Studio project which was building the library because the two shared the same package name. So I renamed it, I built again the aar file and I added again this "new" file to the Android Studio project building the apk

Once done the issue disappeared



回答7:

I came across this error in Android Studio 3.1.2 after I'd added Kotlin support to a Java project, and then removed all the Kotlin files (but left the gradle configuration in place). Removing the Kotlin configuration resolved this issue.



回答8:

This can happen when there's a library version mismatch.

In my case when I updated Google Services dependencies from:

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

to

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

the error went away.



回答9:

For me, this error appeared when my build.gradle file contained an invalid line.

I added a .jar file as library, and the Build failed. I checked the build.gradle file, and somehow it contained two lines:

implementation files('libs/bcprov.jar')
implementation files('bcprov.jar')

Of course, I only added the .jar to the libs folder, so the second line is invalid. After I deleted the second line, the error disappeared.

Hope this will help someone.



回答10:

this happens when you have duplicate dependencies, list all your dependencies with ./gradlew app:dependencies

for example both dagger and robolectric depend on guava, but dagger's latest version uses guava 23+ while robolectric uses 20+, excluding guava from robolectric will solve the issue in this case.