在android开发过程中,我们有时会遇到比较大的项目,而本身负责该项目中的一个子功能实现,这个时候可以考虑将该子功能模块,打包成jar包提供给其他人使用。
AS3.2 项目生成jar包.jpg一、含义介绍,什么是JAR?
JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个[压缩文件]。为 J2EE 应用程序创建的 JAR 文件是 EAR 文件(企业 JAR 文件)。JAR 文件格式以流行的 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和[插件程序]和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 JAR。
二、android中jar包
android jar包.png可以发现整个jar并不包含任何res文件,即你无法在jar包里面防止drawable,layout,string 等等,如果必须要使用这些东西,可以使用打包成aar。
三、android jar如何构建
-1.新建一个项目,然后给项目新建一个Modle,一般会自动添加依赖
新建项目的Modle.pngbuild.gradle里面Modle的依赖
新建的Modle以及app的build.gradle里面的依赖.png
-2.在Modle里面实现你的纯java模块,然后在你的Modle 的build.gradle的android{}里面添加如下代码:
task makeJar(type: Copy) {
//删除存在的
delete 'build/libs/myjar.jar'
//设置拷贝的文件 打进jar包后的文件目录
from('build/intermediates/packaged-classes/release/')into('build/libs/')
//将classes.jar放入build/libs/目录下
//include ,exclude参数来设置过滤
//(我们只关心classes.jar这个文件)
include('classes.jar')
//重命名
rename ('classes.jar', 'myjar.jar')
}
makeJar.dependsOn(build)
注意:在as 3.2中对 intermediates 做了更改,build/intermediates/packaged-classes/release/表示classes.jar的位置
而在as2.2中路径是这样的 build/intermediates/bundles/defalut/,无论怎样添加上classes.jar路径即可,而markJar会把classes.jar换成一个新的名字,例如myJar.jar。
-3.在AS的左下方点击Terminal然后输入 gradlew makeJar 即可。
其中gradlew是指令而markeJar是你在build.gradle的命名
Terminal命令.png
当出现SUCCESS即表示当前的jar打包成功,如果失败并且为包含res文件,可以查看日志信息,在build.gradle中添加
lintOptions {
abortOnError false
}
可以解决部分错误中断jar包生成。
网友评论