J'ai effectué une migration vers Androidx mais après la migration, j'obtiens l'erreur suivante:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start"
>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
J'ai étudié toutes les ressources et migré vers Androidx, mais j'ai encore beaucoup de problèmes. Est-ce que quelqu'un peut m'aider? Je publierai les sections du code ci-dessous.
--------- début de crash ---------
apply plugin: 'com.android.application'
repositories {
mavenCentral()
}
android {
useLibrary 'org.apache.http.legacy'
compileSdkVersion 28
defaultConfig {
applicationId "ir.bijac.com.bijac"
minSdkVersion 18
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'com.google.android.material:material:1.1.0-alpha02'
implementation 'androidx.legacy:legacy-support-core-utils:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.test.espresso:espresso-core:3.1.1'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestUtil 'androidx.test:orchestrator:1.1.1'
configurations.all { resolutionStrategy.force 'com.android.support:support-v4:28.0.0' }
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
implementation 'com.squareup.picasso:picasso:2.5.2'
implementation 'com.nineoldandroids:library:2.4.0'
implementation 'com.daimajia.slider:library:1.1.5@aar'
implementation "cz.msebera.android:httpclient:4.4.1.2"
implementation 'org.apache.httpcomponents:httpcore:4.4.10'
implementation 'com.androidadvance:topsnackbar:1.1.1'
implementation 'co.ronash.android:pushe-base:1.4.1'
implementation 'com.google.android.gms:play-services-gcm:16.0.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
transitive = true;
}
}
construire gradle:
2019-01-23 09:47:34.171 17578-17578/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: ir.bijac.com.bijac, PID: 17578
java.lang.RuntimeException: Unable to start activity ComponentInfo{ir.bijac.com.bijac/ir.bijac.com.bijac.TestActivity}: android.view.InflateException: Binary XML file line #12: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: android.view.InflateException: Binary XML file line #12: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
at android.view.LayoutInflater.createView(LayoutInflater.java:645)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:964)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:854)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
at android.view.LayoutInflater.inflate(LayoutInflater.java:377)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at ir.bijac.com.bijac.BaseActivity.onCreate(BaseActivity.java:43)
at ir.bijac.com.bijac.TestActivity.onCreate(TestActivity.java:22)
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/coreui/R$attr;
at android.support.design.widget.CoordinatorLayout.<init>(CoordinatorLayout.java:202)
at java.lang.reflect.Constructor.newInstance0(Native Method)Â
at java.lang.reflect.Constructor.newInstance(Constructor.java:430)Â
at android.view.LayoutInflater.createView(LayoutInflater.java:645)Â
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)Â
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:964)Â
at android.view.LayoutInflater.rInflate(LayoutInflater.java:854)Â
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)Â
at android.view.LayoutInflater.inflate(LayoutInflater.java:518)Â
at android.view.LayoutInflater.inflate(LayoutInflater.java:426)Â
at android.view.LayoutInflater.inflate(LayoutInflater.java:377)Â
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)Â
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)Â
at ir.bijac.com.bijac.BaseActivity.onCreate(BaseActivity.java:43)Â
at ir.bijac.com.bijac.TestActivity.onCreate(TestActivity.java:22)Â
at android.app.Activity.performCreate(Activity.java:6679)Â
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)Â
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)Â
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)Â
at android.app.ActivityThread.-wrap12(ActivityThread.java)Â
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)Â
at android.os.Handler.dispatchMessage(Handler.java:102)Â
at android.os.Looper.loop(Looper.java:154)Â
at android.app.ActivityThread.main(ActivityThread.java:6119)Â
at java.lang.reflect.Method.invoke(Native Method)Â
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)Â
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)Â
2019-01-23 09:47:34.171 17578-17578/? E/AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.coreui.R$attr" on path: DexPathList[[zip file "/data/app/ir.bijac.com.bijac-2/base.apk", zip file "/data/app/ir.bijac.com.bijac-2/split_lib_dependencies_apk.apk", zip file "/data/app/ir.bijac.com.bijac-2/split_lib_slice_0_apk.apk", zip file "/data/app/ir.bijac.com.bijac-2/split_lib_slice_1_apk.apk", zip file "/data/app/ir.bijac.com.bijac-2/split_lib_slice_2_apk.apk", zip file "/data/app/ir.bijac.com.bijac-2/split_lib_slice_3_apk.apk", zip file "/data/app/ir.bijac.com.bijac-2/split_lib_slice_4_apk.apk", zip file "/data/app/ir.bijac.com.bijac-2/split_lib_slice_5_apk.apk", zip file "/data/app/ir.bijac.com.bijac-2/split_lib_slice_6_apk.apk", zip file "/data/app/ir.bijac.com.bijac-2/split_lib_slice_7_apk.apk", zip file "/data/app/ir.bijac.com.bijac-2/split_lib_slice_8_apk.apk", zip file "/data/app/ir.bijac.com.bijac-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/ir.bijac.com.bijac-2/lib/x86, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 27 more
--------- activity_main.xml ---------
Caused by: android.view.InflateException: Binary XML file line #12: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
8 Réponses :
Il semble que l'application essaie de gonfler android.support.design.widget.CoordinatorLayout partir de la bibliothèque de support au lieu de la bibliothèque androidx. Essayez de faire les choses suivantes et vérifiez si cela fonctionne.
clean and build votre application.Invalidate Cache and Restart .Assurez-vous également que vous n'utilisez pas la disposition du coordinateur de la bibliothèque de support ailleurs.
Merci pour la réponse mais j'ai testé les deux méthodes. ce ne fonctionne pas pour moi.
assurez-vous que vous n'avez pas utilisé coordinatorlayout de la bibliothèque de support dans un autre xml.
Je suis sûr que tout autre xml non utilisé coordinatorlayout de la bibliothèque de support
Ajoutez ces deux lignes dans le fichier gradle.properties pour migrer automatiquement le projet existant vers Androix.
android.useAndroidX=true android.enableJetifier=true
plus d'infos ici -> https://developer.android.com/jetpack/androidx/migrate
cela résoudra automatiquement votre problème.
Merci pour la réponse mais j'ai déjà ajouté ces deux lignes dans le fichier gradle.properties
@hassanabbasi, avez-vous essayé 1. invalider le cache et redémarrer 2. nettoyer et reconstruire le projet?
Assurez-vous que dans vos activités et fragments, il n'y a aucune référence aux anciennes bibliothèques de support dans la section des importations. Assurez-vous que toutes les mises en page n'utilisent pas les widgets de support ols également.
Vous êtes susceptible d'avoir une référence à android.support.design.widget.CoordinatorLayout dans certains de vos fichiers de mise en page XML.
Appuyez sur CTRL + SHIFT + F ou allez dans Edit/Find/Find in Path et recherchez simplement android.support.design.widget.CoordinatorLayout et remplacez-le par androidx.coordinatorlayout.widget.CoordinatorLayout .
Vous pouvez utiliser CTRL + SHIFT + R ou Edit/Find/Replace in Path place pour remplacer toutes les correspondances à la fois.
dans un fichier XML, remplacez
androidx.recyclerview.widget.RecyclerView
avec:
androidx.appcompat.widget.RecyclerView
Allez simplement au fichier XML (dans `res / layout) et remplacez
androidx.recyclerview.widget.RecyclerView
avec:
androidx.appcompat.widget.RecyclerView
Vous devez remplacer toutes les classes android.support.design par de nouvelles classes d' AndroidX . Voici les liens avec les correspondances entre les anciennes et les nouvelles classes:
Pour en savoir plus, vous pouvez lire le guide sur la migration vers AndroidX :
Modifier -> Rechercher -> Rechercher dans le chemin Remplacer tous les éléments suivants
android.support.v7.widget.CardView -> androidx.cardview.widget.CardView
android.support.design.widget.TextInputLayout -> com.google.android.material.textfield.TextInputLayout
android.support.v4.widget.NestedScrollView -> androidx.core.widget.NestedScrollView
android.support.v4.view.ViewPager -> androidx.viewpager.widget.ViewPager
androidx.constraintlayout.ConstraintLayout -> androidx.constraintlayout.widget.ConstraintLayout
androidx.core.view.ViewPager -> androidx.viewpager.widget.ViewPager
androidx.core.widget.SwipeRefreshLayout -> androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android.support.design.widget.AppBarLayout -> com.google.android.material.appbar.AppBarLayout
android.support.design.widget.CollapsingToolbarLayout -> com.google.android.material.appbar.CollapsingToolbarLayout
android.support.v7.widget.Toolbar -> androidx.appcompat.widget.Toolbar
allez simplement à refactor-> migrer vers androidx cela vérifiera s'il y a une ressource qui n'est pas gérée sinon supprimez simplement votre dossier .idea dans votre projet racine et recommencez cela devrait fonctionner correctement.
Merci pour la réponse mais j'ai testé
refactor->migrate to androidxet j'ai apporté les modifications.avez-vous essayé de supprimer votre dossier .idea pour supprimer l'ancien cache.
ce ne fonctionne pas pour moi.