タスク ':app:checkDebugDuplicateClasses'の実行に失敗しました。 Ionic4 Android
私は現在ionic4アプリケーションに取り組んでいますが、最近Android reallデバイスを追加した後 https://ionicframework.com/docs/native/fcm アプリケーションへのプラグイン。
最初はファブリックキーについて不平を言っていましたが、私は自分のアプリでファブリックcrashlyticを使用することを目指していませんでした。
エラーログ:
* What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.
> 1 exception was raised by workers:
Java.lang.RuntimeException: Duplicate class Android.support.v4.app.INotificationSideChannel found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.app.INotificationSideChannel$Stub found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.IResultReceiver found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.IResultReceiver$Stub found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.IResultReceiver$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.ResultReceiver found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.ResultReceiver$1 found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.ResultReceiver$MyResultReceiver found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.ResultReceiver$MyRunnable found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Go to the documentation to learn how to <a href="d.Android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 21s
Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.4.1/userguide/command_line_interface.html#sec:command_line_warnings
35 actionable tasks: 5 executed, 30 up-to-date
cmd: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.
> 1 exception was raised by workers:
Java.lang.RuntimeException: Duplicate class Android.support.v4.app.INotificationSideChannel found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.app.INotificationSideChannel$Stub found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.IResultReceiver found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.IResultReceiver$Stub found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.IResultReceiver$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.ResultReceiver found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.ResultReceiver$1 found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.ResultReceiver$MyResultReceiver found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Duplicate class Android.support.v4.os.ResultReceiver$MyRunnable found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.Android.support:support-compat:27.1.1)
Go to the documentation to learn how to <a href="d.Android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 21s
[ERROR] An error occurred while running subprocess cordova.
cordova run Android exited with exit code 1.
Re-running this command with the --verbose flag may provide more information.
Android/app/build.gradle
buildscript {
repositories {
google()
jcenter()
maven { url 'https://maven.fabric.io/public' } // Fabrics Maven repository from cordova-plugin-firebase
}
dependencies {
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'com.Android.tools.build:gradle:3.4.0+'
classpath 'com.google.gms:google-services:4.2.0' // google-services dependency from cordova-plugin-firebase
classpath 'io.fabric.tools:gradle:1.+' // fabric dependency from cordova-plugin-firebase
}
}
allprojects {
repositories {
jcenter()
google() // Google's Maven repository from cordova-plugin-firebase
}
//This replaces project.properties w.r.t. build settings
project.ext {
defaultBuildToolsVersion="28" //String
defaultMinSdkVersion=19 //Integer - Minimum requirement is Android 4.4
defaultTargetSdkVersion=28 //Integer - We ALWAYS target the latest by default
defaultCompileSdkVersion=28 //Integer - We ALWAYS compile with the latest by default
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
cordova-plugin-firebase/raihan-build.gradle
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.4.0+'
classpath 'com.google.gms:google-services:4.2.0'
}
}
dependencies {
compile 'me.leolin:ShortcutBadger:1.1.4@aar'
compile 'com.google.firebase:firebase-auth:+'
compile('com.crashlytics.sdk.Android:crashlytics:2.9.1@aar') {
transitive = true
}
}
cdvPluginPostBuildExtras.add({
// apply plugin: 'com.google.gms.google-services'
apply plugin: 'io.fabric'
})
cordova-plugin-fcm-with-dependecy-updated/raihan-FCMPlugin.gradle
buildscript {
repositories {
google()
jcenter()
mavenLocal()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.4.0+'
classpath 'com.google.gms:google-services:4.2.0'
}
}
repositories {
google()
jcenter()
}
dependencies {
compile 'com.google.firebase:firebase-core:16.0.8'
}
// apply plugin: 'com.google.gms.google-services'
// class must be used instead of id(string) to be able to apply plugin from non-root gradle file
// apply plugin: com.google.gms.googleservices.GoogleServicesPlugin
Android/project.properties
target=Android-27
Android.library.reference.1=CordovaLib
Android.library.reference.2=app
cordova.gradle.include.1=cordova-Android-support-gradle-release/raihan-cordova-Android-support-gradle-release.gradle
cordova.system.library.1=com.squareup.okhttp3:okhttp-urlconnection:3.10.0
cordova.system.library.2=com.Android.support:support-v4:24.1.1+
cordova.system.library.3=com.soundcloud.Android:android-crop:1.0.0@aar
cordova.system.library.4=com.google.firebase:firebase-core:16.0.8
cordova.system.library.4=com.google.firebase:firebase-iid:17.1.1
cordova.system.library.5=com.google.firebase:firebase-messaging:17.5.0
cordova.gradle.include.2=cordova-plugin-fcm-with-dependecy-updated/raihan-FCMPlugin.gradle
cordova.gradle.include.3=cordova-support-google-services/raihan-build.gradle
cordova.system.library.6=com.google.firebase:firebase-auth:16.2.0
cordova.system.library.6=com.google.firebase:firebase-perf:16.2.4
cordova.system.library.7=com.Android.support:support-annotations:27.+
cordova.system.library.8=com.Android.support:appcompat-v7:23+
cordova.system.library.8=com.google.firebase:firebase-iid:17.1.1
cordova.system.library.8=com.google.Android.gms:play-services-tagmanager:16.0.8
cordova.system.library.8=com.google.firebase:firebase-config:16.4.0
cordova.gradle.include.4=cordova-plugin-telerik-imagepicker/raihan-ignorelinterrors.gradle
cordova.gradle.include.5=cordova-plugin-telerik-imagepicker/raihan-androidtarget.gradle
cordova.gradle.include.6=cordova-Android-support-gradle-release/raihan-cordova-Android-support-gradle-release.gradle
cordova.gradle.include.7=cordova-plugin-firebase/raihan-build.gradle
上記のファイルを提供しました。他にアップロードする必要があるかどうかをお知らせください。
プロジェクト(またはそのサブプロジェクトの1つ)は、末尾に+プラス記号を使用して依存関係を参照しています(com.google.firebase:firebase-auth:+
など)。つまり、可能な場合はより高いバージョンを使用します。新しいバージョンではAndroid.support
ライブラリを使用せず、代わりにandroidx
を使用しています。この問題を修正するには、以下の手順に従ってください。
手順:
Android_HOME
環境変数が設定されていることを確認してから、コンソールウィンドウを開きます(git-bashのように、コマンドの出力全体が保持されるため)。cd
をAndroid
に入れます。ディレクトリ(Ionicプロジェクトの場合はplatforms/Android
にする必要があります)。- まず、すべての依存関係を一覧表示以下を実行する(git-bashで):
./gradlew :app:dependencies
- 結果を任意のテキストエディターにコピーし、
androidx
を検索します。 - 以下の手順に従って何かを見つけた場合、それ以外の場合は完了です! (そしてこれらのステップを繰り返す必要はありません)。
16.0.8 -> 19.0.0
または+ -> 19.0.0
のように、行の最後に->が表示されるまで上にスクロールします。これはどちらも、バージョンが自動解決されたことを意味します(+により、指定したバージョンよりも高いものに)。- したがって、手動でバージョンを下げてください:
- 可能であれば、プロジェクトで+記号を見つけて特定のバージョンに置き換えます。
- または、以下のように特定のバージョンの依存関係を強制します。
- 最後に、上記の手順を繰り返します(ただし、手順1ではなく、コンソールの
clear
を実行します)。
依存関係の特定のバージョンを強制するルートにbuild.gradle
を以下のように追加します(これは私にとってうまくいきました)が、独自のルールを編集して追加します(これらがうまくいかない場合) :
allprojects {
// ...
configurations.all {
resolutionStrategy {
force 'com.google.firebase:firebase-common:17.0.0'
force 'com.google.Android.gms:play-services-basement:16.2.0'
force 'com.google.firebase:firebase-iid:16.0.0'
force 'com.google.firebase:firebase-auth:17.0.0'
}
}
}
Android Studio機能を使用してAndroidxに移行したときにこの問題が発生しましたが、最初は移行が成功しなかったため、コンパイルしようとするたびにこの問題が発生しました。
この問題を解決するために、次のことを行いました。
[1] Comment all androidx dependencies in the app bundle.gradle file
[2] Try the Migrate to Androidx. You can see this link in Refactor -> Migrate to Androidx. If the migration was successful, then
[3] Uncomment all androidx dependencies in the app bundle.gradle file
プロジェクトをクリーンアップして再度ビルドすることができます。うまくいけば、このエラーは消えるはずです。