在Android5.0之前,我动态地使用DexClassloader加载插件,代码如下:
DexClassLoader localDexClassLoader = new DexClassLoader(pluginSrcJarDir,cont.getDir("dex", 0).getAbsolutePath(), null, ClassLoader.getSystemClassLoader().getParent());
Class<?> pluginClass = localDexClassLoader.loadClass(className); //error here 但是在Android5.0上有一个错误:
04-03 05:51:42.743: W/(1462):Zip: 792外部字节在中央目录04-03 05:51:42.749: W/System.err(1462):java.lang.ClassNotFoundException:没有找到路径上的类"/data/data/com.garfield/cache/1428040302214.jar",:DexPathList[zip文件“/data/data/com.garfield/cache/1428040302214.jar”,nativeLibraryDirectories=/“/data/data/com.garfield/cache/1428040302214.jar”,/lib,/system/lib] 04-03 05:51:42.811: W/System.err(1462):java.io.IOException: java.io.IOException:未能打开压缩存档java.io.IOException:51:42.820: W/System.err(1462):at dalvik.system.DexFile.openDexFileNative(Native方法) 04-03 05:51:42.820: W/System.err(1462):在dalvik.system.DexFile.openDexFile(DexFile.java:295) 04-03 05:51:42.821: W/System.err(1462):at dalvik.system.DexFile.(DexFile.java:111) 04-03 :51:42.821: W/System.err(1462):at dalvik.system.DexFile.loadDex(DexFile.java:151) 04-03 :51:42.821: W/System.err(1462):在dalvik.system.DexPathList.loadDexFile(DexPathList.java:265)
为什么?请帮帮我!在5.0之前没问题。5.0上发生了什么!
发布于 2015-04-03 06:16:02
从Android5.0开始,运行安卓的JVM是ART,而不再是Dalvik。看看你的日志跟踪:
dalvik.system.DexPathList.loadDexFile你的代码仍然试图运行Dalvik的东西。
https://stackoverflow.com/questions/29426953
复制相似问题