1、新建一个Module:mylibrary
File——》New——》New Module——》Android Library
2、在app模块下添加引用mylibrary模块
3、在mylibrary模块下的build.gradle中添加如下设置:(添加完同步一下即可)
这种方法只打包class文件:
task makeJar(type: Copy) {
//删除存在的jar包,这里打包jar包名字是MyUtils.jar
delete 'build/libs/MyUtils.jar'
//设置拷贝的文件 from路径下的文件into到build/libs/路径下,方便找到
from('build/intermediates/packaged-classes/debug/')
//打进jar包后的文件目录
into('build/libs/')
//将classes.jar放入build/libs/目录下
//include ,exclude参数来设置过滤
//(我们只关心classes.jar这个文件)
include('classes.jar')
//重命名
rename('classes.jar', 'MyUtils.jar')
}
makeJar.dependsOn(build)
注意:以上配置信息要与 android {…….} 配置的脚本成平级关系。
注意:有些版本生成jar包的路径不是build/intermediates/packaged-classes/debug/,要根据实际情况而定
4、在mylibrary模块中创建一个Java类用于测试
public class TestUtils {
public static int Addition(int var0, int var1) {
return var0 + var1;
}
}
5、在Terminal中输入gradlew makeJar来打包jar(推荐)
第一次打包会比较慢,之后就很快了,打包成功之后可以看到
在build/libs下看到,打包成功
5、调用jar包,看能否正确使用
int i = TestUtils.Addition(1,2);
Log.i("yyy", "i-----------: " + i);
可以正常使用,以下可以忽略,因为作者还未验证是否可用。
这里添加一种可以打包所有工程(包括res等等)的打包方式:
在mylibrary模块下的build.gradle中添加如下设置:(添加完同步一下即可)
以下这段是笔记代码,可以忽略
//生成jar包的名字
def SDK_BASENAME = "MyUtils";
//jar的路径
def sdkDestinationPath = "build/libs/";
//jar之前存放的位置
def zipFile = file('build/intermediates/packaged-classes/debug/classes.jar')
//删除已经存在的jar包
task deleteBuild(type: Delete) {
delete sdkDestinationPath + SDK_BASENAME + ".jar"
}
task makeJar(type: Jar) {
from zipTree(zipFile)
//main下除java的其他工程
from fileTree(dir: 'src/main',includes: ['res/**','jniLibs/**','AndroidManifest.xml','proguard-project.txt','project.properties','.classpath','.project'])
//将java文件夹下
from fileTree(dir: 'src/main/java',includes: ['bin/**','doc/**'])
baseName = SDK_BASENAME
destinationDir = file(sdkDestinationPath)
}
makeJar.dependsOn(deleteBuild, build)