Zeeshan Waheed
Zeeshan Waheed

Reputation: 31

App crashes from Play Store on first run - ClassNotFoundException dalvik.system.BaseDexClassLoader.findClass

App is working fine on Android Studio, but downloaded from Play Store crashes on the first time, then start working fine.

I tried to solve it, but without success (changed minSDK to 21, enabled Multidex).

Build Gradle App:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 29
    buildToolsVersion "29.0.0"
    defaultConfig {
        applicationId "com.--------.app"
        minSdkVersion 21                      //Change my min Sdk
        targetSdkVersion 29
        multiDexEnabled true                // Enable mutlidex
        versionCode 10
        versionName "1.4.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2'
    implementation 'com.google.android.gms:play-services-ads:18.0.0'
    implementation 'com.google.android.material:material:1.1.0-alpha07'
    implementation 'com.android.support:multidex:1.0.3'      //Multi-dex lib

    testImplementation 'junit:junit:4.13-beta-3'
    androidTestImplementation 'androidx.test:runner:1.3.0-alpha01'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0-alpha01'


}
Caused by: java.lang.ClassNotFoundException: 
  at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:380)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:3285)

Application Class:


public class MainActivity extends AppCompatActivity implements View.OnClickListener  {                       //Application Class Here

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);                   //OverRide Multidex
        MultiDex.install(this);
    }

    private Button rate,ad,contact;                //i don't have Application    
                                                  //Using custom Class is this 
                                                  // right way
    @Override
    protected void onCreate(Bundle savedInstanceState)
             //My Code

Crash Report After Exe Below Code:

[Crash Report After Exe Below Code][1]

Logcat

[Logcat][2]

Upvotes: 2

Views: 706

Answers (2)

Chirag Savsani
Chirag Savsani

Reputation: 6140

In Your App class

UPDATE

Create New Java File with Any name E.g. AppClass.java

in Your new AppClass.java file extend MultiDexApplication.

So your class will look like below.

public class AppClass extends MultiDexApplication {

}

Now override attachBaseContext method.

So finally your complete class will look like below.

public class AppClass extends MultiDexApplication {

@Override
protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}

Now you have to Declare your AppClass in AndroidManifest.xml file in application tag.

<application
     ----------
     ----------
     ----------
        android:name=".AppClass"
     ----------
     ---------->

</application>

Upvotes: 0

Kaushal Panchal
Kaushal Panchal

Reputation: 1825

In some cases, this could be a MultiDex issue. Try this in your application class. That is in App.java which extends Application:

public class App extends Application {

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}

Register App.java file in manifest.xml in the application tag. Check below code.

<application
        android:name=".App"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true">
</application>

Upvotes: 1

Related Questions