【问题标题】:Error inflating class androidx.constraintlayout.ConstraintLayout after migration to androidx迁移到 androidx 后膨胀类 androidx.constraintlayout.ConstraintLayout 时出错
【发布时间】:2019-03-23 18:28:18
【问题描述】:

我刚刚通过 Android Studio 菜单选项 Refactor -> Refactor to AndroidX

迁移到了 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)

【问题讨论】:

  • 请显示整个堆栈跟踪。
  • 请分享您的应用级构建 gradle,以便我们查看依赖项。

标签: android androidx


【解决方案1】:

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

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

mavenCentral() 上可用。

【讨论】:

  • 第二个constraintlayout 不是以大写C 开头。正确一个:'androidx.constraintlayout:constraintlayout:1.1.3'
  • 你让我免于轻微头痛
  • 为什么在 Android Studio 上会发生这种情况?我将其从 1.1.2 更改为 1.1.3。谢谢。
  • @BollMose - 我不知道为什么,但 1.1.2 只是窒息而死。可能是谷歌的好人错过的一些兼容性程序。他们倾向于这样做。欢迎来到 Android 编程!
  • 对我来说,这应该是唯一可以接受的答案。 1.1.2有一个bug,1.1.3,修复这个问题。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我通过更改所有出现的

    来解决我的问题

    androidx.constraintlayout.ConstraintLayout

    androidx.constraintlayout.widget.ConstraintLayout

    【讨论】:

    • 是的,Android Studio 转换中的错误,必须使用 androidx.constraintlayout.widget.ConstraintLayout 更改 xml 布局中的所有出现...谢谢
    • 我创建了一个带有 androidx 支持库的新项目,我的主要活动中已经有 androidx.constraintlayout.widget.ConstraintLayout 但仍然出现相同的错误。
    • @Kanchan 如果你在一个多模块项目中工作,请检查是否需要在任何地方更新 ConstraintLayout 路径。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      build.gradle => 检查依赖版本

      implementation 'androidx.constraintlayout:constraintlayout:1.1.1'
      


      改变

      implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
      

      解决了问题

      【讨论】:

      • 它的格式很好,这个答案对我有用。谢谢。
      • 来自 1.1.2。更新到 1.1.3 也为我解决了这个问题。谢谢!
      【解决方案6】:

      我遇到了类似的错误。

      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。

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

          之后我也有同样的问题:

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

          我也用:

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

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

          我通过在 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 感谢您的出色工作)也能修复它。

          【讨论】:

          • 我什至没有在我的项目中使用它,但该库在 gradle 中。删除它后,应用程序开始按预期工作。谢谢
          • 这个对我来说完美无缺。我在 android studio 4 canary 15
          【解决方案9】:

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

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

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

          androidx.constraintlayout.widget.ConstraintLayout

          如需更安全的选择,请在完成上述步骤后清理您的项目并再次同步。

          【讨论】:

            【解决方案10】:

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

            【讨论】:

              【解决方案11】:

              我遇到了同样的问题,我解决了如下:

              如果你已经添加在你的依赖项中

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

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

              androidx.constraintlayout.widget.ConstraintLayout

              【讨论】:

                【解决方案12】:
                1. 找到所有默认之前点击Refactor -> Refactor to AndroidX
                2. 打开这个https://developer.android.com/jetpack/androidx/migrate/class-mappings 并找到“android.support.v4.widget.DrawerLayout”。在同一行 AndroidX 类名是“androidx.drawerlayout.widget.DrawerLayout”复制它。

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

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

                【讨论】:

                  【解决方案13】:

                  确保您的项目完全迁移到 androidx,就我而言,我发现:

                  <android.support.constraint.ConstraintLayout
                  

                  而不是

                    <androidx.constraintlayout.widget.ConstraintLayout
                  

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

                  【讨论】:

                    【解决方案14】:

                    一定要改成

                    <androidx.constraintlayout.widget.ConstraintLayout
                    

                    而不是

                    <android.support.constraint.ConstraintLayout
                    

                    <androidx.constraintlayout.widget.Barrier
                    

                    而不是

                    <android.support.constraint.Barrier
                    

                    【讨论】:

                      【解决方案15】:

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

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

                      并已对

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

                      【讨论】:

                        【解决方案16】:

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

                        【讨论】:

                          【解决方案17】:

                          将约束布局依赖性更改为实现 'androidx.constraintlayout:constraintlayout:2.0.2'

                          【讨论】:

                            【解决方案18】:

                            由于我的实现已经是androidx.constraintlayout.ConstraintLayout,所以只使用一个清洁项目就解决了我的问题。

                            【讨论】:

                              【解决方案19】:

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

                               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"
                              

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 2020-02-23
                                • 2019-06-28
                                • 1970-01-01
                                • 1970-01-01
                                • 2019-04-09
                                • 1970-01-01
                                • 2019-07-12
                                • 1970-01-01
                                相关资源
                                最近更新 更多