Помилка роздування класу androidx.constraintlayout.ConstraintLayout після переходу на androidx


87

Я тільки що зробив перехід до androidx через опцію меню Android Студія Refactor -> Рефакторинг в AndroidX

Я отримую таку помилку:

android.view.InflateException: двійковий рядок файлу XML №2: двійковий рядок файлу XML №2: помилка при завищенні класу androidx.constraintlayout.ConstraintLayout

Будь-яка ідея?

Tracktrace:

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)

Покажіть весь стек, будь ласка.
TheWanderer

Будь ласка, поділіться своїм gradle build gradle рівня, щоб ми могли побачити залежності.
Абхінав Саксена

Відповіді:


177

Я вирішую свою проблему, змінюючи всі випадки

androidx.constraintlayout.ConstraintLayout

до

androidx.constraintlayout.widget.ConstraintLayout


12
Так, помилка в перетвореннях студії Android, повинна змінити всі випадки в макеті xml за допомогою androidx.constraintlayout.widget.ConstraintLayout ... дякую
issamux

1
Я створив новий проект з бібліотекою підтримки androidx, і я вже маю androidx.constraintlayout.widget.ConstraintLayout у своїй основній діяльності, але все одно отримую ту ж помилку.
Канчан

2
@Kanchan Якщо ви працюєте в мультимодульному проекті, перевірте, чи не потрібно оновити шлях ConstraintLayout у будь-якому.
Vasudev

50

Додайте androidx.constraintlayout.widget.ConstraintLayoutдо залежностей:

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

Це доступно на mavenCentral().


Однак другий constraintlayoutпочинається не з великої літери C. Правильний:'androidx.constraintlayout:constraintlayout:1.1.3'
ʍѳђ ઽ ૯ ท

Ви врятували мене від незначного головного болю
Коен Ван Ловерен

1
Чому це відбувається в Android Studio? Я змінив його з 1.1.2 на 1.1.3. Дякую.
BollMose

1
@BollMose - я не знаю чому, але 1.1.2 просто задихається до смерті. Можливо, якась програма сумісності, за якою симпатичні люди, яких прогулював Google. Вони, як правило, роблять це багато; Ласкаво просимо до програмування Android!
SMBiggs

2
Для мене це має бути єдиною прийнятною відповіддю. Виправлена ​​ця помилка, яка складається з 1.1.2, 1.1.3.
mochadwi,

10

У мене була та ж проблема, я вирішив її наступним чином:

У ваших залежностях, якщо ви додали

implementation 'androidx.constraintlayout:constraintlayout:1.x.x' це правильно

але у вашому файлі макета xml ви повинні використовувати віджет як

androidx.constraintlayout.widget.ConstraintLayout


5

Якщо після додавання mavenCentral () як сховища у вашому файлі Gradle і зміни androidx.constraintlayout.ConstraintLayoutна значення androidx.constraintlayout.widget.ConstraintLayoutне вирішило вашу проблему, спробуйте виконати Invalidate cache та перезапустити з меню файлу. У мене це спрацювало.


5

build.gradle => перевірити залежність версії

implementation 'androidx.constraintlayout:constraintlayout:1.1.1'


змінювати

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

вирішив проблему


1
Його форматоване добре, і ця відповідь спрацювала для мене. Дякую.
Лукас Бімба

прийшов з 1.1.2. оновлення до 1.1.3 виправило це для мене теж. Дякую!
Пн,

5

переконайтеся, що ваш проект повністю перейшов на androidx. У моєму випадку я знайшов:

<android.support.constraint.ConstraintLayout

замість

  <androidx.constraintlayout.widget.ConstraintLayout

Тож змініть це, і моя проблема виправлена!


4

У мене така ж проблема після:

  • бібліотека підтримки міграції на androidx;
  • збільшити targetSdkVesrsion до 29;

Я також використовую:

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

Я спробував усі дописи з цього питання, але жодного успіху.

Я виправляю це, додаючи один рядок .disableCustomViewInflation()до каліграфії 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());
    // ...
}

Я сподіваюся, наступний випуск Каліграфії (Крістофер Дженкінс, дякую за вашу чудову роботу) це теж виправить.


Я навіть не використовував його у своєму проекті, але бібліотека була там у gradle. Після його видалення додаток почав працювати належним чином. Дякую
Пратік Мхатре

4

Після натискання Refactor -> Migrate to AndroidX, Переконайтеся, що всі ваші залежності в build.gradle (Модуль: додаток) позначені на найновіші.

Якщо це не так, залежність відображатиметься виділеним жовтим кольором, і ви можете змінити її, навівши курсор миші на неї.

По-друге, змініть тег ConstraintLayout у всіх файлах макета XML на

androidx.constraintlayout.widget.ConstraintLayout

Для більш безпечного варіанту очистіть свій проект і знову синхронізуйте його після вищевказаних кроків.


2

Переконайтеся, що ви додали залежність для макета обмежень

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

і внесли зміни до

<androidx.constraintlayout.widget.ConstraintLayout instead of

<android.support.constraint.ConstraintLayout

1

Я скопіював та вставив існуючий тег ConstraintLayout із xml, що спричинило проблему для мене. Просто видалення та повторне додавання тегів ConstraintLayout в AndroidStudio з нуля вирішило проблему для мене.


1

Не забудьте змінити на

<androidx.constraintlayout.widget.ConstraintLayout

замість

<android.support.constraint.ConstraintLayout

і

<androidx.constraintlayout.widget.Barrier

замість

<android.support.constraint.Barrier

1

У мене виникла проблема з Android Studio 4.0. Я пару днів користувався android studio 4.0 без проблем. Здавалося б, з нізвідки погляд дизайнера перестав працювати. Я міг це виправити, лише видаливши android studio та встановивши найновішу версію android studio.


0

yepp. mavenCentral () та правильні залежності вирішують мої ті самі проблеми


0

У мене була подібна помилка.

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

Дотримуючись рекомендацій:

add androidx.constraintlayout.ConstraintLayout to the dependencies:

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

І сховище mavenCentral ().

Працює для мене. Я міг скомпілювати APK.


0

Я оновив залежність, але вона не усунула помилку. Потім я зробив чистий проект і збірку, і це працює зараз.


0
  1. Знайдіть усі за замовчуванням, перш ніж натиснути Refactor -> Refactor to AndroidX
  2. Відкрийте цей https://developer.android.com/jetpack/androidx/migrate/class-mappings і знайдіть "android.support.v4.widget.DrawerLayout". У цьому ж рядку назва класу AndroidX - "androidx.drawerlayout.widget.DrawerLayout" скопіюйте його.

введіть тут опис зображення

  1. Замініть усі "android.support.v4.widget.DrawerLayout" на "androidx.drawerlayout.widget.DrawerLayout" у коді, макеті та меню вашого проекту. Після заміни все буде працювати.

Я маю на увазі знайти картографування та використовувати його у цілому проекті.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.