问题描述
我正在尝试使用自2015年以来从未更新过的项目文件使用最新的SDK来构建Android应用程序.通过一些工作,我设法使其得以构建和安装,但是当我启动时,我得到了我找不到太多信息的错误:"java.io.IOException:找不到用于dex位置的原始dex文件".
I'm trying to build an Android application using the latest SDK from project files that haven't been updated since 2015. With a little work, I've managed to get it building and installing, but when I launch I get an error that I can't find much information on: "java.io.IOException: No original dex files found for dex location".
以下是错误的全文:
03-19 23:32:37.418 10121 10121 E AndroidRuntime: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.xxx.xxx/com.xxx.xxx.LaunchActivity}: java.lang.ClassNotFoundException: Didn't find class "com.xxx.xxx.LaunchActivity" on path: DexPathList[[zip file "/data/app/com.xxx.xxx-1/base.apk"],nativeLibraryDirectories=[/data/app/com.xxx.xxx-1/lib/arm, /system/fake-libs, /data/app/com.xxx.xxx-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2604)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2788)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.ActivityThread.-wrap12(ActivityThread.java)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1503)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.os.Looper.loop(Looper.java:154)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6209)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.xxx.xxx.LaunchActivity" on path: DexPathList[[zip file "/data/app/com.xxx.xxx-1/base.apk"],nativeLibraryDirectories=[/data/app/com.xxx.xxx-1/lib/arm, /system/fake-libs, /data/app/com.xxx.xxx-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.Instrumentation.newActivity(Instrumentation.java:1094)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2594)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: ... 9 more
03-19 23:32:37.418 10121 10121 E AndroidRuntime: Suppressed: java.io.IOException: No original dex files found for dex location /data/app/com.xxx.xxx-1/base.apk
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at dalvik.system.DexFile.openDexFileNative(Native Method)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at dalvik.system.DexFile.openDexFile(DexFile.java:373)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at dalvik.system.DexFile.<init>(DexFile.java:113)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at dalvik.system.DexFile.<init>(DexFile.java:78)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at dalvik.system.DexPathList.loadDexFile(DexPathList.java:359)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at dalvik.system.DexPathList.makeElements(DexPathList.java:323)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at dalvik.system.DexPathList.makeDexElements(DexPathList.java:263)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at dalvik.system.DexPathList.<init>(DexPathList.java:126)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:48)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:64)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at com.android.internal.os.PathClassLoaderFactory.createClassLoader(PathClassLoaderFactory.java:43)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:58)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:525)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.LoadedApk.getClassLoader(LoadedApk.java:558)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.ActivityThread.getTopLevelResources(ActivityThread.java:1902)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.LoadedApk.getResources(LoadedApk.java:774)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.ContextImpl.<init>(ContextImpl.java:2083)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.ContextImpl.createAppContext(ContextImpl.java:2028)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5383)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.ActivityThread.-wrap2(ActivityThread.java)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1571)
03-19 23:32:37.418 10121 10121 E AndroidRuntime: ... 6 more
这是相关的dex输出:
And here is the relevant dex output:
-dex:
[dex] input: /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/bin/classes
[dex] input: /Users/alvion/df/xxx/xxx/Code/Host-Ant/google/play_apk_expansion/downloader_library/bin/classes.jar
[dex] input: /Users/alvion/df/xxx/xxx/Code/Host-Ant/google/play_licensing/library/bin/classes.jar
[dex] input: /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/crittercism_v1_3_0.jar
[dex] input: /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/jackson-mapper-asl-1.8.4.jar
[dex] input: /Users/alvion/df/xxx/xxx/Code/Host-Ant/google/play_apk_expansion/downloader_library/libs/android-support-v4.jar
[dex] input: /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/dropbox-android-sdk-1.5.4.jar
[dex] input: /Users/alvion/Library/Android/sdk/tools/support/annotations.jar
[dex] input: /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/ouya-sdk.jar
[dex] input: /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/guava-r09.jar
[dex] input: /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/in-app-purchasing-1.0.3.jar
[dex] input: /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/jackson-core-asl-1.8.4.jar
[dex] input: /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/json_simple-1.1.jar
[dex] input: /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/commons-lang-2.6.jar
[dex] Pre-Dexing /Users/alvion/df/xxx/xxx/Code/Host-Ant/google/play_apk_expansion/downloader_library/bin/classes.jar -> classes-81c328b1bd235b3a63ab7b7dc3612832.jar
[dex] Using Pre-Dexed classes-8402751112432f9e98dc60e91b59aa39.jar <- /Users/alvion/df/xxx/xxx/Code/Host-Ant/google/play_licensing/library/bin/classes.jar
[dex] Using Pre-Dexed crittercism_v1_3_0-3d69c6e931684bd63dfe2e833d0aebe6.jar <- /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/crittercism_v1_3_0.jar
[dex] Using Pre-Dexed jackson-mapper-asl-1.8.4-ffc362a66f3bc5bb8073e3401c4d7c7b.jar <- /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/jackson-mapper-asl-1.8.4.jar
[dex] Using Pre-Dexed android-support-v4-39781f5ab2494414fb73e335497fb91d.jar <- /Users/alvion/df/xxx/xxx/Code/Host-Ant/google/play_apk_expansion/downloader_library/libs/android-support-v4.jar
[dex] Using Pre-Dexed dropbox-android-sdk-1.5.4-e975c3510f4992bd1ed860294caaaec6.jar <- /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/dropbox-android-sdk-1.5.4.jar
[dex] Using Pre-Dexed annotations-812d332b38fbdb408dd663820ddaf9f6.jar <- /Users/alvion/Library/Android/sdk/tools/support/annotations.jar
[dex] Using Pre-Dexed ouya-sdk-7728ab2d7956de1baa1d2087c8b3543b.jar <- /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/ouya-sdk.jar
[dex] Using Pre-Dexed guava-r09-e1a6934eeb9a0381c562ff20974676c2.jar <- /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/guava-r09.jar
[dex] Using Pre-Dexed in-app-purchasing-1.0.3-fa4d8ee5ba37ef3c2e63307e237f5958.jar <- /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/in-app-purchasing-1.0.3.jar
[dex] Using Pre-Dexed jackson-core-asl-1.8.4-d94d4ec863304731c24c400b1f59e0be.jar <- /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/jackson-core-asl-1.8.4.jar
[dex] Using Pre-Dexed json_simple-1.1-162e5f2c569f2c90fd6fa9067260bced.jar <- /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/json_simple-1.1.jar
[dex] Using Pre-Dexed commons-lang-2.6-73a87249d3e4206fda186982d953eb0b.jar <- /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/libs/commons-lang-2.6.jar
[dex] Found modified input file
[dex] Converting compiled files and external libraries into /Users/alvion/df/xxx/xxx/Code/Host-Ant/Game/bin/classes.dex...
[dx] Merged dex #1 (87 defs/139.5KiB)
[dx] Merged dex #2 (371 defs/436.8KiB)
[dx] Merged dex #3 (2 defs/1.1KiB)
[dx] Merged dex #4 (50 defs/90.6KiB)
[dx] Merged dex #5 (25 defs/35.5KiB)
[dx] Merged dex #6 (133 defs/331.3KiB)
[dx] Merged dex #7 (69 defs/199.7KiB)
[dx] Merged dex #8 (73 defs/84.7KiB)
[dx] Merged dex #9 (883 defs/1023.2KiB)
[dx] Merged dex #10 (85 defs/58.1KiB)
[dx] Merged dex #11 (129 defs/232.0KiB)
[dx] Merged dex #12 (432 defs/535.7KiB)
[dx] Merged dex #13 (12 defs/21.8KiB)
[dx] Merged dex #14 (204 defs/181.7KiB)
[dx] Result is 2555 defs/4209.8KiB. Took 0.6s
有关该应用程序的一些详细信息:
A few details about the app:
- 这是一个游戏,而且确实很大. apk为2.5演出,大量的c ++代码,尽管Java代码很少.
- 当尝试通过"adb install"进行安装时,出现以下类似的随机错误,但每次都使用不同的文件名.我认为这与apk的大小有关,但我不确定,也不确定是否与当前问题有关.
Failed to install drm_free/Xxx-debug.apk: Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: Failed reading assets/some/random/asset.bin in android.util.jar.StrictJarFile@710a502: META-INF/MANIFEST.MF has invalid digest for assets/some/random/asset.bin in assets/some/random/asset.bin]
我可以找到的唯一相关问题是这个,但是它没有似乎没有关系,因为此应用程序中的实际Java代码很少,因此达到dex方法的限制没有任何意义.这里提供的解决方案非常简单,因为我需要在构建过程中设置的multiDexEnabled属性似乎只在gradle构建文件中公开,而我没有,因为这是一个遗留项目.
The only related issue I could find was this one but it doesn't seem related, since there is very little actual Java code in this app, so hitting the dex method limit doesn't make sense. The solution offered there is very non-trivial because the multiDexEnabled property I need to set in my build process only seems to be exposed in the gradle build file, which I don't have because this is a legacy project.
推荐答案
我有一个类似的问题,解决方案:转到 debug
块中的 build.gradle(Module: app)
,并禁用 minifyEnabled
:
I had a similar problem, solution: go to build.gradle(Module: app)
in debug
block and disable minifyEnabled
:
debug {
minifyEnabled false
}
这篇关于java.io.IOException:找不到用于dex位置的原始dex文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!