Android studio dalvik vm 找不到 class
Android studio dalvik vm unable to find class
我正在尝试找出如何修复我已移植到 android 工作室的遗留 android 项目的错误。我希望这更多是我的 build.gradle 脚本的问题。 class 库在编码时正常工作,完成完成等。
我试过关闭 android studio,运行 gradlew clean,然后在 android studio 中重新打开它,但没有用。
这是我的 settings.gradle 脚本。
包括':app',':imageloader-core-1.6.1'
这是我的项目 build.gradle 脚本。
构建脚本{
存储库{
中心()
mavenCentral()
}
依赖关系{
class路径'com.android.tools.build:gradle:1.0.0'
class路径'jp.leafytree.gradle:gradle-android-scala-plugin:1.3.1'
}
}
所有项目{
存储库{
中心()
mavenCentral()
}
}
这是我的应用 build.gradle 脚本。
应用插件:'com.android.application'
应用插件:'jp.leafytree.android-scala'
android{
编译SDK版本19
buildTools版本“21.1.1”
默认配置{
应用程序 ID "com.andre.andredublin"
minSdkVersion 14
targetSdk版本 19
}
buildTypes {
发布 {
minifyEnabled 假
proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.txt'
}
}
源集{
主要的 {
斯卡拉{
源目录 'src'
}
}
}
dexOptions {
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')
}
后评估{
tasks.matching{
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:找不到class 'com.novoda.imageloader.core.LoaderSettings$SettingsBuilder',引用自方法com.andre.andredublin.MyApplication.onCreate
01-17 03:18:07.291 1118-1118/? W/dalvikvm:VFY: 无法解析新实例751 (Lcom/novoda/imageloader/core/LoaderSettings$SettingsBuilder;) in Lcom/andre/andredublin/MyApplication;
01-17 03:18:07.291 1118-1118/? D/dalvikvm:VFY:将操作码0x22替换为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︰ 关闭虚拟机
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-1703:18:07.295 1118-1118/? E/AndroidRuntime:致命异常: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.access1300 美元(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(本机方法)
在 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 工作室中修复。您使用的是哪个 AS 版本?
我刚刚在 Android Studio 的库项目中遇到了类似的问题。我的应用程序可以在带有 Lollipop 的设备上运行,但不能在 KitKat 上运行。原因是我设置了多个dex,因为我使用了google play services imported,所以方法引用数超过了64K。
幸运的是,我已经设法通过将其减少为 google 映射导入来消除对多个 dex 的需求。
如果这不能为您完成,this and this 篇文章可能会有用。
这是我的解决方案。
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
我正在尝试找出如何修复我已移植到 android 工作室的遗留 android 项目的错误。我希望这更多是我的 build.gradle 脚本的问题。 class 库在编码时正常工作,完成完成等。
我试过关闭 android studio,运行 gradlew clean,然后在 android studio 中重新打开它,但没有用。
这是我的 settings.gradle 脚本。
包括':app',':imageloader-core-1.6.1'
这是我的项目 build.gradle 脚本。
构建脚本{ 存储库{ 中心() mavenCentral() } 依赖关系{ class路径'com.android.tools.build:gradle:1.0.0' class路径'jp.leafytree.gradle:gradle-android-scala-plugin:1.3.1' } } 所有项目{ 存储库{ 中心() mavenCentral() } }
这是我的应用 build.gradle 脚本。
应用插件:'com.android.application' 应用插件:'jp.leafytree.android-scala' android{ 编译SDK版本19 buildTools版本“21.1.1” 默认配置{ 应用程序 ID "com.andre.andredublin" minSdkVersion 14 targetSdk版本 19 } buildTypes { 发布 { minifyEnabled 假 proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.txt' } } 源集{ 主要的 { 斯卡拉{ 源目录 'src' } } } dexOptions { 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') } 后评估{ tasks.matching{ 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:找不到class 'com.novoda.imageloader.core.LoaderSettings$SettingsBuilder',引用自方法com.andre.andredublin.MyApplication.onCreate 01-17 03:18:07.291 1118-1118/? W/dalvikvm:VFY: 无法解析新实例751 (Lcom/novoda/imageloader/core/LoaderSettings$SettingsBuilder;) in Lcom/andre/andredublin/MyApplication; 01-17 03:18:07.291 1118-1118/? D/dalvikvm:VFY:将操作码0x22替换为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︰ 关闭虚拟机 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-1703:18:07.295 1118-1118/? E/AndroidRuntime:致命异常: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.access1300 美元(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(本机方法) 在 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 工作室中修复。您使用的是哪个 AS 版本?
我刚刚在 Android Studio 的库项目中遇到了类似的问题。我的应用程序可以在带有 Lollipop 的设备上运行,但不能在 KitKat 上运行。原因是我设置了多个dex,因为我使用了google play services imported,所以方法引用数超过了64K。 幸运的是,我已经设法通过将其减少为 google 映射导入来消除对多个 dex 的需求。 如果这不能为您完成,this and this 篇文章可能会有用。
这是我的解决方案。
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