在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:没找到类 &#34; com.garfield.item0.system.plugin01.AckGetIntroduce&#34;在路径上: DexPathList [[zip文件 #&34; /data/data/com.garfield/cache/1428040302214.jar"],nativeLibraryDirectories = [/供应商/ lib中, / system / lib]] 04-03 05:51:42.811:W / System.err(1462):抑制: java.io.IOException:无法打开zip存档 &#39; /data/data/com.garfield/cache/1428040302214.jar' 04-03 05:51:42.820: W / System.err(1462):at dalvik.system.DexFile.openDexFileNative(Native Method)04-03 05:51:42.820:W / System.err(1462):at 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 05:51:42.821: W / System.err(1462):at dalvik.system.DexFile.loadDex(DexFile.java:151)04-03 05:51:42.821: W / System.err(1462):at dalvik.system.DexPathList.loadDexFile(DexPathList.java:265)
为什么?请帮帮我!在5.0之前就可以了。5.0上发生了什么事!
答案 0 :(得分:0)
从Android 5.0开始,运行Android的JVM
为ART
,但不再是Dalvik
。看看你的logcat跟踪:
dalvik.system.DexPathList.loadDexFile
您的代码仍尝试运行Dalvik
件事。