Errore durante il gonfiaggio della classe androidx.constraintlayout.ConstraintLayout dopo la migrazione ad androidx


88

Ho appena effettuato una migrazione ad androidx tramite l'opzione di menu di Android Studio Refactor -> Refactoring ad AndroidX

Ricevo il seguente errore:

android.view.InflateException: riga file XML binario n. 2: riga file XML binario n. 2: errore durante il gonfiaggio della classe androidx.constraintlayout.ConstraintLayout

Qualche idea?

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)

Mostra l'intero stacktrace per favore.
TheWanderer

Si prega di condividere il gradle della build a livello di app in modo che possiamo vedere le dipendenze.
Abhinav Saxena

Risposte:


178

Risolvo il mio problema modificando tutte le occorrenze di

androidx.constraintlayout.ConstraintLayout

per

androidx.constraintlayout.widget.ConstraintLayout


12
Sì, errore nelle trasformazioni di Android Studio, è necessario modificare tutte le occorrenze nel layout xml con androidx.constraintlayout.widget.ConstraintLayout ... grazie
issamux

1
Ho creato un nuovo progetto con la libreria di supporto androidx e ho già androidx.constraintlayout.widget.ConstraintLayout nella mia attività principale, ma ricevo ancora lo stesso errore.
Kanchan

2
@Kanchan Se stai lavorando a un progetto multi-modulo, controlla se devi aggiornare il percorso ConstraintLayout in qualsiasi file.
Vasudev

50

Aggiungi androidx.constraintlayout.widget.ConstraintLayoutalle dipendenze:

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

È disponibile su mavenCentral().


Il secondo, constraintlayouttuttavia, non inizia in maiuscolo C. Quello corretto:'androidx.constraintlayout:constraintlayout:1.1.3'
ʍѳђ ઽ ૯ ท

Mi hai salvato da un piccolo mal di testa
Koen Van Looveren

2
Perché questo accade su Android Studio? L'ho cambiato da 1.1.2 a 1.1.3. Grazie.
BollMose

1
@BollMose - Non so perché, ma 1.1.2 soffoca a morte. Probabilmente un programma di compatibilità che le brave persone di Google hanno perso. Tendono a farlo molto; benvenuto nella programmazione Android!
SMBiggs

2
Per me, questa dovrebbe essere l'unica risposta accettabile. C'è un bug composto da 1.1.2, 1.1.3, che risolve questo problema.
mochadwi

10

Ho avuto lo stesso problema, l'ho risolto come segue:

Nelle tue dipendenze se hai aggiunto

implementation 'androidx.constraintlayout:constraintlayout:1.x.x' è corretto

ma nel tuo file di layout xml devi usare il widget come

androidx.constraintlayout.widget.ConstraintLayout


5

Se dopo aver aggiunto mavenCentral () come repository nel tuo file Gradle e aver cambiato androidx.constraintlayout.ConstraintLayoutin androidx.constraintlayout.widget.ConstraintLayoutnon ha risolto il tuo problema, prova a Invalidare la cache e riavvia dal menu file. Ha funzionato per me.


5

build.gradle => controlla la versione delle dipendenze

implementation 'androidx.constraintlayout:constraintlayout:1.1.1'


cambiare

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

problema risolto


1
È formattato bene e questa risposta ha funzionato per me. Grazie.
Lukas Bimba

proveniva da 1.1.2. l'aggiornamento a 1.1.3 ha risolto questo problema anche per me. Grazie!
Lunedì

5

Ho lo stesso problema dopo:

  • libreria di supporto per la migrazione ad androidx;
  • incrementare targetSdkVesrsion a 29;

Uso anche:

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

Ho provato tutti i post di questa domanda, ma senza successo.

Lo risolvo aggiungendo una stringa .disableCustomViewInflation()a 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());
    // ...
}

Spero che il prossimo rilascio di Calligraphy (Christopher Jenkins grazie per il tuo ottimo lavoro) lo risolva anche all'interno.


Non lo stavo nemmeno usando nel mio progetto, ma la biblioteca era lì in gradle. Dopo averlo rimosso, l'app ha iniziato a funzionare come previsto. Grazie
Pratik Mhatre

questo ha funzionato perfettamente per me. Sono su Android Studio 4 Canary 15
Miguel Silva

5

assicurati che il tuo progetto venga migrato completamente su androidx, nel mio caso ho trovato:

<android.support.constraint.ConstraintLayout

invece di

  <androidx.constraintlayout.widget.ConstraintLayout

Quindi cambialo e il mio problema risolto!


4

Dopo aver fatto clic su Refactor -> Migrate to AndroidX, assicurati che tutte le dipendenze in build.gradle (Modulo: app) siano contrassegnate alla versione più recente.

In caso contrario, la dipendenza apparirà in colore giallo evidenziato e puoi cambiarla passando il mouse sopra di essa.

In secondo luogo, cambia il tag ConstraintLayout in tutti i file di layout XML in

androidx.constraintlayout.widget.ConstraintLayout

Per un'opzione più sicura, pulisci il progetto e sincronizzalo di nuovo dopo i passaggi precedenti.


2

Assicurati di aver aggiunto la dipendenza per il layout dei vincoli

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

e hanno apportato le modifiche a

<androidx.constraintlayout.widget.ConstraintLayout instead of

<android.support.constraint.ConstraintLayout

1

Ho copiato e incollato un tag ConstraintLayout esistente da xml, che stava causando il problema per me. La semplice eliminazione e aggiunta di tag ConstraintLayout in AndroidStudio da zero ha risolto il problema per me.


1

Assicurati di cambiare in

<androidx.constraintlayout.widget.ConstraintLayout

invece di

<android.support.constraint.ConstraintLayout

e

<androidx.constraintlayout.widget.Barrier

invece di

<android.support.constraint.Barrier

1

Ho avuto questo problema con Android Studio 4.0. Ho usato Android Studio 4.0 per un paio di giorni senza problemi. Apparentemente dal nulla la vista designer ha smesso di funzionare. Potrei risolvere questo problema solo disinstallando Android Studio e installando la versione più recente di Android Studio.


0

yepp. mavenCentral () e le dipendenze corrette risolvono i miei stessi problemi


0

Ho avuto un errore simile.

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

Di seguito le raccomandazioni:

add androidx.constraintlayout.ConstraintLayout to the dependencies:

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

E il repository mavenCentral ().

Per me va bene. Potrei compilare l'APK.


0

Ho aggiornato la dipendenza, ma non ha risolto l'errore. Poi ho fatto un progetto pulito e costruito e ora funziona.


0
  1. Trova tutti i valori predefiniti prima di fare clic su Refactor -> Refactoring su AndroidX
  2. Apri questo https://developer.android.com/jetpack/androidx/migrate/class-mappings e trova "android.support.v4.widget.DrawerLayout". Nella stessa riga il nome della classe AndroidX è "androidx.drawerlayout.widget.DrawerLayout", copialo.

inserisci qui la descrizione dell'immagine

  1. Sostituisci tutto "android.support.v4.widget.DrawerLayout" in "androidx.drawerlayout.widget.DrawerLayout" nel codice, nel layout e nel menu del tuo progetto. Dopo tutto, la sostituzione funzionerà.

Intendo trovare la mappatura e usarla nell'intero progetto.


0

cambia la dipendenza del layout dei vincoli in implementazione "androidx.constraintlayout: constraintlayout: 2.0.2"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.