web-dev-qa-db-ja.com

エラー:プログラムの種類は既に存在します:Android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat

Android St​​udio 3.1にアップグレードした後、ビルド中に次のエラーが発生し始めました。プロジェクトはmultidexを使用し、エラーで気付くように、DXはデフォルトで有効になっています。何が起こっているのかを理解するために依存関係グラフをチェックしようとしましたが、今のところ何の手掛かりもありません。興味深いことに、これは私のマシンでのみ失敗します。再インストールなど、すべてをクリーンアップしましたが、何も機能しませんでした。

誰もが同じ問題を抱えていましたが、どのように解決しましたか?または私が見ることができる任意の方向?

AGPBI: {
    "kind":"error",
    "text":"Program type already present: Android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat",
    "sources":[{}],
    "tool":"D8"
}

これは失敗するタスクです:

transformDexArchiveWithExternalLibsDexMergerForDebug

私は同様の問題をチェックしましたが、ランダムなものが問題を修正しているようです。本当の原因はわかりません。

13
Orhan Obut

次の手順を使用して、根本原因を特定することができました。問題ごとにユースケースが異なる場合があるため、これが根本原因を特定する方法です。

  • Android studioに移動します
  • ナビゲート->クラス
  • include non-project classesを確認してください
  • パッケージ名を含む完全なクラスパスをコピーして貼り付けます。 Android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat
  • どこで使用されているかがわかるはずです。ほとんどの場合、それらのいずれかから削除する必要があります。

私の場合、問題はViewPagerIndicatorライブラリがサポートライブラリをjarとしてダウンロードしていたことでした。削除することで問題は解決しました。

11
Orhan Obut

これを変更することで解決策があります:

implementation 'com.Android.support:appcompat-v7:27.0.0'

implementation 'com.Android.support:appcompat-v7:26.0.0'

わたしにはできる。

13
mas bro

私の解決策のために(あなたのために働くかわかりません):

まず、@Orhan Obut'sソリューションに従いました。

プロジェクト内の重複クラスを検索

異なるライブラリに複数のクラスファイルがあることがわかりました。

次に、プロジェクトモジュールのbuild.gradle(アプリフォルダー)で、サポートの依存関係の上に無視アノテーションを配置します。

 //noinspection GradleCompatible
    implementation 'com.Android.support:appcompat-v7:28.0.0'

プロジェクトのキャッシュをクリーンに再構築し、キャッシュをクリア/無効にした後でも、エラーが消えなかったため、無知は解決策ではないことに気付きました。

参照: インフォグラフィック:11最も一般的なAndroidエラーとその修正方法

だから私はもっと調べて、このリンクを見つけました:

Android-gradle依存関係の理解と支配

競合を解決する方法を提案します。したがって、私はこれを依存関係の宣言のすぐ上に私のグラドルに置きます:

configurations.all {exclude group: 'com.Android.support', module: 'support-v4'}

それ以来、上記の@Orhan Obut'sソリューションを使用してこのクラスの重複クラスを検索すると、結果に1つのエントリしか見つかりません。つまり、重複はありませんでした。

また、最新のSDKとビルドツールを使用してAndroidXに移行することをお勧めします。どこにも古いサポートの依存関係がないことを確認してください。

ハッピーコーディング:-)

12
Abhinav Saxena

簡単なオプションを追加するには

configurations.all {exclude group: 'com.Android.support', module: 'support-v4'}

build.gradleアプリモジュールの依存関係の前に、v4サポートライブラリを無視する必要があり、重複エラーはなくなります。

6
Aegon

アプリレベルのbuild.gradleに次の行を追加するとうまくいきました

    implementation 'com.Android.support:support-v4:28.0.0'
1
Abhishek Tiwari

私にとっては、これはそのような問題を解決するのに役立ちます

すべてのサポートライブラリ(サードパーティも含まれています)は、指定されたバージョンに縮小されます

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.Android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '28.0.0-beta01'
            }
        }
    }
}
1
Vlad

Yの場合、私は問題を解決しました

implementation 'com.Android.support:appcompat-v7:26.0.0'

 implementation 'com.Android.support:appcompat-v7:27.1.1'
0
Waqar UlHaq

私も少し前に同じ問題に直面しました。私の場合、サードパーティのライブラリは古いAccessibilityServiceInfoCompatバージョンv4 22を使用し、私はすでに新しいv4 28にアップデートしているため、両方がライブラリクラスをサポートしています

0
Ssubrat Rrudra

一部のサードパーティライブラリは、サポートライブラリの異なるバージョンを使用している場合があります。 ./gradlew :app:dependenciesを使用して検索し、サポートライブラリの現在のバージョンをインポートできます。

0
felix
I have my solution by change this :
Android / build.gradle
buildscript {
    ext {
        supportLibVersion = "27.0.3"
    }
}
to
buildscript {
    ext {
        supportLibVersion = "26.0.0"
    }
}
directory Android / app / build.gradle
defaultConfig {
    multiDexEnabled true
}
0
usman ali