Error al inflar la clase android.support.constraint.ConstraintLayout
(3)
Estaba trabajando en una aplicación de Android Studio cuando me encontré con este error.
Process: com.example.visualizercopy, PID: 28098
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.visualizercopy/io.esense.MainActivity}: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class android.support.constraint.ConstraintLayout
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2812)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6317)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
Caused by: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class android.support.constraint.ConstraintLayout
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.constraint.ConstraintLayout
Caused by: java.lang.ClassNotFoundException: Didn''t find class "android.support.constraint.ConstraintLayout" on path: DexPathList[[zip file "/data/app/com.example.visualizercopy-1/base.apk", zip file "/data/app/com.example.visualizercopy-1/split_lib_dependencies_apk.apk", zip file "/data/app/com.example.visualizercopy-1/split_lib_slice_0_apk.apk", zip file "/data/app/com.example.visualizercopy-1/split_lib_slice_1_apk.apk", zip file "/data/app/com.example.visualizercopy-1/split_lib_slice_2_apk.apk", zip file "/data/app/com.example.visualizercopy-1/split_lib_slice_3_apk.apk", zip file "/data/app/com.example.visualizercopy-1/split_lib_slice_4_apk.apk", zip file "/data/app/com.example.visualizercopy-1/split_lib_slice_5_apk.apk", zip file "/data/app/com.example.visualizercopy-1/split_lib_slice_6_apk.apk", zip file "/data/app/com.example.visualizercopy-1/split_lib_slice_7_apk.apk", zip file "/data/app/com.example.visualizercopy-1/split_lib_slice_8_apk.apk", zip file "/data/app/com.example.visualizercopy-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.example.visualizercopy-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)
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 com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:424)
at android.app.Activity.setContentView(Activity.java:2471)
at io.esense.MainActivity.onCreate(MainActivity.java:41)
at android.app.Activity.performCreate(Activity.java:6757)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2704)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2812)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1528)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6317)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
2019-06-23 16:25:42.234 28098-28098/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)
Este es mi gradle:
apply plugin: ''com.android.application''
android {
compileSdkVersion 29
defaultConfig {
applicationId "com.example.visualizercopy"
minSdkVersion 23
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android-optimize.txt''), ''proguard-rules.pro''
}
}
}
dependencies {
implementation fileTree(dir: ''libs'', include: [''*.jar''])
implementation ''androidx.appcompat:appcompat:1.1.0-beta01''
implementation ''com.jjoe64:graphview:4.2.2''
implementation ''com.android.support.constraint:constraint-layout:2.0.0-beta1''
testImplementation ''junit:junit:4.12''
androidTestImplementation ''com.android.support.test:runner:1.0.2''
androidTestImplementation ''com.android.support.test.espresso:espresso-core:3.0.2''
}
Esta es la etiqueta de diseño de restricción en mi archivo xml
<android.support.constraint.ConstraintLayout
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:id="@+id/PLAY_PARENT"
android:padding="0dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:layout_editor_absoluteY="81dp">
He examinado mi error en este sitio y en google, y la respuesta común es agregar la
compile ''com.android.support.constraint:constraint-layout:1.0.2''
, sin embargo, la compilación ahora es obsoleta, y cuando reemplazo compilar con implementación y lo cambié a la versión más reciente (
''com.android.support.constraint:constraint-layout:2.0.0-beta1''
) Todavía me encuentro con el mismo error.
¿Cómo puedo arreglar esto?
Estás utilizando paquetes de androidX. Por lo tanto, debe migrar toda la biblioteca android.support con androidX.
Entonces reemplace debajo de la línea en gradle,
implementation ''com.android.support.constraint:constraint-layout:2.0.0-beta1''
Con este,
implementation ''androidx.constraintlayout:constraintlayout:1.1.2''
Referencia here
Lo descubrí, tuve que actualizar las etiquetas
android.support.constraint.ConstraintLayout
a
androidx.constraintlayout.widget.ConstraintLayout
en mi diseño XML.
Si está usando los paquetes de
androidX
o desea usarlos para su proyecto, entonces debe migrar su proyecto a
androidX
.
Para eso debes seguir los siguientes pasos:
1) En Android Studio, simplemente
Refactor-> Migrate to AndroidX
a
Refactor-> Migrate to AndroidX
para migrar su proyecto y allí puede hacer una copia de seguridad de su proyecto si ocurre algún problema al migrar el proyecto.
Después de eso, sus dependencias tendrán paquetes androidX automáticamente.
Lectura adicional: Here