Android Studio 3.1にアップグレードした後、ビルド中に次のエラーが発生し始めました。プロジェクトはmultidexを使用し、エラーで気付くように、DXはデフォルトで有効になっています。何が起こっているのかを理解するために依存関係グラフをチェックしようとしましたが、今のところ何の手掛かりもありません。興味深いことに、これは私のマシンでのみ失敗します。再インストールなど、すべてをクリーンアップしましたが、何も機能しませんでした。
誰もが同じ問題を抱えていましたが、どのように解決しましたか?または私が見ることができる任意の方向?
AGPBI: {
"kind":"error",
"text":"Program type already present: Android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat",
"sources":[{}],
"tool":"D8"
}
これは失敗するタスクです:
transformDexArchiveWithExternalLibsDexMergerForDebug
私は同様の問題をチェックしましたが、ランダムなものが問題を修正しているようです。本当の原因はわかりません。
次の手順を使用して、根本原因を特定することができました。問題ごとにユースケースが異なる場合があるため、これが根本原因を特定する方法です。
include non-project classes
を確認してくださいAndroid.support.v4.accessibilityservice.AccessibilityServiceInfoCompat
私の場合、問題はViewPagerIndicatorライブラリがサポートライブラリをjarとしてダウンロードしていたことでした。削除することで問題は解決しました。
これを変更することで解決策があります:
implementation 'com.Android.support:appcompat-v7:27.0.0'
に
implementation 'com.Android.support:appcompat-v7:26.0.0'
わたしにはできる。
私の解決策のために(あなたのために働くかわかりません):
まず、@Orhan Obut's
ソリューションに従いました。
異なるライブラリに複数のクラスファイルがあることがわかりました。
次に、プロジェクトモジュールのbuild.gradle(アプリフォルダー)で、サポートの依存関係の上に無視アノテーションを配置します。
//noinspection GradleCompatible
implementation 'com.Android.support:appcompat-v7:28.0.0'
プロジェクトのキャッシュをクリーンに再構築し、キャッシュをクリア/無効にした後でも、エラーが消えなかったため、無知は解決策ではないことに気付きました。
参照: インフォグラフィック:11最も一般的なAndroidエラーとその修正方法
だから私はもっと調べて、このリンクを見つけました:
競合を解決する方法を提案します。したがって、私はこれを依存関係の宣言のすぐ上に私のグラドルに置きます:
configurations.all {exclude group: 'com.Android.support', module: 'support-v4'}
それ以来、上記の@Orhan Obut's
ソリューションを使用してこのクラスの重複クラスを検索すると、結果に1つのエントリしか見つかりません。つまり、重複はありませんでした。
また、最新のSDKとビルドツールを使用してAndroidXに移行することをお勧めします。どこにも古いサポートの依存関係がないことを確認してください。
ハッピーコーディング:-)
簡単なオプションを追加するには
configurations.all {exclude group: 'com.Android.support', module: 'support-v4'}
build.gradleアプリモジュールの依存関係の前に、v4サポートライブラリを無視する必要があり、重複エラーはなくなります。
アプリレベルのbuild.gradleに次の行を追加するとうまくいきました
implementation 'com.Android.support:support-v4:28.0.0'
私にとっては、これはそのような問題を解決するのに役立ちます
すべてのサポートライブラリ(サードパーティも含まれています)は、指定されたバージョンに縮小されます
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'
}
}
}
}
Yの場合、私は問題を解決しました
implementation 'com.Android.support:appcompat-v7:26.0.0'
に
implementation 'com.Android.support:appcompat-v7:27.1.1'
私も少し前に同じ問題に直面しました。私の場合、サードパーティのライブラリは古いAccessibilityServiceInfoCompatバージョンv4 22を使用し、私はすでに新しいv4 28にアップデートしているため、両方がライブラリクラスをサポートしています
一部のサードパーティライブラリは、サポートライブラリの異なるバージョンを使用している場合があります。 ./gradlew :app:dependencies
を使用して検索し、サポートライブラリの現在のバージョンをインポートできます。
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
}