【问题标题】:Can't run the app after migration to androidX: android.view.InflateException迁移到 androidX 后无法运行应用程序:android.view.InflateException
【发布时间】:2019-07-21 20:35:59
【问题描述】:

迁移到 androidX 花了很多功夫,但毕竟我仍然无法解决一个问题。

当我尝试运行我的应用时,我收到了这个错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{studio.dookola.zgkim/studio.dookola.zgkim.MainActivity}: android.view.InflateException: Binary XML file line #12: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
            at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
            at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
            at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
            at android.os.Handler.dispatchMessage(Handler.java:106)
            at android.os.Looper.loop(Looper.java:193)
            at android.app.ActivityThread.main(ActivityThread.java:6669)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
         Caused by: android.view.InflateException: Binary XML file line #12: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
         Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
         Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.design.widget.CoordinatorLayout" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/base.apk", zip file "/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/split_lib_dependencies_apk.apk", zip file "/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/split_lib_resources_apk.apk", zip file "/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/split_lib_slice_0_apk.apk", zip file "/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/split_lib_slice_1_apk.apk", zip file "/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/split_lib_slice_2_apk.apk", zip file "/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/split_lib_slice_3_apk.apk", zip file "/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/split_lib_slice_4_apk.apk", zip file "/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/split_lib_slice_5_apk.apk", zip file "/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/split_lib_slice_6_apk.apk", zip file "/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/split_lib_slice_7_apk.apk", zip file "/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/split_lib_slice_8_apk.apk", zip file "/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/lib/x86, /system/lib]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
            at android.view.LayoutInflater.createView(LayoutInflater.java:606)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
            at android.view.LayoutInflater.parseInclude(LayoutInflater.java:965)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:859)
            at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
            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:140)
    2019-07-21 22:15:47.519 18965-18965/studio.dookola.zgkim E/AndroidRuntime:     at studio.dookola.zgkim.MainActivity.onCreate(MainActivity.java:72)
            at android.app.Activity.performCreate(Activity.java:7136)
            at android.app.Activity.performCreate(Activity.java:7127)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
            at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
            at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
            at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
            at android.os.Handler.dispatchMessage(Handler.java:106)
            at android.os.Looper.loop(Looper.java:193)
            at android.app.ActivityThread.main(ActivityThread.java:6669)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
            Suppressed: java.io.IOException: No original dex files found for dex location /data/app/studio.dookola.zgkim-dWUlCZ9saQuQRJ7D8y0mqQ==/split_lib_resources_apk.apk
            at dalvik.system.DexFile.openDexFileNative(Native Method)
            at dalvik.system.DexFile.openDexFile(DexFile.java:354)
            at dalvik.system.DexFile.<init>(DexFile.java:101)
            at dalvik.system.DexFile.<init>(DexFile.java:75)
            at dalvik.system.DexPathList.loadDexFile(DexPathList.java:394)
            at dalvik.system.DexPathList.makeDexElements(DexPathList.java:354)
            at dalvik.system.DexPathList.<init>(DexPathList.java:164)
            at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:74)
            at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:65)
            at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:64)
            at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:73)
            at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:88)
            at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:74)
            at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:40)
            at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:727)
            at android.app.LoadedApk.getClassLoader(LoadedApk.java:810)
            at android.app.LoadedApk.getResources(LoadedApk.java:1032)
            at android.app.ContextImpl.createAppContext(ContextImpl.java:2345)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5749)
            at android.app.ActivityThread.access$1100(ActivityThread.java:199)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
                    ... 6 more

MainActivity的第72行指出:setContentView(R.layout.activity_main);

我的 MainActivity .xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start"
    layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer"
        />

</androidx.drawerlayout.widget.DrawerLayout>

我不知道是什么导致了这个问题。 我搜索了堆栈溢出,但没有找到解决方案。 任何建议将不胜感激。

【问题讨论】:

  • 请将您的 app/build.gradle 添加到您的问题中

标签: android-studio androidx


【解决方案1】:
Caused by: android.view.InflateException: Binary XML file line #12: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout
Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.design.widget.CoordinatorLayout

根据这些,我猜你在迁移到 AndroidX 时没有更改依赖项和 XML 标签。 Refactor > Migrate to AndroidX 工具并不能为您做到这一点,不幸的是,它只会更改 Java 引用。请参阅this 了解更多信息。当您更改完 Gradle 依赖项后,请在您的 XML 文件中将所有较旧的 Android 支持标签更改为较新的 AndroidX 标签。

【讨论】:

  • 感谢您的提示。我已经更改了依赖项,但我还必须编辑每个 XML 文件并手动将标签从 android 更改为 androidX
  • 幸运的是。
  • @MarkWalczak 很高兴我能帮上忙。也请接受我的回答。 (点击投票视图下的复选标记。)
  • 由于您的建议“重构”> 迁移到 AndroidX 不会改变一切都是有用的,我可以接受您的回答,但请添加有关编辑 XML 文件的信息。
猜你喜欢
  • 1970-01-01
  • 2019-06-27
  • 2019-03-23
  • 2019-07-08
  • 2019-11-08
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
相关资源
最近更新 更多