之前提供jar的方式很直接暴力,运行后直接在module的build/intermediates/bundles/相应用渠道环境目录下就可以找到class.jar包,直接改名。当然也可能通过在build文件中创建相关task来创建jar包(这里不多描述了)。但这样打的jar包不能独立运行了。
可以独立运行的jar包,解压后有清单文件,即META-INF/MANIFEST.MF,且在清单文件中有指定Main-Class
(注:上面的module是android library,后面我们测试的都是java library,上面第一种方法的jar包中没有清单文件,但不影响功能,而第二种方式有清单文件,但没有指定Main-Class)
先创建工程,接着创建java library,然后通过module settings设置为主app module的module dependencies
然后编译后在module/build/lib下就会生成jar包了
指定Main-Class的方法有两种
1、自已打包进去
将jar包解压后,在清单文件中添加
Main-Class: your.mainclassname
接着在主目录下通过命令行重新打包即可
jar -cvmf META-INF\MANIFEST.MF name.jar com
name.jar 为jar包名,com为最外层包名
2、通过module的build文件中直接配置
jar {
//项目名,也是生成的jar的名字
baseName = "libdemo"
//项目版本号,这部分内容会写进manifest
version = "1.0"
//项目的manifest定义,其中就包含最关键的入口类定义
manifest { attributes 'Main-Class': 'com.your.main.class.name' }
}
编译后生成的jar包即可独立运行了
java -jar your.jar
题外话……倒霉的一个早上,心情不好
想把昨晚写的博客发布出去,结果网页跳转不过去,然后在草稿箱里也没有找到,调整的心情又回到谷地,本来想就这样的,不想写了,但回头想了一下,这样之前的整理不就更浪费了,好在这次写的东西不多,耐着性子总算写了出来。
最后希望大家借鉴一下吧,要养成备份,多点保存草稿的习惯,要不然看着自已码的字就这么没了,伤心情。