我不知道如何处理以下错误,我已经在网上搜索了但没有发现任何东西:
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'
答案 0 :(得分:7)
此错误消息是在 API 级别 28+ 上由以下原因引起的:AppComponentFactory
extends
android.app.AppComponentFactory
这意味着在 API 28+ 上可以使用 tools:remove
...
tools:remove="android:appComponentFactory"
tools:targetApi="p"
答案 1 :(得分:6)
就我而言,该代码可在队友的一台计算机上运行。 这些步骤也使其对我有用:
这是另一个问题的解决方案,我也在SO中找到了。如果 Invalidate and Restart (无效并重新启动)不能解决您的问题,那么值得尝试。
答案 2 :(得分:1)
似乎是一个错误,请检查问题跟踪器中的下一个链接:
答案 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
文件。