Android工作室dalvik vm无法找到课程

时间:2015-01-17 04:10:23

标签: java android scala gradle android-studio

我正在试图弄清楚如何修复我已经移植到android studio的遗留android项目的错误。我希望这对我的build.gradle脚本来说更成问题。类库在编码时正常工作,完成后完成等。

我已经尝试关闭android studio,运行gradlew clean,然后在android studio中重新打开它并且没有用。

这是我的settings.gradle脚本。

include ':app', ':imageloader-core-1.6.1'

这是我的项目build.gradle脚本。

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
        classpath 'jp.leafytree.gradle:gradle-android-scala-plugin:1.3.1'
    }
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}

这是我的app build.gradle脚本。

apply plugin: 'com.android.application'
apply plugin: 'jp.leafytree.android-scala'

android {
    compileSdkVersion 19
    buildToolsVersion "21.1.1"

    defaultConfig {
        applicationId "com.andre.andredublin"
        minSdkVersion 14
        targetSdkVersion 19
    }

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

    sourceSets {
        main {
            scala {
                srcDir 'src'
            }
        }
    }

    dexOptions {
        preDexLibraries false
        javaMaxHeapSize "2g"
    }
}

dependencies {
    compile 'com.facebook.android:facebook-android-sdk:3.21.1'
    compile 'com.android.support:multidex:1.0.0'
    compile 'org.scala-lang:scala-library:2.11.4'
    compile 'io.spray:spray-json_2.11:1.3.1'
    compile 'org.scaloid:scaloid_2.11:3.6.1-10'
    compile 'com.loopj.android:android-async-http:1.4.4'
    compile 'com.google.code.gson:gson:2.2.2'
    compile 'net.hockeyapp.android:HockeySDK:3.5.0'
    compile project(':imageloader-core-1.6.1')
}

afterEvaluate {
    tasks.matching {
        it.name.startsWith("dex")
    }.each { dx ->
        if (dx.additionalParameters == null) {
            dx.additionalParameters = []
        }
        dx.additionalParameters += "--multi-dex"
        dx.additionalParameters += "--main-dex-list=$rootDir/main-dex-list.txt".toString()
    }
}

以下是我在genymotion中运行时从日志中收到的错误。

01-17 03:18:07.291    1118-1118/? E/dalvikvm﹕ Could not find class 'com.novoda.imageloader.core.LoaderSettings$SettingsBuilder', referenced from method com.andre.andredublin.MyApplication.onCreate
01-17 03:18:07.291    1118-1118/? W/dalvikvm﹕ VFY: unable to resolve new-instance 751 (Lcom/novoda/imageloader/core/LoaderSettings$SettingsBuilder;) in Lcom/andre/andredublin/MyApplication;
01-17 03:18:07.291    1118-1118/? D/dalvikvm﹕ VFY: replacing opcode 0x22 at 0x0005
01-17 03:18:07.291    1118-1118/? D/dalvikvm﹕ DexOpt: unable to opt direct call 0x1244 at 0x0a in Lcom/andre/andredublin/MyApplication;.onCreate
01-17 03:18:07.291    1118-1118/? D/dalvikvm﹕ DexOpt: unable to opt direct call 0x1242 at 0x1f in Lcom/andre/andredublin/MyApplication;.onCreate
01-17 03:18:07.291    1118-1118/? D/AndroidRuntime﹕ Shutting down VM
01-17 03:18:07.291    1118-1118/? W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xa4bd6648)
01-17 03:18:07.295      377-393/system_process D/﹕ HostConnection::get() New Host Connection established 0xb939d6a0, tid 393
01-17 03:18:07.295    1118-1118/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NoClassDefFoundError: com.novoda.imageloader.core.LoaderSettings$SettingsBuilder
            at com.andre.andredublin.MyApplication.onCreate(MyApplication.java:40)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4444)
            at android.app.ActivityThread.access$1300(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

3 个答案:

答案 0 :(得分:9)

我在Android Studio中的库项目遇到了类似的问题。我的应用程序正在使用Lollipop设备,但不在KitKat上。原因是我有多个dex设置,因为我使用了google play services导入,所以方法引用的数量超过了64K。 幸运的是,我已经设法通过将它减少到谷歌地图导入来消除多个dex的需要。 如果无法为您完成此操作,则thisthis文章可能会有用。

答案 1 :(得分:4)

转换为评论回复。

您是否忘记引用任何JAR文件?库项目imageloader-core-1.6.1是否报告任何错误(带红色下划线的任何内容)? Build->Clean project后出现相同的错误? File->Invalidate Cache之后的相同错误?

有时候也有助于Gradle系列compile files(PATH_TO_JAR_FILE),但据我所知,这已在所有较新的Android工作室中修复。您使用的是哪个AS版本?

答案 2 :(得分:0)

这是我的解决方法。

1。设置defaultConfig

"multiDexEnabled true" 

2。增加依赖性

compile 'com.android.support:multidex:1.0.1'

3。添加:

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

在您的application.java