android动态加载外部jar包,用eclipse将class转换成dex
来源:互联网 发布:php get object vars 编辑:程序博客网 时间:2024/06/03 22:15
应用场景:我们把apk提供给第三方,jar包中是需要第三方实现的接口,第三方实现以后可以替换原apk中的jar包。这篇文章的第五步可以将.class类型的jar转换成.dex类型,作用同dx工具。
第一步:在AndroidManifest.xml文件中添加<uses-library,name是自己用到的jar包中类的包名,如图,我用到的类分布在三个包中
第二步:我们会添加jar包到自己的项目中,方法如下图,右键项目--Build Path--Configure Build Path
第三步:选择Libraries,根据箭头所示添加外部jar包
第四步:外部jar包添加进来以后,选择Order and Export,将jar包勾选上(默认是不勾选的),这样才能对其进行编译,把.class编译成.dex文件,如第五步所示
第五步:执行Run As编译工程以后,在bin文件下的dexedLibs下会生成一个对应的新jar包,如下图所示,我们可以打开jar包看一下,发现里面的.class文件已经变成了.dex,这很重要,后面会说到,这样的jar包push到手机的/system/framework目录下才能被识别,说白了我们只是利用eclipse将原来的jar包编译了一下,以便Dalvik能识别
第六步:运行cmd,执行adb remount命令,获得手机文件读写权限,Ctrl+c复制上面的新jar包到一个新地方,执行adb push [新jar包的位置] /system/framework,把新jar包复制到手机系统存放jar文件的位置/system/framework,用到的几个jar包都要push进去,apk运行的时候会自动寻找
第七步:执行adb pull /system/etc/permissions/platform.xml E:/命令,将手机系统中的platform.xml文件复制到E盘,我们打开该文件,在最下面的<library name标签下添加几行,保存
其中name与前面AndroidManifest.xml文件中添加的<uses-library中的name一样,是类所在的包名,file是包名所在的jar包,这就是apk运行的时候会自动寻找的原因,因为我们在platform.xml文件中说明了类所在的包名和包名所在的jar包。
第八步:执行adb push E:\platform.xml /system/etc/permissions/platform.xml命令,用修改后的platform.xml文件替换手机系统中的原文件。
第九步:取消第四步勾选的jar包,重新编译一下项目,生成不包含jar包的apk并安装到手机中(如果安装失败,报[INSTALL_FAILED_MISSING_SHARED_LIBRARY]错误,说明系统没有找到对应jar包),重启手机(千万别忘了),这时我们发现apk仍然能正常运行,因为apk引用了我们push到手机中的jar包。
- android动态加载外部jar包,用eclipse将class转换成dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- Android动态加载jar/dex
- zabbix3.2邮件报警
- 用JavaScript实现十大经典排序算法--冒泡排序
- 深入理解Java虚拟机:虚拟机是什么?
- 网易视频云:分布式转码服务高可用浅析
- 手势滑动日历
- android动态加载外部jar包,用eclipse将class转换成dex
- Dubbo2.8.4资源地址
- 【BZOJ 4516】 [Sdoi2016]生成魔咒 后缀自动机
- 删除一字符串的出现的字符子串
- 使用python登录新浪API,实现自动转发功能
- VC,VS,C++,OpenGL,OpenCV,VTK,Python常见的编译错误及解决方案
- Mac OS 安装 OpenCV (python3)
- 用JavaScript实现十大经典排序算法--选择排序
- asp.net core使用mysql.data和dapper操作mysql数据库