Erreur lors du gonflement de la classe androidx.constraintlayout.ConstraintLayout après la migration vers Androidx


87

Je viens de faire une migration vers androidx via l'option de menu Android Studio Refactor -> Refactor vers AndroidX

J'obtiens l'erreur suivante:

android.view.InflateException: ligne de fichier XML binaire n ° 2: ligne de fichier XML binaire n ° 2: erreur de gonflage de la classe androidx.constraintlayout.ConstraintLayout

Une idée?

Trace de la pile:

2018-10-19 00:25:58.128 28131-28131/com.midounoo.midounoo E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.midounoo.midounoo, PID: 28131
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.midounoo.midounoo/com.midounoo.midounoo.Base.MainActivity}: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class androidx.constraintlayout.ConstraintLayout
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2724)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)
        at android.os.Handler.dispatchMessage(Handler.java:110)
        at android.os.Looper.loop(Looper.java:203)
        at android.app.ActivityThread.main(ActivityThread.java:6255)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
     Caused by: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class androidx.constraintlayout.ConstraintLayout
     Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class androidx.constraintlayout.ConstraintLayout
     Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.constraintlayout.ConstraintLayout" on path: DexPathList[[zip file "/data/app/com.midounoo.midounoo-2/base.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_dependencies_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_0_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_1_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_2_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_3_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_4_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_5_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_6_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_7_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_8_apk.apk", zip file "/data/app/com.midounoo.midounoo-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.midounoo.midounoo-2/lib/arm64, /system/lib64, /vendor/lib64, /system/vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.view.LayoutInflater.createView(LayoutInflater.java:609)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
        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 com.midounoo.midounoo.Base.MainActivity.onCreate(MainActivity.java:43)
        at android.app.Activity.performCreate(Activity.java:6666)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)
        at android.os.Handler.dispatchMessage(Handler.java:110)
        at android.os.Looper.loop(Looper.java:203)
        at android.app.ActivityThread.main(ActivityThread.java:6255)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)

Montrez le stacktrace entier s'il vous plaît.
TheWanderer

Veuillez partager votre niveau de compilation au niveau de l'application afin que nous puissions voir les dépendances.
Abhinav Saxena

Réponses:


177

Je résous mon problème en modifiant toutes les occurrences de

androidx.constraintlayout.ConstraintLayout

à

androidx.constraintlayout.widget.ConstraintLayout


12
Oui, erreur dans les transformations du studio Android, doit changer toutes les occurrences dans la mise en page XML avec androidx.constraintlayout.widget.ConstraintLayout ... merci
issamux

1
J'ai créé un nouveau projet avec la bibliothèque de support androidx et j'ai déjà androidx.constraintlayout.widget.ConstraintLayout dans mon activité principale mais j'obtiens toujours la même erreur.
Kanchan

2
@Kanchan Si vous travaillez dans un projet multi-module, vérifiez si vous devez mettre à jour le chemin ConstraintLayout dans l'un des fichiers.
Vasudev

50

Ajoutez androidx.constraintlayout.widget.ConstraintLayoutaux dépendances:

dependencies  {
    // https://mvnrepository.com/artifact/androidx.constraintlayout/constraintlayout
    implementation "androidx.constraintlayout:constraintlayout:1.1.3"
}

Il est disponible sur mavenCentral().


Le second constraintlayoutne commence Ccependant pas par des majuscules . Bonne 'androidx.constraintlayout:constraintlayout:1.1.3'
réponse

Vous m'avez sauvé d'un léger mal de tête
Koen Van Looveren

1
Pourquoi cela se produit-il sur Android Studio? Je l'ai changé de 1.1.2 à 1.1.3. Merci.
BollMose

1
@BollMose - Je ne sais pas pourquoi, mais la 1.1.2 s'étouffe à mort. Probablement un programme de compatibilité que les gentils gens de Google ont manqué. Ils ont tendance à faire beaucoup cela; Bienvenue dans la programmation Android!
SMBiggs

2
Pour moi, cela devrait être la seule réponse acceptable. Il y a un bogue de 1.1.2, le 1.1.3, corrige ce problème.
mochadwi

10

J'ai eu le même problème, je l'ai résolu comme suit:

Dans vos dépendances si vous avez ajouté

implementation 'androidx.constraintlayout:constraintlayout:1.x.x' c'est correct

mais dans votre fichier de mise en page xml, vous devez utiliser le widget comme

androidx.constraintlayout.widget.ConstraintLayout


5

Si après avoir ajouté mavenCentral () en tant que référentiel dans votre fichier Gradle et changé androidx.constraintlayout.ConstraintLayoutpour androidx.constraintlayout.widget.ConstraintLayoutne pas résoudre votre problème, essayez de faire Invalidate cache et redémarrez à partir du menu fichier. Cela a fonctionné pour moi.


5

build.gradle => vérifier la version des dépendances

implementation 'androidx.constraintlayout:constraintlayout:1.1.1'


changer

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

résolu le problème


1
Son formaté est bien et cette réponse a fonctionné pour moi. Merci.
Lukas Bimba

est venu du 1.1.2. la mise à jour vers 1.1.3 a également corrigé cela pour moi. Merci!
lun

5

assurez-vous que votre projet migre complètement vers androidx, dans mon cas, j'ai trouvé:

<android.support.constraint.ConstraintLayout

au lieu de

  <androidx.constraintlayout.widget.ConstraintLayout

Alors changez-le et mon problème est résolu!


4

J'ai le même problème après:

  • bibliothèque de support de migration vers androidx;
  • incrémenter targetSdkVesrsion à 29;

J'utilise aussi:

implementation "uk.co.chrisjenx:calligraphy:2.3.0"

J'ai essayé tous les messages de cette question, mais aucun succès.

Je le corrige en ajoutant une chaîne .disableCustomViewInflation()à Calligraphy init:

@Override
public void onCreate() {

    super.onCreate();
    // ...
    CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
            .setDefaultFontPath("fonts/Sans-Regular.ttf")
            .setFontAttrId(R.attr.fontPath)
            .disableCustomViewInflation() // <----- this fix
            .build());
    // ...
}

J'espère que la prochaine version de Calligraphy (Christopher Jenkins merci pour votre excellent travail) le corrigera également à l'intérieur.


Je ne l'utilisais même pas dans mon projet mais la bibliothèque était là en gradle. Après la suppression, l'application a commencé à fonctionner comme prévu. Merci
Pratik Mhatre

4

Après avoir cliqué sur Refactor -> Migrate to AndroidX, assurez-vous que toutes vos dépendances dans le build.gradle (Module: app) sont marquées à la version la plus récente.

Si ce n'est pas le cas, la dépendance apparaîtra en surbrillance jaune et vous pouvez la modifier en passant la souris dessus.

Deuxièmement, modifiez la balise ConstraintLayout dans tous les fichiers de mise en page XML en

androidx.constraintlayout.widget.ConstraintLayout

Pour une option plus sûre, nettoyez votre projet et synchronisez-le à nouveau après les étapes ci-dessus.


2

Assurez-vous d'avoir ajouté la dépendance pour la disposition des contraintes

 dependencies  {
    implementation "androidx.constraintlayout:constraintlayout:1.1.3"
}

et ont apporté les modifications à

<androidx.constraintlayout.widget.ConstraintLayout instead of

<android.support.constraint.ConstraintLayout

1

J'ai copié et collé une balise ConstraintLayout existante à partir du XML, ce qui me causait le problème. Le simple fait de supprimer et de rajouter les balises ConstraintLayout dans AndroidStudio à partir de zéro a résolu le problème pour moi.


1

Assurez-vous de changer pour

<androidx.constraintlayout.widget.ConstraintLayout

au lieu de

<android.support.constraint.ConstraintLayout

et

<androidx.constraintlayout.widget.Barrier

au lieu de

<android.support.constraint.Barrier

1

J'ai eu ce problème avec Android Studio 4.0. J'ai utilisé Android Studio 4.0 pendant quelques jours sans problème. Apparemment sorti de nulle part, la vue du concepteur a cessé de fonctionner. Je ne pouvais résoudre ce problème qu'en désinstallant Android Studio et en installant la dernière version d'Android Studio.


0

yepp. mavenCentral () et les dépendances correctes résolvent mes mêmes problèmes


0

J'ai eu une erreur similaire.

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp/com.myapp.MainActivity}: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class androidx.constraintlayout.widget.ConstraintLayout
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2757)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2818)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1557)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:163)
        at android.app.ActivityThread.main(ActivityThread.java:6393)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
    Caused by: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class androidx.constraintlayout.widget.ConstraintLayout
    Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class androidx.constraintlayout.widget.ConstraintLayout
    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:652)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:812)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:752)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:499)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:430)
        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 com.myapp.MainActivity.onCreate(MainActivity.java:23)
        at android.app.Activity.performCreate(Activity.java:6858)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2710)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2818)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1557)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:163)
        at android.app.ActivityThread.main(ActivityThread.java:6393)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
    Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/constraintlayout/widget/R$styleable;
        at androidx.constraintlayout.widget.ConstraintLayout.init(ConstraintLayout.java:590)
        at androidx.constraintlayout.widget.ConstraintLayout.<init>(ConstraintLayout.java:567)
        ... 23 more
    Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.constraintlayout.widget.R$styleable" on path: DexPathList[[zip file "/data/app/com.myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp-1/lib/arm64, /system/lib64, /vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        ... 25

Suite aux recommandations:

add androidx.constraintlayout.ConstraintLayout to the dependencies:

dependencies  {
    implementation "androidx.constraintlayout:constraintlayout:1.1.3"
}

Et le référentiel mavenCentral ().

Travaille pour moi. Je pourrais compiler l'APK.


0

J'ai mis à jour la dépendance, mais cela n'a pas résolu l'erreur. Ensuite, j'ai fait un projet propre et construit et cela fonctionne maintenant.


0
  1. Trouvez tous les paramètres par défaut avant de cliquer sur Refactor -> Refactor to AndroidX
  2. Ouvrez ce https://developer.android.com/jetpack/androidx/migrate/class-mappings et trouvez "android.support.v4.widget.DrawerLayout". Dans la même ligne, le nom de la classe AndroidX est "androidx.drawerlayout.widget.DrawerLayout" copiez-le.

entrez la description de l'image ici

  1. Remplacez tout "android.support.v4.widget.DrawerLayout" par "androidx.drawerlayout.widget.DrawerLayout" dans le code, la disposition et le menu de votre projet. Après tout, remplacez-le.

Je veux dire trouver la cartographie et l'utiliser dans tout le projet.


0

changez votre dépendance de mise en page de contrainte en implémentation 'androidx.constraintlayout: constraintlayout: 2.0.2'

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.