APK文件中有interface IA
个类。我创建了一个包含IA' implementation MA
的jar。该jar有Global class
和B class
。 jar用数据目录中的Dexclassloader动态加载。
interface IA {
test();
}
class Global {
IA instance; //refer to MA instance.
}
class B {
....
instance.test() ; // throw NoSuchMethodError
....
}
但通过反思调用实例的测试方法是可以的。
为什么呢?当然我不熟悉Classloader或DexClassloader的一些原理。有人可以给我解释一下吗?感谢
答案 0 :(得分:0)
我也遇到了NoSuchMethod错误,在做了一些测试后我发现问题是JAR里面的DEX文件没有被命名为classes.dex。 应用程序能够创建类的新实例的事实并不一定意味着DEX已正确加载,我使用空JAR测试它(即通过7-ZIP删除所有内部文件)并且仍然能够实例化我的类(虽然我猜它只适用于获取零参数的默认构造函数)。