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 androidx
et j'ai apporté les modifications.avez-vous essayé de supprimer votre dossier .idea pour supprimer l'ancien cache.
ce ne fonctionne pas pour moi.