注:MathUtil是定义在utillibrary下的一个工具类,生成出common_util.jar后拷贝到dynamiclibrary进行依赖,此处实现比较简单忽略该步。
按照上面生成jar的方法,生成出dynamiclibrary对应的dynamic.jar;
经过上述步骤后,我们得到三个jar包,分别是:
common_interface.jar 定义了标准接口;
common_util.jar 定义了工具类;
dynamic.jar 标准接口的实现类,我们需要动态加载的jar;
二、合并JAR并使用DX工具处理JAR包
下面我们开始介绍合并Jar的流程,由于common_interface.jar是标准接口,我们会在主项目中引用,所以不需要合并它,我们只需要合并common_util.jar和dynamic.jar。
对于合并Jar的方式,网上有很多方式,如fatjar插件、或者用IDEA工具,具体操作方法自行百度,我这里用的是ANT合并的方式,首先我们需要安装并配置ANT环境:
ANT下载官网地址:
http://ant.apache.org/bindownload.cgi
下载完成后,解压,然后在我的电脑 –> 右键属性 –> 高级系统配置 -> 环境变量中配置ANT:
执行成功后,我们需要将该jar包使用dx工具进行转化:
将合并后的jar包拷贝到android-sdk/buildtools下的任意一个版本目录下,执行“dx --dex --output=dynamic_combine_dx.jar dynamic_combine.jar”
三、动态加载
执行成功后,我们得到最终的dynamic_combine_dx.jar,下面我们可以在主项目中进行动态加载了,通过两步来介绍动态加载过程:
1、下载dynamic_combine_dx.jar到SD卡:
首先将dynamic_combine_dx.jar拷贝到app/assets下(这里是为了模拟下载过程,实际项目中可配置到后台,从后台下载)
注:需在manifest添加权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />