android studio现在jar包方式的引用可能越来越少,大部分都是通过gradle引入github项目依赖即可,不过今天还是讲一讲jar包的导出和合并,算是记录下吧。
一、创建一个新的library项目,项目名为mylibrary。找到build.gradle文件,文件第一行为:
apply plugin: 'com.android.library'
这是标识这个项目为library项目。
其实只要你的library项目运行过就会在\build\intermediates\intermediate-jars目录下面找到生成的debug和release版本的classes.jar(不同的android studio可能生成的路径不一样,可通过文件夹的搜索找到,我的android studio的版本为3.0.1),如图:
接下来其实就是对这个classes.jar,重命名打包。还是在build.gradle文件下,写入如下脚本:
task makeJar(type: Copy) { //删除存在的 delete 'build/libs/mysdk.jar' //设置需要拷贝的文件 from('build/intermediates/intermediate-jars/release/') //将classes.jar放入build/libs/目录下 into('build/libs/') //将classes.jar放入build/libs/目录下 //(我们只需要取classes.jar这个文件) include('classes.jar') //重命名 rename ('classes.jar', 'mysdk.jar') } makeJar.dependsOn(build)
最后打开android studio的Terminal控制台,输入gradlew makeJar,等待执行一段时间出现:BUILD SUCCESSFUL字样就说明导包成功了。然后可以在上面配置的build/libs/目录下找到mysdk.jar文件就是导出的jar包了。
二、上面导出的jar包是不会将该library项目依赖的第三方jar包打进去的。那么如果我们不把第三方的jar打进我们导出的jar包中,别人引用我们的jar包就会出现NoClassDefFoundError错误,这就很尴尬了,那么如何把第三方jar包打进我们的jar包里面呢。这就要用到一个工具了---Apache ant.
这里是下载地址:https://github.com/alibaba/fastjson/releases
解压或者安装后可以得到以下目录:
同时我们需要配置下系统环境变量:这个大家应该都知道吧:
然后在Path变量值后面加入:%ANT_HOME%\bin;%ANT_HOME%\lib;
然后确定,打开dos,输入ant,如果出现
那么恭喜你,ant安装和配置成功了,接下来就是这个build.xml文件了
再回到dos,输入命令ant -buildfile E:\apache-ant-1.9.7\build.xml.出现BUILD SUCCESSFUL,说明合并成功了然后在目录e:/jar下面查看我们合并后的jar包
然后将together.jar拖入
中你可以看到:
至此,jar包的合并完成。