web-dev-qa-db-fra.com

Impossible de gonfler la contrainte

Chaque fois que mon application se bloque car elle ne trouve pas Landroidx/constraintlayout/widget/R $ styleable dans classpath. J'ai essayé de reconstruire, d'invalider le cache mais cela me donne toujours la même erreur lors de l'exécution.
J'ai essayé les deux versions 1.1.2 et 1.1.3. Et intéressant: lorsque vous utilisez 1.1.3 androidX Jetifier force simplement l'utilisation de 1.1.2 comme vous pouvez le voir dans le rapport Gradle

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:334)
    at Android.view.LayoutInflater.createView(LayoutInflater.Java:651)
    at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:794)
    at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:734)
    at Android.view.LayoutInflater.inflate(LayoutInflater.Java:496)
    at Android.view.LayoutInflater.inflate(LayoutInflater.Java:427)
    at Android.view.LayoutInflater.inflate(LayoutInflater.Java:374)
    at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.Java:469)
    at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.Java:141)
    at com.github.sharetaxi.LoginActivity.onCreate(LoginActivity.kt:24)
    at Android.app.Activity.performCreate(Activity.Java:7050)
    at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1214)
    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2809)
    at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2931)
    at Android.app.ActivityThread.-wrap11(Unknown Source:0)
    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1620)
    at Android.os.Handler.dispatchMessage(Handler.Java:105)
    at Android.os.Looper.loop(Looper.Java:176)
    at Android.app.ActivityThread.main(ActivityThread.Java:6701)
    at Java.lang.reflect.Method.invoke(Native Method)
    at com.Android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.Java:246)
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:783)
 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)
    at Java.lang.reflect.Constructor.newInstance0(Native Method) 
    at Java.lang.reflect.Constructor.newInstance(Constructor.Java:334) 
    at Android.view.LayoutInflater.createView(LayoutInflater.Java:651) 
    at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:794) 
    at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:734) 
    at Android.view.LayoutInflater.inflate(LayoutInflater.Java:496) 
    at Android.view.LayoutInflater.inflate(LayoutInflater.Java:427) 
    at Android.view.LayoutInflater.inflate(LayoutInflater.Java:374) 
    at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.Java:469) 
    at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.Java:141) 
    at com.github.sharetaxi.LoginActivity.onCreate(LoginActivity.kt:24) 
    at Android.app.Activity.performCreate(Activity.Java:7050) 
    at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1214) 
    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2809) 
    at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2931) 
    at Android.app.ActivityThread.-wrap11(Unknown Source:0) 
    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1620) 
    at Android.os.Handler.dispatchMessage(Handler.Java:105) 
    at Android.os.Looper.loop(Looper.Java:176) 
    at Android.app.ActivityThread.main(ActivityThread.Java:6701) 
    at Java.lang.reflect.Method.invoke(Native Method) 
    at com.Android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.Java:246) 
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:783) 
 Caused by: Java.lang.ClassNotFoundException: Didn't find class "androidx.constraintlayout.widget.R$styleable" on path: DexPathList

J'utilise Android Studio 3. avec un nouveau Android plugin gradle. Et dans mon gradle.properties, j'ai activé jetifier:

Android.useAndroidX=true
Android.enableJetifier=true

La dépendance s'est résolue comme suit:

> Task :app:dependencyInsight
androidx.constraintlayout:constraintlayout:1.1.2
   variant "default" [
      org.gradle.status                                            = release (not requested)
      Requested attributes not found in the selected variant:
         com.Android.build.api.attributes.BuildTypeAttr               = debug
         org.gradle.usage                                             = Java-api
         com.Android.build.gradle.internal.dependency.AndroidTypeAttr = Aar
         org.jetbrains.kotlin.platform.type                           = androidJvm
   ]
   Selection reasons:
      - Was requested
      - Selected by rule : ENABLE_JETIFIER is enabled
      - By constraint : debugRuntimeClasspath uses version 1.1.2

com.Android.support.constraint:constraint-layout:1.1.3 -> androidx.constraintlayout:constraintlayout:1.1.2
+--- debugCompileClasspath
\--- project :general
     \--- debugCompileClasspath

(*) - dependencies omitted (listed previously)

A web-based, searchable dependency report is available by adding the --scan option.

En XML, cela ressemble à ceci:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="@drawable/login_bg"
    Android:orientation="vertical">
...
</androidx.constraintlayout.widget.ConstraintLayout>

MISE À JOUR:

Enfin j'ai dû utiliser la version alpha de ConstraintLayout 2.0 car aucune autre solution n'a été trouvée

9
LackOfKnowledge

Il semble que vous ayez com.Android.support.constraint comme dépendance et non androidx.constraintlayout.

Pour moi en train de changer

implementation 'com.Android.support.constraint:constraint-layout:1.1.3'

à

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

résolu le problème.

1
goldenreign

en dehors de l'utilisation

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

J'ai également dû reconstruire le projet dans Android Studio pour le faire fonctionner

0
h0lgi

ce qui a aidé dans mon cas était simplement de suivre les recommandations de l'EDI - il s'agissait non seulement de mettre à jour la dépendance constraint, mais aussi toutes les autres androidx.

En guise de remarque - je suis tombé dessus juste au démarrage d'un exemple d'application à partir de Android Générateur Studio sur Android Studio 3.3.

0
Antek