我认为问题在于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,它就会抛出这个错误.
有没有人有什么建议?
解决方法 我可以回答我自己的问题 – 问题是主机和插件都包含外部jar库,所以当类加载器发现同一个类有两个版本时,它就会失败.你可以做的是通过编译所有类文件来手动构建你的插件(我让Eclipse这样做),然后使用dex构建一个jar / apk:
dx --dex --output=<outputdir>\plugin.jar <projectpath>\bin\
projectpath是你的androID项目的根.当您进入bin目录时,应该找到您的类文件.
如果有人可以发布一个蚂蚁脚本来执行此 *** 作,那么添加到此问题将是一件好事.
总结以上是内存溢出为你收集整理的android – 链接到外部JAR库时使用DexClassLoader的反射全部内容,希望文章能够帮你解决android – 链接到外部JAR库时使用DexClassLoader的反射所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)