我的学习篇二:使用 Android Studio 打Jar 包

本文详细介绍了如何在Android Studio中创建一个新的模块jar_test_lib,设置依赖,并修改gradle配置来打包jar。通过测试确保jar包能正确运行并调用其中的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章序列

  1. 新建moudle,并主项目依赖
  2. 修改gradle打jar包
  3. 测试

新建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();
    }

右键选择运行该方法:

输出台信息:

参考文章:

https://www.cnblogs.com/xinaixia/p/7660173.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值