【问题标题】:Android studio dalvik vm unable to find classAndroid studio dalvik vm 找不到类
【发布时间】:2015-01-17 04:10:22
【问题描述】:

我正在尝试找出如何修复已移植到 android studio 的遗留 android 项目的错误。我希望这更多是我的 build.gradle 脚本的问题。类库在编码时正常工作,完成完成等。

我尝试关闭 android studio,运行 gradlew clean,然后在 android studio 中重新打开它,但没有奏效。

这是我的 settings.gradle 脚本。

包括 ':app', ':imageloader-core-1.6.1'

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

构建脚本 { 存储库{ 中心() mavenCentral() } 依赖{ 类路径'com.android.tools.build:gradle:1.0.0' 类路径'jp.leafytree.gradle:gradle-android-scala-plugin:1.3.1' } } 所有项目{ 存储库{ 中心() mavenCentral() } }

这是我的应用 build.gradle 脚本。

应用插件:'com.android.application' 应用插件:'jp.leafytree.android-scala' 安卓 { compileSdkVersion 19 构建工具版本“21.1.1” 默认配置 { applicationId "com.andre.andredublin" minSdkVersion 14 targetSdkVersion 19 } 构建类型 { 发布 { 缩小启用假 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } 源集{ 主要的 { 斯卡拉{ srcDir 'src' } } } dex 选项 { preDexLibraries 错误 javaMaxHeapSize "2g" } } 依赖{ 编译'com.facebook.android:facebook-android-sdk:3.21.1' 编译'com.android.support:multidex:1.0.0' 编译 'org.scala-lang:scala-library:2.11.4' 编译'io.spray:spray-json_2.11:1.3.1' 编译'org.scaloid:scaloid_2.11:3.6.1-10' 编译'com.loopj.android:android-async-http:1.4.4' 编译'com.google.code.gson:gson:2.2.2' 编译'net.hockeyapp.android:HockeySDK:3.5.0' 编译项目(':imageloader-core-1.6.1') } 评估后{ 任务匹配{ it.name.startsWith("dex") }.each { dx -> 如果(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:找不到从方法 com.andre.andredublin.MyApplication.onCreate 引用的类 'com.novoda.imageloader.core.LoaderSettings$SettingsBuilder' 01-17 03:18:07.291 1118-1118/? W/dalvikvm:VFY:无法解析 Lcom/andre/andredublin/MyApplication 中的新实例 751 (Lcom/novoda/imageloader/core/LoaderSettings$SettingsBuilder;); 01-17 03:18:07.291 1118-1118/? D/dalvikvm:VFY:在 0x0005 处替换操作码 0x22 01-17 03:18:07.291 1118-1118/? D/dalvikvm﹕DexOpt: 无法在 Lcom/andre/andredublin/MyApplication;.onCreate 的 0x0a 处选择直接调用 0x1244 01-17 03:18:07.291 1118-1118/? D/dalvikvm﹕DexOpt: 无法在 Lcom/andre/andredublin/MyApplication;.onCreate 的 0x1f 选择直接调用 0x1242 01-17 03:18:07.291 1118-1118/? D/AndroidRuntime: 关闭虚拟机 01-17 03:18:07.291 1118-1118/? W/dalvikvm:threadid=1:线程以未捕获的异常退出(组=0xa4bd6648) 01-17 03:18:07.295 377-393/system_process D/: HostConnection::get() New Host Connection created 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 在 com.andre.andredublin.MyApplication.onCreate(MyApplication.java:40) 在 android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:4444) 在 android.app.ActivityThread.access$1300(ActivityThread.java:141) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:137) 在 android.app.ActivityThread.main(ActivityThread.java:5103) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 在 dalvik.system.NativeStart.main(本机方法)

【问题讨论】:

  • 您是否忘记引用任何 JAR 文件?库项目imageloader-core-1.6.1 是否报告任何错误(任何带有红色下划线的内容)?在Build->Clean project 之后出现同样的错误?在File->Invalidate Cache之后出现同样的错误?
  • 有时也有助于 Gradle 行 compile files(PATH_TO_JAR_FILE),但据我所知,这已在所有较新的 Android Studio 中得到修复。您使用的是哪个 AS 版本?
  • @sandalone 我正在使用 v1.0.2,我会尝试您的建议并让您知道我的结果。
  • @sandalone 编译文件为我做了,谢谢。
  • 欢迎您。我将评论转换为回复,因此您可以将其标记为回复以帮助像您一样的其他人。

标签: java android scala gradle android-studio


【解决方案1】:

我刚刚在 Android Studio 中遇到了类似的库项目问题。我的应用程序在带有 Lollipop 的设备上运行,但在 KitKat 上却没有。原因是我设置了多个dex,因为我使用的是google play服务导入的,所以方法引用的数量超过64K。 幸运的是,我已经设法消除了对多个 dex 的需求,方法是将其减少为仅导入谷歌地图。 如果您无法做到这一点,thisthis 文章可能会有用。

【讨论】:

  • 这不仅仅是库的问题,也可能是常规应用程序本身的问题。如果 multiDex 设置为 true,但应用程序实际上不需要 multiDex,它将在 Lollipop 设备上正常运行,但在调试过程中会挂在 KitKat 设备上。导出并手动安装的 .apk 可以正常工作。奇怪。
  • 在您的应用程序中启用 Multidex 是最好的解决方案
【解决方案2】:

转换为从评论中回复。

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

有时也有助于 Gradle 行 compile files(PATH_TO_JAR_FILE),但据我所知,这已在所有较新的 Android Studio 中得到修复。您使用的是哪个 AS 版本?

【讨论】:

    【解决方案3】:

    这是我的解决方案。

    1。设置默认配置

    "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 中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-18
      • 2015-07-25
      • 2020-12-07
      • 1970-01-01
      • 2016-08-29
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多