Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android Studio E/dalvikvm﹕ Could not find class '.DatabaseHelper', referenced from method .DatabaseManager

Hello I'm getting this error using Android Studio on runtime but only on devices with an SDK version <= 19. Everything compiles ok but I get this error on my databaseHelper Class.

java.lang.NoClassDefFoundError:

Here is my app build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.1'
    useLibrary  'org.apache.http.legacy'

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled true
        }
    }
}



dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.google.android.gms:play-services:7.8.0'
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.github.johnpersano:supertoasts:1.3.4@aar'
    compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
    compile 'com.navercorp.pulltorefresh:library:3.2.0@aar'
    compile 'com.parse.bolts:bolts-android:1.2.1'
    compile 'com.j256.ormlite:ormlite-android:4.48'
    compile 'com.j256.ormlite:ormlite-core:4.48'
}

My databaseHelper class extends OrmLiteSqliteOpenHelper Everything was working fine while my compileSdkVersion was at 19 Here is what I updated:

  • gradle: classpath 'com.android.tools.build:gradle:1.1.0' > 1.3.0
  • sdk Version: compileSdkVersion 19 > 23
  • appcompat: com.android.support:appcompat-v7:19.0.1 > 23
  • play-services

My databaseHelper Class is in the same package than other Classes which work fine !

Thank you for your help

like image 572
totteire Avatar asked Sep 21 '15 14:09

totteire


2 Answers

As you have multiDexEnabled true in your build.gradle. Make sure your application class is extending MultiDexApplication instead of the Application class.

Alternatively, as suggested in the docs, you can add the following method to your application class.

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}
like image 54
Amyth Avatar answered Nov 06 '22 18:11

Amyth


I've found the problem. multiDex is not supported correctly prior to lollypop. Once I removed the additional libraries and remove multidex setting on Gradle everything started to work fine.

remove.

 multiDexEnabled true 

Regards

like image 40
Gatunox Avatar answered Nov 06 '22 19:11

Gatunox