我正在尝试将Android应用程序的插件体系结构放在一起。我有一个宿主应用程序,它将检查apk“插件”文件的目录,将它们加载到DexClassLoader中,并调用一个方法来获取DerivedLibraryObjects数组。使用DexClassLoader时链接到外部JAR库时的反射
我认为问题在于DerivedLibraryObject扩展了包含在外部JAR库中的基类。所以主机和插件都引用这个JAR。当我试图让DerivedLibraryObjects的阵列我得到以下异常:
04-01 14:26:57.996: ERROR/AndroidRuntime(23386): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
从我所收集,这意味着在插件对象不匹配主机的对象。但是,主机和插件应用程序链接到同一个确切jar文件的副本。如果我返回一个简单扩展Object的对象,那么代码就可以正常工作,但只要我开始处理DerivedLibraryObject,就会引发此错误。
有没有人有什么建议?