Android X依赖项和XML导致崩溃

时间:2019-02-17 09:03:04

标签: android xml layout dependencies androidx

我最近更新为Android 3.3,现在许多依赖项已更改为 AndroidX 。这也导致应用程序崩溃,同时还需要使用 XML 进行依赖项更改。我在CoordinatorLayout中遇到了类似的问题。我搜索了stackoverflow,因为AndroidX相对较新,所以没有太多关于此主题的问题。因此,我觉得有必要在这方面提出一个问题。

在哪里可以类似地为所有XML获取floatactionbutton的xml,那里有一个网站可以为androidX依赖项获取XML。

XML

  

崩溃Logcat

android.view.InflateException: Binary XML file line #15: Binary XML file line #15: Error inflating class android.support.design.widget.FloatingActionButton
Caused by: android.view.InflateException: Binary XML file line #15: Error inflating class android.support.design.widget.FloatingActionButton
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.design.widget.FloatingActionButton" on path: DexPathList[[zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/base.apk", zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_dependencies_apk.apk", zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_resources_apk.apk", zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_0_apk.apk", zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_1_apk.apk", zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_2_apk.apk", zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_3_apk.apk", zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_4_apk.apk", zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_5_apk.apk", zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_6_apk.apk", zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_7_apk.apk", zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_8_apk.apk", zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/lib/arm, /system/lib, /vendor/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
    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.createViewFromTag(LayoutInflater.java:730)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
    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 com.kc.unsplashdemo.OneFragment.onCreateView(OneFragment.java:42)
    at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2439)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
    at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
    at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:802)
    at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
    at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
    at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
    at androidx.fragment.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2243)
    at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:654)
    at androidx.fragment.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:146)

依赖项

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation project(':androidunsplash')
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation("com.squareup.okhttp3:okhttp:3.12.0")
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'com.google.code.gson:gson:2.8.5'

    implementation 'com.google.android.material:material:1.0.0'
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.1'
}

3 个答案:

答案 0 :(得分:0)

仅为androidX添加依赖项是不够的。要将组件迁移到androidX,您必须手动更改它们。虽然搜索所有新软件包可能很耗时,但我建议您尝试删除xml中的旧名称,然后开始键入一个新名称。如果androidX依赖项确实添加到了您的项目中,则在您开始键入Android Studio之后会建议您使用新的程序包名称。 enter image description here enter image description here enter image description here

此外,您可以查找其他信息here

答案 1 :(得分:0)

您可以找到旧android 依赖项与使用 androidx here

新依赖项的映射。

您将在这里找到所需的依赖项:

com.google.android.material.floatingactionbutton.FloatingActionButton

当替换布局上的某些内容时,我建议使用ctrl + r在整个项目中进行更新并节省您的时间,因为在迁移到androidx时确实需要进行大量的手动工作。

答案 2 :(得分:0)

当您将Android Studio升级到3.3时,您似乎遇到了问题。要解决此问题,可以执行以下操作:
a)如果您已将代码迁移到Androidx,请检查应用中的gradle.properties(如果这两行不存在)

android.useAndroidX=true
android.enableJetifier=true

然后转到android studio中的Refactor -> Migrate to Androidx,该工作室会将您的应用迁移到包括XML文件的Androidx。此选项将在下面的终端中显示更改,接受这些更改以迁移到Androidx。

b)如果这样做不起作用,但您仍然收到该错误,请替换此

  

android.support.design.widget.FloatingActionButton

使用

  

com.google.android.material.floatingactionbutton.FloatingActionButton

取自google提供的映射文件,该文件将较早的支持库类映射到androidx包类: Migrating to Androidx

相关问题