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)
KevinMo
fuente
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

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

Martin Zeitler
fuente
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

Mirwise Khan
fuente
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í.

Neeraj Sewani
fuente
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

Sakthi Vel
fuente
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ó!

sana ebadi
fuente
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.

Tapa Guardar
fuente
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.

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

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

ROSADO
fuente
0

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

Ya Si
fuente
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.

Juan Francisco Romero Gutirrez
fuente
0

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

Bishoy Abd
fuente
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.

ethemsulan
fuente
0

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

Emmanuel Ametepee
fuente