web-dev-qa-db-ja.com

ConstraintLayoutを拡張できません

クラスパスでLandroidx/constraintlayout/widget/R $ styleableが見つからないため、アプリがクラッシュするたび。キャッシュを再構築して無効にしようとしましたが、実行時に常に同じエラーが発生しました。
バージョン1.1.2と1.1.3の両方を試しました。そして興味深い:1.1.3 androidX Jetifierを使用する場合、gradleレポートからわかるように、1.1.2を強制的に使用します

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

私はAndroid Studio 3. with fresh Android gradle pluginを使用しています。そして、私のgradle.propertiesでjetifierを有効にしています:

Android.useAndroidX=true
Android.enableJetifier=true

依存関係は次のように解決されました:

> 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.

Xmlでは次のようになります。

<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>

更新:

他の解決策が見つからなかったため、最後にConstraintLayout 2.0 alphaバージョンを使用する必要がありました

9
LackOfKnowledge

依存関係はcom.Android.support.constraintではなくandroidx.constraintlayoutのようです。

私にとっては

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

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

問題を修正しました。

1
goldenreign

使用する以外に

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

Android Studioでプロジェクトを再ビルドして機能させる必要もありました

0
h0lgi

私の場合に役立ったのは、IDEの推奨事項に従うだけでした。これらはconstraint依存関係を更新するだけでなく、他のすべてのandroidx依存関係も更新するためのものでした。

付記として-Android Studio generator on Android Studio 3.3。

0
Antek