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)
KevinMo
la source
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

KevinMo
la source
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().

Martin Zeitler
la source
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

Mirwise Khan
la source
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.

Neeraj Sewani
la source
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

Sakthi Vel
la source
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!

sana ebadi
la source
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.

Tapa Enregistrer
la source
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.

Akshay Chopra
la source
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
Ravi
la source
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.

Abhas Arya
la source
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
Kumar
la source
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.

ROSE
la source
0

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

Ya Si
la source
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.

Juan Francisco Romero Gutirrez
la source
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.

Bishoy Abd
la source
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.

éthemsulane
la source
0

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

Emmanuel Ametepee
la source