Error al inflar la clase androidx.constraintlayout.ConstraintLayout después de la migración a androidx


87

Acabo de realizar una migración a androidx a través de la opción de menú de Android Studio Refactor -> Refactor to AndroidX

Recibo el siguiente error:

android.view.InflateException: línea de archivo XML binario n. ° 2: línea de archivo XML binario n. ° 2: error al inflar la clase androidx.constraintlayout.ConstraintLayout

¿Alguna idea?

Stacktrace:

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)

Muestre todo el seguimiento de la pila, por favor.
TheWanderer

Comparta el nivel de compilación de su aplicación para que podamos ver las dependencias.
Abhinav Saxena

Respuestas:


177

Resuelvo mi problema cambiando todas las apariciones de

androidx.constraintlayout.ConstraintLayout

a

androidx.constraintlayout.widget.ConstraintLayout


12
Sí, error en las transformaciones de Android Studio, debe cambiar todas las ocurrencias en el diseño xml con androidx.constraintlayout.widget.ConstraintLayout ... gracias
issamux

1
He creado un nuevo proyecto con la biblioteca de soporte de androidx y ya tengo androidx.constraintlayout.widget.ConstraintLayout en mi actividad principal, pero sigo recibiendo el mismo error.
Kanchan

2
@Kanchan Si está trabajando en un proyecto de varios módulos, verifique si necesita actualizar la ruta de ConstraintLayout en alguno.
Vasudev

50

Agregue androidx.constraintlayout.widget.ConstraintLayouta las dependencias:

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

Está disponible el mavenCentral().


Sin constraintlayoutembargo, el segundo no comienza con mayúsculas C. Correcto:'androidx.constraintlayout:constraintlayout:1.1.3'
ʍѳђ ઽ ૯ ท

Me salvaste de un dolor de cabeza menor
Koen Van Looveren

1
¿Por qué sucede esto en Android Studio? Lo cambié de 1.1.2 a 1.1.3. Gracias.
BollMose

1
@BollMose - No sé por qué, pero 1.1.2 simplemente se ahoga. Probablemente algún programa de compatibilidad que la gente amable de Google se perdió. Suelen hacer eso mucho; ¡Bienvenido a la programación de Android!
SMBiggs

2
Para mí, esta debería ser la única respuesta aceptable. Hay un error que consiste en 1.1.2, 1.1.3, soluciona este problema.
mochadwi

10

Tuve el mismo problema, lo resolví de la siguiente manera:

En tus dependencias si has agregado

implementation 'androidx.constraintlayout:constraintlayout:1.x.x' eso es correcto

pero en su archivo de diseño xml debe usar el widget como

androidx.constraintlayout.widget.ConstraintLayout


5

Si después de agregar mavenCentral () como un repositorio en su archivo Gradle y cambiar androidx.constraintlayout.ConstraintLayouta androidx.constraintlayout.widget.ConstraintLayoutno resolvió su problema, intente hacer Invalidar caché y reinicie desde el menú del archivo. Funcionó para mí.


5

build.gradle => comprobar la versión de las dependencias

implementation 'androidx.constraintlayout:constraintlayout:1.1.1'


cambiar

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

resuelve el problema


1
Está bien formateado y esta respuesta funcionó para mí. Gracias.
Lukas Bimba

vino de 1.1.2. la actualización a 1.1.3 solucionó esto para mí también. ¡Gracias!
lun

5

asegúrese de que su proyecto migre a androidx por completo, en mi caso encontré:

<android.support.constraint.ConstraintLayout

en vez de

  <androidx.constraintlayout.widget.ConstraintLayout

¡Así que cámbielo y mi problema se solucionó!


4

Tengo el mismo problema después de:

  • biblioteca de soporte de migración a androidx;
  • incrementar targetSdkVesrsion a 29;

Yo también uso:

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

Probé todas las publicaciones de esta pregunta, pero ninguna fue exitosa.

Lo soluciono agregando una cadena .disableCustomViewInflation()a 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());
    // ...
}

Espero que el próximo lanzamiento de Calligraphy (Christopher Jenkins, gracias por su gran trabajo) lo solucione por dentro también.


Ni siquiera lo estaba usando en mi proyecto, pero la biblioteca estaba allí en gradle. Después de eliminarla, la aplicación comenzó a funcionar como se esperaba. Gracias
Pratik Mhatre

4

Después de hacer clic en Refactor -> Migrate to AndroidX, asegúrese de que todas sus dependencias en build.gradle (Módulo: aplicación) estén marcadas con la versión más reciente.

Si no es así, la dependencia aparecerá resaltada en amarillo y puede cambiarla colocando el mouse sobre ella.

En segundo lugar, cambie la etiqueta ConstraintLayout en todos los archivos de diseño XML a

androidx.constraintlayout.widget.ConstraintLayout

Para una opción más segura, limpie su proyecto y sincronícelo nuevamente después de los pasos anteriores.


2

Asegúrese de haber agregado la dependencia para el diseño de restricciones

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

y he realizado los cambios en

<androidx.constraintlayout.widget.ConstraintLayout instead of

<android.support.constraint.ConstraintLayout

1

Copié y pegué una etiqueta ConstraintLayout existente del xml, lo que me estaba causando el problema. Simplemente eliminar y volver a agregar las etiquetas ConstraintLayout en AndroidStudio desde cero solucionó el problema.


1

Asegúrate de cambiar a

<androidx.constraintlayout.widget.ConstraintLayout

en vez de

<android.support.constraint.ConstraintLayout

y

<androidx.constraintlayout.widget.Barrier

en vez de

<android.support.constraint.Barrier

1

Tuve este problema con Android Studio 4.0. Usé android studio 4.0 durante un par de días sin problemas. Aparentemente de la nada, la vista del diseñador dejó de funcionar. Solo pude solucionar esto desinstalando Android Studio e instalando la versión más reciente de Android Studio.


0

yepp. mavenCentral () y las dependencias correctas resuelven mis mismos problemas


0

Tuve un error similar.

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

Siguiendo las recomendaciones:

add androidx.constraintlayout.ConstraintLayout to the dependencies:

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

Y el repositorio mavenCentral ().

Funciona para mi. Podría compilar el APK.


0

Actualicé la dependencia, pero no resolvió el error. Luego hice un proyecto limpio y construí y ahora está funcionando.


0
  1. Encuentre todos los valores predeterminados antes de hacer clic en Refactorizar -> Refactorizar a AndroidX
  2. Abra este https://developer.android.com/jetpack/androidx/migrate/class-mappings y busque "android.support.v4.widget.DrawerLayout". En la misma línea, el nombre de la clase de AndroidX es "androidx.drawerlayout.widget.DrawerLayout" cópielo.

ingrese la descripción de la imagen aquí

  1. Reemplace todo "android.support.v4.widget.DrawerLayout" por "androidx.drawerlayout.widget.DrawerLayout" en el código, diseño y menú de su proyecto. Después de todo, reemplácelo funcionará.

Me refiero a encontrar el mapeo y usarlo en todo el proyecto.


0

cambie la dependencia del diseño de la restricción a la implementación 'androidx.constraintlayout: constraintlayout: 2.0.2'

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.