Fehler beim Aufblasen der Klasse androidx.constraintlayout.ConstraintLayout nach der Migration zu androidx

85

Ich habe gerade eine Migration zu AndroidX über die Android Studio-Menüoption Refactor -> Refactor zu AndroidX durchgeführt

Ich erhalte die folgende Fehlermeldung:

android.view.InflateException: Zeile 2 der binären XML-Datei: Zeile 2 der binären XML-Datei: Fehler beim Aufblasen der Klasse androidx.constraintlayout.ConstraintLayout

Irgendeine Idee?

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
quelle
Zeigen Sie bitte den gesamten Stacktrace.
TheWanderer
Bitte teilen Sie Ihren Build-Gradle auf App-Ebene mit, damit wir die Abhängigkeiten sehen können.
Abhinav Saxena

Antworten:

171

Ich löse mein Problem, indem ich alle Vorkommen von ändere

androidx.constraintlayout.ConstraintLayout

zu

androidx.constraintlayout.widget.ConstraintLayout

KevinMo
quelle
12
Ja, Fehler in Android Studio-Transformationen, muss alle Vorkommen im XML-Layout mit androidx.constraintlayout.widget.ConstraintLayout ändern ... danke
issamux
1
Ich habe ein neues Projekt mit der AndroidX-Unterstützungsbibliothek erstellt und habe bereits androidx.constraintlayout.widget.ConstraintLayout in meiner Hauptaktivität, erhalte aber immer noch den gleichen Fehler.
Kanchan
2
@Kanchan Wenn Sie in einem Projekt mit mehreren Modulen arbeiten, prüfen Sie, ob Sie den ConstraintLayout-Pfad in einem beliebigen aktualisieren müssen.
Vasudev
49

In androidx.constraintlayout.widget.ConstraintLayoutden Abhängigkeiten:

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

Es ist verfügbar am mavenCentral().

Martin Zeitler
quelle
Die zweite constraintlayoutbeginnt jedoch nicht mit Großbuchstaben C. Richtige:'androidx.constraintlayout:constraintlayout:1.1.3'
ʍѳђ ઽ ૯ ท
Sie haben mich vor leichten Kopfschmerzen
bewahrt
1
Warum passiert das unter Android Studio? Ich habe es von 1.1.2 auf 1.1.3 geändert. Danke dir.
BollMose
1
@BollMose - Ich weiß nicht warum, aber 1.1.2 erstickt nur zu Tode. Wahrscheinlich ein Kompatibilitätsprogramm, das die netten Leute von Google vermisst haben. Sie neigen dazu, das viel zu tun; Willkommen bei der Android-Programmierung!
SMBiggs
2
Für mich sollte dies die einzig akzeptable Antwort sein. Es gibt einen Fehler aus 1.1.2, 1.1.3, um dieses Problem zu beheben.
Mochadwi
10

Ich hatte das gleiche Problem, ich habe es wie folgt gelöst:

In Ihren Abhängigkeiten, wenn Sie hinzugefügt haben

implementation 'androidx.constraintlayout:constraintlayout:1.x.x' das ist richtig

In Ihrer XML-Layoutdatei müssen Sie jedoch das Widget als verwenden

androidx.constraintlayout.widget.ConstraintLayout

Mirwise Khan
quelle
5

Wenn Sie nach dem Hinzufügen von mavenCentral () als Repository in Ihrer Gradle-Datei und dem Ändern androidx.constraintlayout.ConstraintLayoutzu androidx.constraintlayout.widget.ConstraintLayoutIhr Problem nicht gelöst haben, versuchen Sie, den Cache ungültig zu machen, und starten Sie über das Dateimenü neu . Es hat bei mir funktioniert.

Neeraj Sewani
quelle
5

build.gradle => Abhängigkeitsversion prüfen

implementation 'androidx.constraintlayout:constraintlayout:1.1.1'


wechseln

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

Problem gelöst

Sakthi Vel
quelle
1
Es ist gut formatiert und diese Antwort hat bei mir funktioniert. Danke dir.
Lukas Bimba
kam vom 1.1.2. Das Update auf 1.1.3 hat dies auch für mich behoben. Vielen Dank!
Mo
5

Stellen Sie sicher, dass Ihr Projekt vollständig auf AndroidX migriert ist. In meinem Fall habe ich Folgendes gefunden:

<android.support.constraint.ConstraintLayout

anstatt

  <androidx.constraintlayout.widget.ConstraintLayout

Also ändere es und mein Problem ist behoben!

Sana Ebadi
quelle
4

Ich habe das gleiche Problem nach:

  • Migrationsunterstützungsbibliothek zu AndroidX;
  • Inkrementiere targetSdkVesrsion auf 29;

Ich benutze auch:

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

Ich habe alle Beiträge aus dieser Frage ausprobiert, aber keinen Erfolg.

Ich behebe es, indem ich eine Zeichenfolge .disableCustomViewInflation()zu Calligraphy init hinzufüge :

@Override
public void onCreate() {

    super.onCreate();
    // ...
    CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
            .setDefaultFontPath("fonts/Sans-Regular.ttf")
            .setFontAttrId(R.attr.fontPath)
            .disableCustomViewInflation() // <----- this fix
            .build());
    // ...
}

Ich hoffe, dass die nächste Version von Calligraphy (Christopher Jenkins, danke für Ihren großartigen Job) das Problem auch beheben wird.

Tapa Speichern
quelle
Ich habe es nicht einmal in meinem Projekt verwendet, aber die Bibliothek war in Gradle da. Nach dem Entfernen funktionierte die App wie erwartet. Danke
Pratik Mhatre
4

Refactor -> Migrate to AndroidXStellen Sie nach dem Klicken auf sicher, dass alle Abhängigkeiten in build.gradle (Modul: App) auf die neueste Version markiert sind .

Wenn dies nicht der Fall ist, wird die Abhängigkeit in gelb hervorgehobener Farbe angezeigt, und Sie können sie ändern, indem Sie den Mauszeiger darüber halten.

Zweitens ändern Sie das ConstraintLayout-Tag in allen XML-Layoutdateien in

androidx.constraintlayout.widget.ConstraintLayout

Bereinigen Sie Ihr Projekt für eine sicherere Option und synchronisieren Sie es nach den obigen Schritten erneut.

Akshay Chopra
quelle
2

Stellen Sie sicher, dass Sie die Abhängigkeit für das Einschränkungslayout hinzugefügt haben

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

und haben die Änderungen an vorgenommen

<androidx.constraintlayout.widget.ConstraintLayout instead of

<android.support.constraint.ConstraintLayout
Ravi
quelle
1

Ich habe ein vorhandenes ConstraintLayout-Tag aus der XML-Datei kopiert und eingefügt, was das Problem für mich verursacht hat. Durch einfaches Löschen und erneutes Hinzufügen der ConstraintLayout-Tags in AndroidStudio von Grund auf wurde das Problem für mich behoben.

Abhas Arya
quelle
1

Stellen Sie sicher, dass Sie zu wechseln

<androidx.constraintlayout.widget.ConstraintLayout

anstatt

<android.support.constraint.ConstraintLayout

und

<androidx.constraintlayout.widget.Barrier

anstatt

<android.support.constraint.Barrier
Kumar
quelle
1

Ich hatte dieses Problem mit Android Studio 4.0. Ich habe Android Studio 4.0 für ein paar Tage ohne Probleme verwendet. Scheinbar aus dem Nichts funktionierte die Designeransicht nicht mehr. Ich konnte dies nur beheben, indem ich Android Studio deinstallierte und die neueste Android Studio-Version installierte.

ROSA
quelle
0

yepp. mavenCentral () und korrekte Abhängigkeiten lösen meine gleichen Probleme

Ya Si
quelle
0

Ich hatte einen ähnlichen Fehler.

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

Nach den Empfehlungen:

add androidx.constraintlayout.ConstraintLayout to the dependencies:

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

Und das Repository mavenCentral ().

Funktioniert bei mir. Ich könnte die APK kompilieren.

Juan Francisco Romero Gutirrez
quelle
0

Ich habe die Abhängigkeit aktualisiert, den Fehler jedoch nicht behoben. Dann habe ich ein sauberes Projekt gemacht und gebaut und es funktioniert jetzt.

Bishoy Abd
quelle
0
  1. Suchen Sie alle Standardwerte, bevor Sie auf Refactor -> Refactor to AndroidX klicken
  2. Öffnen Sie diese https://developer.android.com/jetpack/androidx/migrate/class-mappings und suchen Sie "android.support.v4.widget.DrawerLayout". In derselben Zeile lautet der Name der AndroidX-Klasse "androidx.drawerlayout.widget.DrawerLayout". Kopieren Sie ihn.

Geben Sie hier die Bildbeschreibung ein

  1. Ersetzen Sie alle "android.support.v4.widget.DrawerLayout" durch "androidx.drawerlayout.widget.DrawerLayout" in Code, Layout und Menü Ihres Projekts. Nach dem Ersetzen funktioniert es.

Ich meine, Mapping finden und im gesamten Projekt verwenden.

ethemsulan
quelle