android 生成dex,Android studio 生成Jar,和动态加载Dex

Dalvik 虚拟机和标准的java虚拟机加载机制的区别:

Dalvik虚拟机如同其他Java虚拟机一样,在运行程序时首先需要将对应的类加载到内存中。而在Java标准的虚拟机中,类加载可以从class文件中读取,也可以是其他形式的二进制流,因此,我们常常利用这一点,在程序运行时手动加载Class,从而达到代码动态加载执行的目的,但是Dalvik虚拟机毕竟不算是标准的Java虚拟机。如下图。

ea81f7621229

DexClassLoader:可以加载jar/apk/dex,可以从SDK中加载未加载的apk、

PathClassLOader:要传入系统中Apk的存放Path,所以只能加载已经安装的apk文件。

与jvm不同的是Dalvik不能直接加载.dex文件,而是要通过从ClassLoader派生出的两个类 DexClassLoader和PathClassLoader来加载.dex文件。

接下来我们实现两个步骤的准备工作。

一、打包出一个需要用到的jar文件

二、将jar文件转换成dex文件。

Android studio打包jar文件

新建一个项目创建完成后项目目录如下:

ea81f7621229

在目录com.loaderdome包下面创建一个dynamic包用来放一个接口 Dynamic 在接口里面写一个sayHello()方法,返回Srtring

ea81f7621229

新建一个impl包,并实现Dynamic接口(这个文件我们会打包成Dex文件来通过接口调用)

ea81f7621229

点击Build -->Rebuild project,点击完成后需要打包成jar 的class文件会在下面所示的目录中显示,箭头指出的就是我们需要打包的class文件

ea81f7621229

配置app moudle的 build.gradle 文件添加以下配置代码(这里注意添加在 app moudle 下面的 gradle里面而project下面的gradle)//删除dynamic.jar包任务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值