Chris911
Chris911

Reputation: 989

Didn't find class "androidx.core.app.CoreComponentFactory"

I don't know what to do about the following errors, I've searched the web but not found anything:

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)

and :

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)

my dependencies in gradle app :

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'

Upvotes: 95

Views: 76964

Answers (18)

Martin Zeitler
Martin Zeitler

Reputation: 76769

This error message is caused on API level 28+ by:
AppComponentFactory extends android.app.AppComponentFactory

This means that on API 28+ one can use tools:remove ...

<application
    ...
    tools:remove="android:appComponentFactory"
    tools:targetApi="p"/>

Upvotes: 23

Dylan
Dylan

Reputation: 69

I encountered a similar Didn't find class "androidx.core.app.CoreComponentFactory" issue using dynamic feature modules (SplitInstallManagerFactory) on a newer project.

The issue occurred during the install of dynamic feature modules only when obfuscation was enabled (i.e., isMinifyEnabled = true). This keep rule fixed it when added to my base app module's proguard-rules.pro:

-keep class androidx.core.app.CoreComponentFactory { *; }

Tom's suggestion of falling back to java 1.8 also resolved the issue for me, but this keep rule allowed me to stay on the java 17 LTS.

Looking into the android/openjdk source, the BaseDexClassLoader.findClass function appears to be inherited from java.lang.ClassLoader. This deals with classes as strings, so my best guess is that R8 was obfuscating the androidx.core.app.CoreComponentFactory class. I can't guess as to why falling back to java 1.8 would also resolve the issue.

Upvotes: 0

Samad
Samad

Reputation: 1832

in my case @AndroidEntryPoint was missing

Upvotes: 1

Shubham Kumar Gupta
Shubham Kumar Gupta

Reputation: 1147

This error can be caused due to using both androidx and legacy android support libraries

Just open project structure and go to Dependencies and select All Modules and check is there any library which contains android.support

Just replace that with androidx version for that library

In the latest versions of android studio, just REMOVE these lines if it is there inside the manifest file

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

If still there is issue check this

https://stackoverflow.com/a/74523286/6236959

Upvotes: 1

Devrath
Devrath

Reputation: 42844

For anyone facing the same problem in the multi-Module project:-> In my case I had a multi-module project using the Jetpack compose for the presentation layer

  1. Just Clean the project
  2. Rebuild it
  3. Then again run the project

Upvotes: 2

Kristy Welsh
Kristy Welsh

Reputation: 8362

In my case, I was using a library that has an interface that was inheriting a View.OnClickListener interface.

Upvotes: 0

Carla Camargo
Carla Camargo

Reputation: 582

For Xamarin folks running into this problem: I started to see this problem when upgrading from Xamarin.Forms 4.x to 5.0. With AndroidX changes that I wasn't aware when I've done the upgrade the min SDK version needs to be changed to 29 on the android manifest file, something like: <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="30" />

Upvotes: 1

Tom
Tom

Reputation: 7824

Adding Java 1.8 compatibility to my module-level build.gradle fixed this for me (non-release build with multidex enabled).

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

Unfortunately I'm not sure why :)

Upvotes: 43

CosminPetrescu
CosminPetrescu

Reputation: 43

If you are using an emulator, try the wipe data option. This worked for me.

Upvotes: 2

Tomasz
Tomasz

Reputation: 129

It may sound totally unrelated, but I have seen this problem also when by mistake I have overridden wrong on Activity#onCreate() method i.e.

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

Instead of

protected void onCreate(@Nullable Bundle savedInstanceState)

So, please check that also. The second one is the one that you probably need.

Please refer to documentation for the details of these two methods.

Upvotes: 5

CoolMind
CoolMind

Reputation: 28839

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

Remove from AndroidManifest:

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

These lines appeared a year ago after migrating to AndroidX. I removed them, now it doesn't show the exception.

Upvotes: 1

Aguragorn
Aguragorn

Reputation: 627

In my case, the code works on one of my teammates' machine. These steps made it work for me too:

  1. Close project
  2. Remove the project from the list in the welcome screen
  3. Open the project again

This is a solution to another problem, that I also found here in SO. It's worth a try when Invalidate and Restart doesn't solve it for you.

Upvotes: 12

jack
jack

Reputation: 446

In my case, add android.enableR8=false in the gradle.properties.

Upvotes: -3

mike47
mike47

Reputation: 2264

After reviewing the Android Issue Tracker bug report mentioned previously, I saw a mention about multidex support. I had no multidex flags specified in my project, so I tried setting the flag to false on all modules in my project, and the exception went away.

This was not a permanent solution; the problem returned a few builds later.

Upvotes: -2

Perraco
Perraco

Reputation: 17380

Seems to be a bug, check the next link in the issue tracker:

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

Upvotes: 2

Zima
Zima

Reputation: 176

In my case ,that was because of a little mistake in one of my layouts.

I removed one > at the end of a view tag accidentlly.

Check your

xml

files.

Upvotes: -2

HeshanHH
HeshanHH

Reputation: 703

did u create fragments? ok if you create fragments with classes and after that you have to create a class to call those fragments. and if you use switch this cane be like this

`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.
}`

in this case you can see 3 cases in switch and the public int getCount() the return value should be 3 not default value 0.

See your error must be close to this one. i got same kind of error and i solved it.

Upvotes: -7

add below code to gradle.properties

android.enableJetifier=true
android.useAndroidX=true

or you can choose migrate to androidX in refactor -> Migrate to androidX.

Upvotes: -3

Related Questions