找不到类“ androidx.core.app.CoreComponentFactory”

时间:2019-08-28 21:52:25

标签: java android android-studio

我不知道如何处理以下错误,我已经在网上搜索了但没有发现任何东西:

java.lang.ClassNotFoundException: Didn't find class "androidx.core.app.CoreComponentFactory" on path: DexPathList[[],nativeLibraryDirectories=[/data/app/com.example.padmw-CXElJ_vfrfm3y7py3CPsJw==/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.app.LoadedApk.createAppFactory(LoadedApk.java:226)
    at android.app.LoadedApk.updateApplicationInfo(LoadedApk.java:338)
    at android.app.ActivityThread.handleDispatchPackageBroadcast(ActivityThread.java:5388)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1733)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at com.android.server.SystemServer.run(SystemServer.java:454)
    at com.android.server.SystemServer.main(SystemServer.java:294)
    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:838)

和:

2019-08-29 00:19:24.071 1853-1853/? E/LoadedApk: Unable to instantiate appComponentFactory
java.lang.ClassNotFoundException: Didn't find class "androidx.core.app.CoreComponentFactory" on path: DexPathList[[],nativeLibraryDirectories=[/data/app/com.example.padmw-CXElJ_vfrfm3y7py3CPsJw==/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.app.LoadedApk.createAppFactory(LoadedApk.java:226)
    at android.app.LoadedApk.updateApplicationInfo(LoadedApk.java:338)
    at android.app.ActivityThread.handleDispatchPackageBroadcast(ActivityThread.java:5388)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1733)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at com.android.server.SystemServer.run(SystemServer.java:454)
    at com.android.server.SystemServer.main(SystemServer.java:294)
    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:838)

我在gradle应用中的依赖项:

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.firebase:firebase-core:17.1.0'
implementation 'com.google.firebase:firebase-database:19.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.navigation:navigation-fragment:2.0.0'
implementation 'androidx.navigation:navigation-ui:2.0.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.firebaseui:firebase-ui-database:1.2.0'
}
apply plugin: 'com.google.gms.google-services'

14 个答案:

答案 0 :(得分:7)

此错误消息是在 API 级别 28+ 上由以下原因引起的:
AppComponentFactory extends android.app.AppComponentFactory

这意味着在 API 28+ 上可以使用 tools:remove ...

tools:remove="android:appComponentFactory"
tools:targetApi="p"

答案 1 :(得分:6)

就我而言,该代码可在队友的一台计算机上运行。 这些步骤也使其对我有用:

  1. 关闭项目
  2. 从欢迎屏幕上的列表中删除项目
  3. 再次打开项目

这是另一个问题的解决方案,我也在SO中找到了。如果 Invalidate and Restart (无效并重新启动)不能解决您的问题,那么值得尝试。

答案 2 :(得分:1)

似乎是一个错误,请检查问题跟踪器中的下一个链接:

https://issuetracker.google.com/issues/137646829

答案 3 :(得分:1)

这听起来似乎完全无关,但是当我错误地在Activity#onCreate()方法上覆盖了错误时,我也看到了此问题 即

public void onCreate(@Nullable Bundle savedInstanceState,
        @Nullable PersistableBundle persistentState)

代替

protected void onCreate(@Nullable Bundle savedInstanceState)

所以,请检查一下。 第二个是您可能需要的。

有关这两种方法的详细信息,请参阅文档。

答案 4 :(得分:0)

为我的build.gradle添加Java 1.8兼容性为我解决了此问题(启用了multidex的非发行版)。

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = "1.8"
}

不幸的是,我不确定为什么:)

答案 5 :(得分:0)

就我而言,在gradle.properties中添加android.enableR8=false

答案 6 :(得分:0)

请参见java.lang.ClassNotFoundException: Didn't find class "com.my_app_name.androidx"

AndroidManifest中删除:

<application
    ...
    android:appComponentFactory="androidx"
    tools:replace="android:appComponentFactory"
>

这些行在一年前迁移到AndroidX后出现。我删除了它们,现在它没有显示异常了。

答案 7 :(得分:0)

如果您使用的是模拟器,请尝试擦除数据选项。这对我有用。

答案 8 :(得分:0)

对于遇到此问题的 Xamarin 人员:从 Xamarin.Forms 4.x 升级到 5.0 时,我开始看到此问题。对于 AndroidX 更改,当我完成升级时,我不知道最小 SDK 版本需要在 android 清单文件中更改为 29,例如: <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="30" />

答案 9 :(得分:0)

就我而言,我使用的库的接口继承了 View.OnClickListener 接口。

答案 10 :(得分:-1)

在回顾了前面提到的Android Issue Tracker错误报告之后,我看到了关于multidex支持的提及。我在项目中没有指定multidex标志,所以我尝试在项目中的所有模块上将标志设置为false,然后异常消失了。

这不是永久解决方案;问题稍后又返回了几个版本。

答案 11 :(得分:-2)

将以下代码添加到gradle.properties

android.enableJetifier=true
android.useAndroidX=true

或者您可以选择在重构中迁移到androidX->迁移到androidX。

答案 12 :(得分:-2)

您是否创建了片段? 好的,如果您创建带有类的片段,然后必须创建一个类来调用这些片段。如果您使用开关,手杖会像这样

`公共片段getItem(int i){

    // you have create a switch to get positions using i.
    switch (i) {
        case 0:
            ChatsFragment chatsFragment = new ChatsFragment();
            return chatsFragment;

        case 1:
            GroupsFragment groupsFragment = new GroupsFragment();
            return groupsFragment;

        case 2:
            ContactsFragment contactsFragment = new ContactsFragment();
            return contactsFragment;
        default:
            return null;
    }

}

@Override
public int getCount() {
    return 3;//error can be happen if u use default 0, use fragment counts in here.
}`

在这种情况下,您可以在 switch 中看到3种情况 并且 public int getCount()的返回值应为 3 非默认值0

请参阅您的错误必须接近此错误。我遇到同样的错误,我解决了。

答案 13 :(得分:-2)

在我的情况下,那是因为我的一个布局中有一个小错误。

我不小心在视图标签的末尾删除了一个>

检查您的

  

xml

文件。