9
votes

Erreur lors du gonflement de la classe après la migration vers Androidx

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


4 commentaires

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.


8 Réponses :


1
votes

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.
  • Essayez Invalidate Cache and Restart .

Assurez-vous également que vous n'utilisez pas la disposition du coordinateur de la bibliothèque de support ailleurs.


3 commentaires

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



0
votes

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.


2 commentaires

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?



1
votes

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.


0 commentaires

8
votes

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.


0 commentaires

6
votes

dans un fichier XML, remplacez

androidx.recyclerview.widget.RecyclerView

avec:

androidx.appcompat.widget.RecyclerView


0 commentaires

0
votes

Allez simplement au fichier XML (dans `res / layout) et remplacez

androidx.recyclerview.widget.RecyclerView

avec:

androidx.appcompat.widget.RecyclerView


0 commentaires

0
votes

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 :


0 commentaires

0
votes

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


0 commentaires