【问题标题】:Didn't find class "androidx.core.app.CoreComponentFactory"没有找到类“androidx.core.app.CoreComponentFactory”
【发布时间】:2019-08-28 21:52:25
【问题描述】:

我不知道如何处理以下错误,我已经搜索了网络但没有找到任何东西:

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'

【问题讨论】:

标签: java android


【解决方案1】:

将 Java 1.8 兼容性添加到我的模块级 build.gradle 为我解决了这个问题(启用了 multidex 的非发布版本)。

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

很遗憾,我不知道为什么:)

【讨论】:

【解决方案2】:

此错误消息是由 API 级别 28+ 引起的:
AppComponentFactory extends android.app.AppComponentFactory

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

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

【讨论】:

  • 只需在 Manifest 文件中添加第一行就可以了。
【解决方案3】:

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

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

这是另一个问题的解决方案,我也在 SO 中找到了这个问题。当 Invalidate and Restart 无法为您解决问题时,值得一试。

【讨论】:

  • 哇。不敢相信这解决了我的问题。也解决了调试器下断点一秒断线的问题。
【解决方案4】:

这听起来可能完全不相关,但是当我错误地覆盖了 Activity#onCreate() 方法的错误时,我也看到了这个问题 即

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

代替

protected void onCreate(@Nullable Bundle savedInstanceState)

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

这两种方法的详细信息请参考文档。

【讨论】:

  • 这似乎是@Tomasz 的答案,但后来我添加到File > Sync Project with Gradle Files 以使其正常工作。有兴趣的可以在Settings > Build, Execution, Deployment > Compiler找到Sync project with Gradle before building, if needed
【解决方案5】:

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

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

【讨论】:

  • 这也可能发生在非发布版本中,所以这不是全部
【解决方案6】:

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

AndroidManifest删除:

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

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

【讨论】:

    【解决方案7】:

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

    【讨论】:

      【解决方案8】:

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

      【讨论】:

        【解决方案9】:

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

        【讨论】:

        • 您能否详细说明为什么这是相关的?我认为继承 View.OnClickListener 的类很常见 - 如果是这样,是否有一种解决方法而不必停止继承这个类?
        【解决方案10】:

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

        我不小心删除了一个视图标签末尾的&gt;

        检查你的

        xml

        文件。

        【讨论】:

          【解决方案11】:

          在查看了前面提到的 Android 问题跟踪器错误报告后,我看到了关于 multidex 支持的提及。我的项目中没有指定 multidex 标志,因此我尝试在项目中的所有模块上将标志设置为 false,异常消失了。

          这不是一个永久的解决方案;该问题在几个构建后返回。

          【讨论】:

          • 不幸的是,由于我的应用程序大小,我必须将 multidex 设置为 true。
          【解决方案12】:

          将以下代码添加到gradle.properties

          android.enableJetifier=true
          android.useAndroidX=true
          

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

          【讨论】:

            【解决方案13】:

            在我的例子中,在 gradle.properties 中添加 android.enableR8=false

            【讨论】:

            • 谢谢,添加此行后我的问题解决了
            • @MohamedHussien 这不是一个好的解决方案,你关闭混淆
            【解决方案14】:

            你创建了片段吗? 好的,如果您使用类创建片段,然后您必须创建一个类来调用这些片段。如果你使用 switch,这个手杖是这样的

            `public Fragment 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

            看到你的错误一定接近这个。我遇到了同样的错误,我解决了。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2019-07-02
              • 2017-02-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多