Android studio makeJar,adb调用jar包传参

目录

1:如何使用AndroidStudio 打jar包

1.1 新建一个demo项目,并添加 依赖 一个java Module 模块

1.2 Module makejardemolib 的 build.gradle 文件中添加 makejar任务

1.3 Build -> Rebuild Project 项目,在 Module makejardemolib  build/lib 目录下生成对应 makejardemolib.jar 文件

1.4 执行makeJar 生成 在上面定义的目录下生成  对应的jar包文件

2:如何将 lib 下的jar中的类 打到jar中

2.1 Module中依赖一个Okhttp,找到 Okhttp的jar包添加到 模块的lib目录下

​2.2 在 makeJar 方法中添加  from(project.zipTree("libs/okhttp-4.1.0.jar"))

3:adb调用jar如何传参

3.1 编写接收外部传参测试代码

3.2  adb 窗口执行测试 外部调用传参

3.2  我们可以用来做什么


Demo Github地址:

GitHub - Mr-Bian/MakeJarDemo

正文

1:如何使用AndroidStudio 打jar包

1.1 新建一个demo项目,并添加 依赖 一个java Module 模块

File -> new -> New Module -> 选择 java or Kotlin Library -> next

主模块App 中 build.gradle 中添加依赖

implementation project(path: ':makejardemolib')

1.2 Module makejardemolib 的 build.gradle 文件中添加 makejar任务

/* jar 包名称 */
def jarName = "makejarTest_1.0";
/* 生成jar包的位置 */
def outputLocal = "build";
/* 待打包文件位置 */
def zipFile = file("build/libs/makejardemolib.jar")

task makeJar(type: Jar) {
    /* 定义jar包中的主类 */
    /* 定义的主类,在cmd中 调用  java -jar xxx xxx xxx 时,定义的这个主类的 main方法会接受 后面的参数 */
    manifest.attributes "Main-Class": "com.bianbian.makejardemolib.UseJarTest"
    from zipTree(zipFile)
    /* 将 assets 目录下文件打进去 */
    /* 语法猜测可能是: */
    /* 来自于 文件(目录:"xx/xx/path", 包含:['xx/所有文件']) */
    from fileTree(dir: "src/main", includes: ['assets/**'])
    /* lib 下的jar中的类,打到jar包中 */
    /* 来自于 project(下的).压缩包("目录path/xxx.jar")) */
//    from(project.zipTree("libs/xxx.jar"))
    baseName = jarName
    destinationDir = file(outputLocal)
}
makeJar.dependsOn(build)

下面一个图来表示下对应注释

1.3 Build -> Rebuild Project 项目,在 Module makejardemolib  build/lib 目录下生成对应 makejardemolib.jar 文件

1.4 执行makeJar 生成 在上面定义的目录下生成  对应的jar包文件

 点击makejar 上的绿色小箭头,然后点击第一项



2:如何将 lib 下的jar中的类 打到jar中

2.1 Module中依赖一个Okhttp,找到 Okhttp的jar包添加到 模块的lib目录下

implementation 'com.squareup.okhttp3:okhttp:4.1.0'

2.2 在 makeJar 方法中添加  from(project.zipTree("libs/okhttp-4.1.0.jar"))

 重新Rebuild 项目,运行makejar,发现打出来而jar包,已经包含了对应的 okhttp.jar 中的文件

将一些三方的jar中类 打进jar中的目的:

当我们需要这些三方类实现某些功能的时候,单纯生成的jar只有我们 自己编写的一些代码类;

会导致打出来的jar功能无法使用;


3:adb调用jar如何传参

3.1 编写接收外部传参测试代码

新建类 UseJarTest,并添加main方法,详见代码中注释 

public class UseJarTest {
    private static final String TAG = "UseJarTest";

    /* 在cmd调用适用jar包时命令如下 */
    /* java -jar xxx.jar 参数1 参数2 参数3 */
    public static void main(String[] args) {
        /* jar中配置的main class 中的 main方法参数 数组 args,会接受上述  参数1 参数2 参数3 */
        LogUtil.info(TAG, "args length: " + args.length);
        for (String str : args) {
            LogUtil.info(TAG, "args: " + str);
        }
    }
}

3.2  adb 窗口执行测试 外部调用传参

 执行命令:

java -jar makejarTest_1.0.jar 参数1 参数2 参数3 参数4

窗口中会打印 代码中 使用  System.out.println(TAG + tag + ": " + logContent); 输出的日志

public class LogUtil {
    private static final String TAG = "MakeJarDemo: ";

    public static void info(String tag, String logContent) {
        /* 这里 println 为换行输入; print 为整行输入 */
        System.out.println(TAG + tag + ": " + logContent);
    }
}

注:依赖 并运行在 java 环境下

1:电脑中配置java jdk 环境变量

2:业务中如果涉及android 相关依赖调用会无法使用

3.2  我们可以用来做什么

可以用来做你想做的啥都可以,例如 操作电脑中的本地文件,输出 excel 表格,过滤 error 日志,使用 okhttp 进行文件上传 等等;

只要能想到可以使用 java 代码实现的功能都可以;

上限非常之高


版权声明:本文为baidu_35192370原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。