web-dev-qa-db-ja.com

Android St​​udio-エラー:プログラムタイプは既に存在します

コードをコンパイルしようとすると、Android St​​udio 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スクリプトを修正してエラーを修正するにはどうすればよいですか?

26
Marcostox

これをモジュールのbuild.gradleファイルに追加します

  configurations.all {exclude group: 'com.Android.support', module: 'support-v13'}
15
Melad

私はちょうど同じ問題を抱えていたので、私のために働いた解決策を共有します。私のエラーは:

Program type already present: org.json.CDL

gradleファイルにコンパイルacraを追加した後に表示され始めました。そのため、解決策は次のようにacraを追加することでした。

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

そのため、OPの場合の解決策は、依存関係のどれが既にcom.squareup.picassoをコンパイルしているかを見つけ、上記のコードのように除外することです。

6
Stormtrooper

アプリの設定でコンパイルバージョンを確認します。プロジェクトをビルドしたAPIレベルと互換性のあるバージョンに変更しました。これで問題は解決しました。

4
ThomaciousD

Android St​​udioを3.1.2に、targetSdkVersionを27にアップグレードした後、APKを作成する際に複数の問題に直面しました。これはそのうちの1つでした。

implementation 'me.leolin:ShortcutBadger:[email protected]' 

ビルドエラーProgram type already present: me.leolin.shortcutbadger.Badgerを引き起こすこの行

今のところ私はコメントアウトし、スムーズにコンパイルしました。

3
Atul

わかりました、多分それはあなたの場合ではありませんが、これは次のシナリオでもコンパイルから出てくるメッセージです

アプリを作成しました。次に、apkの代わりにaarファイルを生成するように、アプリのgradleファイルを変更しました[つまり、 apply plugin: 'com.Android.library']元のアプリによって呼び出されなければならなかったいくつかのメソッドをここに移動するために

次に-元のアプリで-私はaarファイルで移動したメソッドにコメントし、以前に作成したaarファイルをアプリプロジェクトに追加しました

この時点で同じエラーが発生しました

メッセージError:Program type already presentは、ライブラリを構築しているAndroid Studioプロジェクトのパッケージ名を変更する必要があることを理解するのに役立ちました。2つは同じパッケージ名を共有していました。そこで、名前を変更し、aarファイルを再度ビルドし、この「新しい」ファイルをapkをビルドするAndroid Studioプロジェクトに再度追加しました。

一度問題が消えました

1
Antonino

ライブラリバージョンの不一致があります。 Android St​​udioの新しいバージョンを使用している場合は、error.justをトラップします。バージョンの不一致を解決するか、コンパイルバージョンを変更して、実行します。

以下に定義されている依存関係を参照してください dependencies

1
Kiran Maniya

これは、ライブラリバージョンの不一致がある場合に発生する可能性があります。

私の場合、Googleサービスの依存関係を次から更新しました:

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

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

エラーはなくなりました。

1
crubio

AndroidプロジェクトにKotlinサポートを追加した後、Java St​​udio 3.1.2でこのエラーに遭遇し、すべてのKotlinファイルを削除しました(しかし、gradle構成はそのままにしておきました) )。 Kotlin構成を削除すると、この問題は解決しました。

1
cro

これは、依存関係が重複している場合に発生し、すべての依存関係を./gradlew app:dependenciesでリストします

たとえば、短剣とロボエレクトリックの両方がグアバに依存していますが、ロボエレクトリックがロボエレクトリックからグアバを除外する場合、ロボエレクトリックは20+を使用し、ダガーの最新バージョンはグアバを使用します。

0

ライブラリのビルドバージョンと古いビルドファイルが更新されていない場合に発生します。または、他のライブラリがライブラリに依存しています。私の場合、com.google.gms:google-servicesを更新します

解決策は、プロジェクトフォルダーを開いてbuildフォルダーを削除し、キャッシュを再度開いてクリアすることです(ファイル> Invalidate Caches/Restart)。

0

私にとって、このエラーは、build.gradleファイルに無効な行が含まれている場合に発生しました。

ライブラリとして.jarファイルを追加しましたが、ビルドに失敗しました。 build.gradleファイルを確認しましたが、どういうわけか2つの行が含まれていました。

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

もちろん、.jarをlibsフォルダーに追加しただけなので、2行目は無効です。 2行目を削除すると、エラーが消えました。

これが誰かを助けることを願っています。

0
György Ihász