Android系统。动态类加载和Java接口

时间:2012-07-14 20:25:49

标签: android

我差不多完成了我的第一个真正的Android项目,一个出租车订购应用程序,只留下了一些小的可用性问题。对于未来的版本,我们计划实现内置的编程代码和资源的自动更新,就像一些好的程序一样。我设法运行了一个基于http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.htmlHow to load a Java class dynamically on android/dalvik?Is it possible to dynamically load a library at runtime from an Android application?的简单示例。我不会在这里发布完整的代码,它看起来很像上面的链接。 Main apk充当启动器,它从SD卡加载一个jar文件,从那里加载一个特殊的类,实例化一个obect并通过Java Reflect API调用它的方法,这只会调出ab AlertDialog。

但我希望能够在启动器和加载库中使用通用基础Java接口,充当API。所以我试图在启动器和库中声明一个名为Problem的接口。代码是这样的:

Class<?> problemClass = cl.loadClass("ru.homez.euler.Problem1");
Problem problem = (Problem)problemClass.newInstance();
problem.solve(this);

Dalvik VM不喜欢这个,我得

  

java.lang.IllegalAccessError:已解析的预验证类中的类ref   意外实施

我认为这是因为问题界面在启动器和库中定义,我在这里看到了类似的问题。怎么处理这个?

1 个答案:

答案 0 :(得分:2)

我很幸运能找到这个:https://stackoverflow.com/questions/10698049/how-to-dynamically-load-a-jar-with-‌​common-abstract-class。我从库jar中删除了接口,在加载器中我将其可用性更改为public(库类加载器没有看到用apk加载的包可用类)!问题解决了!