3 回答
TA贡献1827条经验 获得超4个赞
Dalvik测试套件中有一个DexClassLoader 示例。它以反射方式访问类加载器,但是如果您要针对Android SDK进行构建,则可以执行以下操作:
String jarFile = "path/to/jarfile.jar";
DexClassLoader classLoader = new DexClassLoader(
jarFile, "/tmp", null, getClass().getClassLoader());
Class<?> myClass = classLoader.loadClass("MyClass");
为此,jar文件应包含名为的条目classes.dex。您可以dx使用SDK附带的工具来创建这样的jar 。
TA贡献1865条经验 获得超7个赞
我尝试使用DexClassLoader,但这也不起作用。我创建了一个派生类,并使用super(“ / sdcard / f.jar”,“ / sdcard”,null,getSystemClassLoader())称为超构造函数;但是没有成功。defineClass和findClass都不会返回动态附加的任何类。我的怀疑是android根本不支持此功能,否则正常的defineClass应该已经可以工作了。可能是由于某些安全问题。但我一定想听听原因,我也在android-developers Google组上启动了一个线程。
TA贡献1852条经验 获得超7个赞
DexClassLoader可以正常工作,如源树中的dalvik / tests / 068-classloader所示。需要“插件”体系结构的应用程序使用它。请记住,只有通过自定义类加载器才能看到该类。
添加回答
举报