Terjadi error saat mengembangkan kelas androidx.constraintlayout.ConstraintLayout setelah migrasi ke androidx

88

Saya baru saja melakukan migrasi ke androidx melalui opsi menu Android Studio Refactor -> Refactor to AndroidX

Saya mendapatkan kesalahan berikut:

android.view.InflateException: Baris file XML biner # 2: Baris file XML biner # 2: Kesalahan menggembungkan kelas androidx.constraintlayout.ConstraintLayout

Ada ide?

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
sumber
Tolong tunjukkan seluruh stacktrace.
TheWanderer
Silakan bagikan build gradle level aplikasi Anda sehingga kami dapat melihat dependensinya.
Abhinav Saxena

Jawaban:

178

Saya memecahkan masalah saya dengan mengubah semua kemunculan

androidx.constraintlayout.ConstraintLayout

untuk

androidx.constraintlayout.widget.ConstraintLayout

KevinMo
sumber
12
Ya, kesalahan pada transformasi Android studio, harus mengubah semua kejadian dalam layout xml dengan androidx.constraintlayout.widget.ConstraintLayout ... terima kasih
issamux
1
Saya telah membuat proyek baru dengan pustaka dukungan androidx dan saya sudah memiliki androidx.constraintlayout.widget.ConstraintLayout dalam aktivitas utama saya tetapi masih mendapatkan kesalahan yang sama.
Kanchan
2
@Kanchan Jika Anda bekerja dalam proyek multi-modul, periksa apakah Anda perlu memperbarui jalur ConstraintLayout di salah satu.
Vasudev
50

Tambahkan androidx.constraintlayout.widget.ConstraintLayoutke dependensi:

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

Ini tersedia di mavenCentral().

Martin Zeitler
sumber
Namun yang kedua constraintlayouttidak dimulai dengan huruf besar C. Yang benar:'androidx.constraintlayout:constraintlayout:1.1.3'
ʍѳђ ઽ ૯ ท
Anda menyelamatkan saya dari sakit kepala ringan
Koen Van Looveren
2
Mengapa ini terjadi di Android Studio? Saya mengubahnya dari 1.1.2 menjadi 1.1.3. Terima kasih.
BollMose
1
@BollMose - Saya tidak tahu mengapa, tetapi 1.1.2 hanya tersedak sampai mati. Mungkin beberapa program kompatibilitas yang terlewatkan oleh orang-orang baik Google. Mereka cenderung sering melakukan itu; selamat datang di pemrograman Android!
SMBiggs
2
Bagi saya, ini adalah satu-satunya jawaban yang dapat diterima. Ada bug yang terdiri dari 1.1.2, 1.1.3, perbaiki masalah ini.
mochadwi
10

Saya memiliki masalah yang sama, saya menyelesaikannya sebagai berikut:

Dalam ketergantungan Anda jika Anda telah menambahkan

implementation 'androidx.constraintlayout:constraintlayout:1.x.x' itu betul

tetapi dalam file layout xml Anda, Anda harus menggunakan widget sebagai

androidx.constraintlayout.widget.ConstraintLayout

Mirwise Khan
sumber
5

Jika setelah menambahkan mavenCentral () sebagai repositori dalam file Gradle Anda dan mengubah androidx.constraintlayout.ConstraintLayoutke androidx.constraintlayout.widget.ConstraintLayouttidak menyelesaikan masalah Anda, coba lakukan Invalidate cache dan mulai ulang dari menu file. Itu berhasil untuk saya.

Neeraj Sewani
sumber
5

build.gradle => periksa versi dependensi

implementation 'androidx.constraintlayout:constraintlayout:1.1.1'


Untuk mengganti

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

memecahkan masalah

Sakthi Vel
sumber
1
Ini diformat dengan baik dan jawaban ini berhasil untuk saya. Terima kasih.
Lukas Bimba
berasal dari 1.1.2. memperbarui ke 1.1.3 memperbaiki ini untuk saya juga. Terima kasih!
Sen
5

Saya mengalami masalah yang sama setelah:

  • perpustakaan dukungan migrasi ke androidx;
  • menaikkan targetSdkVesrsion menjadi 29;

Saya juga menggunakan:

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

Saya mencoba semua posting dari pertanyaan ini, tetapi tidak ada yang berhasil.

Saya memperbaikinya dengan menambahkan satu string .disableCustomViewInflation()ke 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());
    // ...
}

Saya berharap rilis Kaligrafi berikutnya (Christopher Jenkins terima kasih atas kerja bagus Anda) akan memperbaikinya juga di dalam.

Tapa Simpan
sumber
Saya bahkan tidak menggunakannya dalam proyek saya tetapi perpustakaan ada di sana di gradle. Setelah menghapusnya, aplikasi mulai bekerja seperti yang diharapkan. Terima kasih
Pratik Mhatre
yang satu ini bekerja dengan sempurna untuk saya. Saya menggunakan android studio 4 canary 15
Miguel Silva
5

pastikan proyek Anda bermigrasi ke androidx sepenuhnya, Dalam kasus saya, saya menemukan:

<android.support.constraint.ConstraintLayout

dari pada

  <androidx.constraintlayout.widget.ConstraintLayout

Jadi ubahlah dan masalah saya teratasi!

sana ebadi
sumber
4

Setelah mengklik Refactor -> Migrate to AndroidX, Pastikan semua dependensi Anda di build.gradle (Module: app) ditandai ke versi terbaru.

Jika tidak, ketergantungan akan muncul dalam warna kuning yang disorot dan Anda dapat mengubahnya dengan mengarahkan mouse ke atasnya.

Kedua, Ubah tag ConstraintLayout di semua file tata letak XML menjadi

androidx.constraintlayout.widget.ConstraintLayout

Untuk opsi yang lebih aman, bersihkan proyek Anda dan sinkronkan kembali setelah langkah-langkah di atas.

Akshay Chopra
sumber
2

Pastikan Anda telah menambahkan ketergantungan untuk tata letak batasan

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

dan telah melakukan perubahan pada

<androidx.constraintlayout.widget.ConstraintLayout instead of

<android.support.constraint.ConstraintLayout
Ravi
sumber
1

Saya menyalin dan menempelkan tag ConstraintLayout yang ada dari xml, yang menyebabkan masalah bagi saya. Cukup menghapus, dan menambahkan kembali tag ConstraintLayout di AndroidStudio dari awal telah memperbaiki masalah saya.

Abhas Arya
sumber
1

Pastikan untuk mengubah ke

<androidx.constraintlayout.widget.ConstraintLayout

dari pada

<android.support.constraint.ConstraintLayout

dan

<androidx.constraintlayout.widget.Barrier

dari pada

<android.support.constraint.Barrier
kumar
sumber
1

Saya mengalami masalah ini dengan Android Studio 4.0. Saya menggunakan android studio 4.0 selama beberapa hari tanpa masalah. Tampaknya entah dari mana tampilan desainer berhenti bekerja. Saya hanya dapat memperbaikinya dengan menghapus instalan studio android dan menginstal versi studio android terbaru.

MERAH JAMBU
sumber
0

ya. mavenCentral () dan dependensi yang benar memecahkan masalah saya yang sama

Ya Si
sumber
0

Saya mengalami kesalahan serupa.

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

Berikut rekomendasinya:

add androidx.constraintlayout.ConstraintLayout to the dependencies:

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

Dan repositori mavenCentral ().

Bekerja untuk saya. Saya bisa mengkompilasi APK.

Juan Francisco Romero Gutirrez
sumber
0

Saya memperbarui ketergantungan, namun tidak menyelesaikan kesalahan. Kemudian saya melakukan proyek bersih dan membangun dan itu bekerja sekarang.

Bishoy Abd
sumber
0
  1. Temukan semua default sebelum mengklik Refactor -> Refactor to AndroidX
  2. Buka https://developer.android.com/jetpack/androidx/migrate/class-mappings ini dan temukan "android.support.v4.widget.DrawerLayout". Di baris yang sama, nama kelas AndroidX adalah "androidx.drawerlayout.widget.DrawerLayout" salin.

masukkan deskripsi gambar di sini

  1. Ganti semua "android.support.v4.widget.DrawerLayout" menjadi "androidx.drawerlayout.widget.DrawerLayout" dalam kode, tata letak, dan menu proyek Anda. Setelah semua, ganti itu akan berhasil.

Maksud saya, temukan pemetaan dan gunakan di seluruh proyek.

ethemsulan
sumber
0

ubah ketergantungan layout kendala Anda ke implementasi 'androidx.constraintlayout: constraintlayout: 2.0.2'

Emmanuel Ametepee
sumber