迁移到 androidx 后错误膨胀 class androidx.constraintlayout.ConstraintLayout

Error inflating class androidx.constraintlayout.ConstraintLayout after migration to androidx

我刚刚通过 Android Studio 菜单选项迁移到 androidx Refactor -> Refactor to AndroidX

我收到以下错误:

android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class androidx.constraintlayout.ConstraintLayout

有什么想法吗?

堆栈跟踪:

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)

androidx.constraintlayout.widget.ConstraintLayout添加到依赖项中:

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

可在 mavenCentral() 购买。

是的。 mavenCentral() 和正确的依赖关系解决了我同样的问题

我通过更改所有出现的

来解决我的问题

androidx.constraintlayout.ConstraintLayout

androidx.constraintlayout.widget.ConstraintLayout

如果在 Gradle 文件中添加 mavenCentral() 作为存储库并将 androidx.constraintlayout.ConstraintLayout 更改为 androidx.constraintlayout.widget.ConstraintLayout 后没有解决您的问题问题然后尝试从文件菜单中执行使缓存无效并重新启动。它对我有用。

build.gradle => 检查依赖版本

implementation 'androidx.constraintlayout:constraintlayout:1.1.1'


改变

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

解决了问题

我有类似的错误。

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

遵循建议:

add androidx.constraintlayout.ConstraintLayout to the dependencies:

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

和存储库 mavenCentral()。

适合我。我可以编译 APK。

我更新了依赖项,但它没有解决错误。 然后我做了一个干净的项目并构建它现在正在工作。

我在之后遇到了同样的问题:

  • 迁移支持库到 androidx;
  • 将 targetSdkVesrsion 增加到 29;

我也用:

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

我尝试了这个问题的所有帖子,但是 none 成功了。

我通过在 Calligraphy init 中添加一个字符串 .disableCustomViewInflation() 来修复它:

@Override
public void onCreate() {

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

我希望 Calligraphy 的下一个版本(Christopher Jenkins 感谢您的出色工作)也能修复它。

点击 Refactor -> Migrate to AndroidX 后,确保 build.gradle(Module:app) 中的所有依赖项都标记为 最新版本。

如果不是,依赖项将以黄色突出显示,您可以通过将鼠标悬停在它上面来更改它。

其次, 将所有 XML 布局文件中的 ConstraintLayout 标签更改为

androidx.constraintlayout.widget.ConstraintLayout

为了更安全的选择,清理您的项目并在上述步骤后再次同步它。

我从 xml 复制并粘贴了一个现有的 ConstraintLayout 标签,这导致了我的问题。只需从头开始在 AndroidStudio 中删除并重新添加 ConstraintLayout 标签即可解决我的问题。

我遇到了同样的问题,我是这样解决的:

在您的依赖项中,如果您添加了

implementation 'androidx.constraintlayout:constraintlayout:1.x.x' 正确

但在您的 xml 布局文件中,您必须将小部件用作

androidx.constraintlayout.widget.ConstraintLayout

  1. 在点击Refactor -> Refactor to AndroidX之前找到所有default
  2. 打开此 https://developer.android.com/jetpack/androidx/migrate/class-mappings 并找到 "android.support.v4.widget.DrawerLayout"。在同一行 AndroidX class name is "androidx.drawerlayout.widget.DrawerLayout" copy it.

  1. 将您项目的代码、布局和菜单中的所有 "android.support.v4.widget.DrawerLayout" 替换为 "androidx.drawerlayout.widget.DrawerLayout"。替换后就可以了。

我的意思是找到映射并在整个项目中使用它。

确保你的项目完全迁移到 androidx,在我的例子中我发现:

<android.support.constraint.ConstraintLayout

而不是

  <androidx.constraintlayout.widget.ConstraintLayout

所以改变它,我的问题就解决了!

确保更改为

<androidx.constraintlayout.widget.ConstraintLayout

而不是

<android.support.constraint.ConstraintLayout

<androidx.constraintlayout.widget.Barrier

而不是

<android.support.constraint.Barrier

确保你已经添加了约束布局的依赖

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

并对

进行了更改
<androidx.constraintlayout.widget.ConstraintLayout instead of

<android.support.constraint.ConstraintLayout

我在使用 Android Studio 4.0 时遇到了这个问题。我使用 android studio 4.0 几天没有问题。设计器视图似乎无处不在停止工作。 我只能通过卸载 android studio 并安装最新的 android studio 版本来解决这个问题。

将您的 constraintlayout 依赖项更改为实现 'androidx.constraintlayout:constraintlayout:2.0.2'

由于我的实施已经 androidx.constraintlayout.ConstraintLayout,仅使用 Clean Project 就解决了我的问题。

None 的解决方案对我有用,仔细查看异常堆栈跟踪:

 Caused by: android.content.res.Resources$NotFoundException: Resource "com.XXX.XXX:drawable/walpaper" (7f0800aa)  is not a Drawable (color or path): TypedValue{t=0x1/d=0x7f0800aa a=-1 r=0x7f0800aa}
    at android.content.res.Resources.loadDrawableForCookie(Resources.java:2690)
    at android.content.res.Resources.loadDrawable(Resources.java:2614)
    at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
    at android.view.View.<init>(View.java:3791)
    at android.view.ViewGroup.<init>(ViewGroup.java:524)
    at android.view.ViewGroup.<init>(ViewGroup.java:520)
    at android.view.ViewGroup.<init>(ViewGroup.java:516)

加载可绘制背景图像导致我的旧测试设备出现问题(较新的设备加载它就好了)。刚刚从我的布局中删除了以下行,它现在工作正常,现在需要弄清楚如何设置背景..

 android:background="@drawable/walpaper"

我遇到了 ImageFilterView 问题将 jpg 图像转换为 png 为我解决了这个问题。