打包成apk是安卓开发的最终目的,但是打包成jar包,将自己常用的方法、类、资源文件以及接口等进行封装,可以达到简化开发的目的。
一、用AS制作jar包
1.1、编译自动生成的jar包以及aar文件
新建一个Android library的model,操作:file->new->new model->Android Library(举例取名mylibrary),然后在需要运行的model中dependency添加model依赖,即compile project(':mylibrary')。当你编译完工程后其实library的所有java文件已经生成了包含class 的classes.jar包,build之后可以在mylibrary->build->intermediates->bundles->debug/default/release->classes.jar中找到,缺点是只有类文件而没有资源文件。同时我们在路径mylibrary/build/outputs/aar/中可以找到aar文件(用法跟jar包一样放在libs文件夹添加依赖即可,而且类与资源都有。其文件结构为压缩文件,可以改成zip结构,打开找到jar文件,但是aar没有jar包通用)
2.2、Gradle编写task解决没有资源文件的问题
在mylibrary的Gradle中编写代码
lintOptions {
abortOnError false
}
task buildMyJar(type: Jar) {
// //导出的jar文件名称
// archiveName = 'TestApp.jar'
// //从哪个目录打包jar
// from('build/intermediates/classes/debug')
// //导出的jar文件的存放目录(未指定则默认存放在build/libs下)
// destinationDir = file('build/libs')
// //去掉不要的类
// exclude('org/loader/mylibrary/BuildConfig.class')
// exclude('org/loader/mylibrary/BuildConfig\$*.class')
// exclude('**/R.class')
// exclude('**/R\$*.class')
// //需要打包的类
// include('org/loader/mylibrary/*.class')
// from fileTree(dir: 'src/main',includes: ['assets/**'])
// include('assets/**')
from zipTree(file('build/intermediates/bundles/debug/classes.jar'))
from fileTree(dir:'src/main',includes:['assets/**'])
from fileTree(dir:'src/main',includes:['res/**'])
baseName+"liuxingyu123"
destinationDir=file("build")
}
rebuild之后,选择右侧的gradle,点击工程->Tasks
->other->buildMyJar即可,之后会在mylibrary->build->mylibrary.jar中找到jar包,里面含有资源文件
二、用eclipse制作jar包
这个比较简单,右键你的model或者项目选择export ->java ->jar即可