【发布时间】:2011-04-01 18:37:18
【问题描述】:
我正在尝试为 Android 应用程序构建一个插件架构。我有一个主机应用程序,它将检查 apk“插件”文件的目录,将它们加载到 DexClassLoader 中,并调用一个方法来获取 DerivedLibraryObjects 数组。
我认为问题在于 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,它就会抛出这个错误。
有人有什么建议吗?
【问题讨论】: