文章序列
- 新建moudle,并主项目依赖
- 修改gradle打jar包
- 测试
新建moudle,并主项目依赖
我们创建一个名叫 jar_test_lib moudle,并在主项目进行依赖:
在 app - build.gradle - dependencies下添加:implementation project(':jar_test_lib')
简单创建一个类,输出log方便后面测试
package com.example.jar_test_lib;
public class JarTest {
private void toLog(){
System.out.print("jar包调用成功");
}
}
因为jar包中不能包含资源文件,有时候会碰到需要图片的情况
所以我们在main 目录下创建 assets 文件夹,随便选一张图片放在 assets下
那么准备工作完成了,选择 build - Rebuild project 一下项目
修改gradle打jar包
我们在新创建的moudle jar_test_lib 下的 build.gradle 添加配置项
我们在 android{} 内(与 defaultConfig 平级)添加如下代码
/* jar 包名称 */
def jarName = "jar_test_1.0";
//生成jar包的位置
def outputLocal = "build";
//待打包文件位置
def zipFile = file('build/intermediates/packaged-classes/debug/classes.jar');
task makeJar(type:Jar){
from zipTree(zipFile)
//将assets目录打入jar包
from fileTree(dir:'src/main',includes:['assets/**'])
baseName = jarName
destinationDir = file(outputLocal)
}
makeJar.dependsOn(build)
makeJar 随便起名字,但上下要一致,比如:
task makeJarXXXX(type:Jar){
。。。
}
makeJarXXXX.dependsOn(build)
接下来我们选择 gradle - jar_test_lib - tasks - other - makeJar
如下图所示说明jar生成成功
测试
接下来我们将生成的jar包放在APP的lib下:
右键jar包选择 add as library
app下的build.gradle 取消对之前 moudle的依赖
接下来我们创建一个空类,通过单元测试调用 之前的 log 方法看控制台是否生效
public class JarDiaoYong {
public void diaoYongTest() {
}
}
我们通过上一章反射的方法对jar包中的方法进行调用:
public void diaoYongTest() throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
/* 获取实例 */
String packageName = "com.example.jar_test_lib.JarTest";//改成你自己的 报名 + 类名
Class clazz = Class.forName(packageName);
Constructor constructor = clazz.getDeclaredConstructor();
constructor.setAccessible(true);
Object instance = constructor.newInstance();
/* 调用方法 */
String methodName = "toLog";//改成你自己的方法名
Method method = clazz.getDeclaredMethod(methodName);
method.setAccessible(true);
method.invoke(instance);
}
在单元测试中调用测试类:
@Test
public void diaoYongTest() {
new JarDiaoYongTest().diaoYongTest();
}
右键选择运行该方法:
输出台信息:
参考文章: