0

我几乎完成了我的第一个真正的 Android 项目,一个出租车订购应用程序,只剩下一些小的可用性问题。对于未来的版本,我们计划像一些好的程序那样实现编程代码和资源的内置自动更新。我设法运行了一个简单的示例,基于http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html如何在 android/dalvik 上动态加载 Java 类?是否可以在运行时从 Android 应用程序动态加载库. 我不会在这里发布完整的代码,它看起来很像上面的链接。主 apk 充当启动器,它从 SD 卡加载一个 jar 文件,从那里加载一个特殊类,实例化一个对象并通过 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:预验证类中的类引用解析为意外实现

我认为这是因为在启动器和库中都定义了问题接口,我在这里看到了类似的问题。如何处理?

4

1 回答 1

2

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

于 2012-07-15T06:01:28.247 回答