Właśnie wykonałem migrację do androidx poprzez opcję menu Android Studio Refactor -> Refactor to AndroidX
Otrzymuję następujący błąd:
android.view.InflateException: wiersz pliku binarnego XML nr 2: wiersz pliku binarnego XML nr 2: Błąd podczas zawyżania klasy androidx.constraintlayout.ConstraintLayout
Dowolny pomysł?
Ślad stosu:
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)
Odpowiedzi:
Rozwiązuję swój problem, zmieniając wszystkie wystąpienia
do
źródło
Dodaj
androidx.constraintlayout.widget.ConstraintLayout
do zależności:dependencies { // https://mvnrepository.com/artifact/androidx.constraintlayout/constraintlayout implementation "androidx.constraintlayout:constraintlayout:1.1.3" }
Jest dostępny na
mavenCentral()
.źródło
constraintlayout
nie zaczyna się wielką literąC
. Poprawna:'androidx.constraintlayout:constraintlayout:1.1.3'
Miałem ten sam problem, rozwiązałem go następująco:
W twoich zależnych gatunkach, jeśli dodałeś
implementation 'androidx.constraintlayout:constraintlayout:1.x.x'
to jest poprawneale w pliku układu xml musisz użyć widżetu jako
androidx.constraintlayout.widget.ConstraintLayout
źródło
Jeśli po dodaniu mavenCentral () jako repozytorium w pliku Gradle i zmianie
androidx.constraintlayout.ConstraintLayout
naandroidx.constraintlayout.widget.ConstraintLayout
nie rozwiązało problemu, spróbuj wykonać Unieważnij pamięć podręczną i uruchom ponownie z menu pliku. U mnie to zadziałało.źródło
build.gradle => sprawdź wersję zależności
implementation 'androidx.constraintlayout:constraintlayout:1.1.1'
zmienić
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
Rozwiązać problem
źródło
Mam ten sam problem po:
Używam również:
implementation "uk.co.chrisjenx:calligraphy:2.3.0"
Wypróbowałem wszystkie posty z tego pytania, ale bez powodzenia.
Naprawiam to, dodając jeden ciąg
.disableCustomViewInflation()
do inicjalizacji Calligraphy:@Override public void onCreate() { super.onCreate(); // ... CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() .setDefaultFontPath("fonts/Sans-Regular.ttf") .setFontAttrId(R.attr.fontPath) .disableCustomViewInflation() // <----- this fix .build()); // ... }
Mam nadzieję, że następne wydanie Calligraphy (dzięki Christopherze Jenkinsowi za świetną robotę) też to naprawi.
źródło
upewnij się, że twój projekt jest całkowicie migrowany do androidx, w moim przypadku znalazłem:
<android.support.constraint.ConstraintLayout
zamiast
<androidx.constraintlayout.widget.ConstraintLayout
Więc zmień to, a mój problem zostanie rozwiązany!
źródło
Po kliknięciu
Refactor -> Migrate to AndroidX
upewnij się, że wszystkie zależności w pliku build.gradle (moduł: aplikacja) są oznaczone do najnowszej wersji.Jeśli tak nie jest, zależność pojawi się w żółtym kolorze i możesz ją zmienić, najeżdżając na nią kursorem myszy.
Po drugie, Zmień tag ConstraintLayout we wszystkich plikach układu XML na
Aby uzyskać bezpieczniejszą opcję, wyczyść projekt i zsynchronizuj go ponownie po wykonaniu powyższych czynności.
źródło
Upewnij się, że dodano zależność do układu ograniczeń
dependencies { implementation "androidx.constraintlayout:constraintlayout:1.1.3" }
i wprowadzili zmiany w
<androidx.constraintlayout.widget.ConstraintLayout instead of <android.support.constraint.ConstraintLayout
źródło
Skopiowałem i wkleiłem istniejący tag ConstraintLayout z xml, który był przyczyną problemu. Po prostu usunięcie i ponowne dodanie tagów ConstraintLayout w AndroidStudio od zera rozwiązało problem.
źródło
Pamiętaj, aby zmienić na
<androidx.constraintlayout.widget.ConstraintLayout
zamiast
<android.support.constraint.ConstraintLayout
i
<androidx.constraintlayout.widget.Barrier
zamiast
<android.support.constraint.Barrier
źródło
Miałem ten problem z Androidem Studio 4.0. Korzystałem z Android Studio 4.0 przez kilka dni bez problemów. Pozornie znikąd widok projektanta przestał działać. Mogłem to naprawić tylko poprzez odinstalowanie Android Studio i zainstalowanie najnowszej wersji Android Studio.
źródło
tak. mavenCentral () i poprawne zależności rozwiązują te same problemy
źródło
Miałem podobny błąd.
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
Zgodnie z zaleceniami:
add androidx.constraintlayout.ConstraintLayout to the dependencies: dependencies { implementation "androidx.constraintlayout:constraintlayout:1.1.3" }
A repozytorium mavenCentral ().
Pracuje dla mnie. Mógłbym skompilować APK.
źródło
Zaktualizowałem zależność, ale nie rozwiązało to błędu. Następnie zrobiłem czysty projekt i zbudowałem i teraz działa.
źródło
Mam na myśli znalezienie mapowania i wykorzystanie go w całym projekcie.
źródło
zmień zależność układu ograniczeń na implementację „androidx.constraintlayout: constraintlayout: 2.0.2”
źródło