(技术)聊聊Android Studio 如何生成Jar

2019-11-26  本文已影响0人  点映文艺

在你的项目开发过程中,肯定不少使用jar包,虽然当下通过依赖注入的方式引入资源类库更为流行,

但是Jar在项目中多多少少依然是剪不断理不烂的存在。接下来,这篇文章将详细的给你展示如何生成自己的jar包

友情提示,在看这篇文章之前建议你先买点零食放着,等你做出来自己的Jar包了,零食作为奖励犒劳自己

我这个友情提示是不是有点骚.....哈哈哈哈

好了,Android Studio发动起来.....

先创建一个HelloJarApplication项目,在这个项目中创建Module,然后将Module生成Jar包

j1.png

接下来,在HelloJarApplication项目中创建一个Module,我们暂且命名为MyUtils吧

j2.png

第3步,是在MyUtils这个Module中创建一些类文件,作为测试的API

j3.png

第4步, 对MyUtils这个Module的build.gradle文件 进行配置,特别说明是Module的build.gradle文件,

而不是app,这个要搞清楚,配置的代码先贴这里一份,后续还有提供方式不同功能相同的代码

MyUtils模块build.gradle文件中的配置代码:

def _BASENAME ="myutils" // jar 的名称
def _VERSION ="-v1.0"    // jar 的版本号
def _DestinationPath ="build/libs" //生成jar包的位置
def zipFile = file('build/intermediates/packaged-classes/release/classes.jar') //待打包文件位置

task deleteBuild(type:Delete){
    delete _DestinationPath + _BASENAME + _VERSION +".jar" // 每次打包之前先自动删除原有的jar
}
task makeJar(type:Jar){
    from zipTree(zipFile)
    from fileTree(dir:'src/main',includes:['assets/**'])//将assets目录打入jar包
    baseName = _BASENAME + _VERSION
    destinationDir = file(_DestinationPath)
}
makeJar.dependsOn(deleteBuild, build)

特别说明:该段代码的放置位置: 与android 和 dependencies 节点同级
                                                       与android 和 dependencies 节点同级
                                                       与android 和 dependencies 节点同级
                                重要的话逼逼3遍!!!

如下图

j4.png

Well,Well,Well,至此配置结束,接下来开始生成Jar

生成Jar的方式有两种

方式1

5.png j5.png

结果如下

j6.png

方式2

j7.png

当然结果和方式1一样,恕不上图

至此,Jar成功生成,下面提供其他形式的配置代码,顺带说一下这个过程的坑

如果你配置了代码却没有生成Jar,恭喜你!!!不是恭喜你没成功喝倒彩,而是恭喜你,即将要找到原因了

duang,duang,duang.....敲黑板

这个待打包文件位置,存在着一个版本不同而导致 的不同问题
def zipFile = file('build/intermediates/packaged-classes/release/classes.jar') 

Android Studio3.1.3之后的版本是: “build/intermediates/packaged-classes/release/”
Android Studio3.1.3之前的版本是: “build/intermediates/bundles/release/”

如果你配置了代码,并且反复检查配置没问题但却没有生成Jar,很大可能是这里出问题了

下面提供其他形式的配置代码

task makeJar(type: Copy) {
   
    delete 'build/libs/myutils-v1.0.jar'  // 删除之前生成的jar
    from('build/intermediates//packaged-classes/release/')  // 设置待打包文件位置
    into('build/libs/') //生成jar包的位置 放入build/libs/目录下
    include('classes.jar')  // include ,exclude参数来设置过滤
    rename ('classes.jar', 'myutils-v1.0.jar')  // 将jar重命名为myjar.jar
}
makeJar.dependsOn(build)

特别说明:该段代码的放置位置: 与android 和 dependencies 节点同级
                                                       与android 和 dependencies 节点同级
                                                       与android 和 dependencies 节点同级
                                重要的话逼逼3遍!!!

好了,又是文字,又是图片,叨逼叨了这么多,现在是 2019-11-26 19:39:07,我要回家吃饭了

打完收工....诶,等等

QQ群放这里:578060039 我放了,你随意

打完收工,See you next article.....赛有娜拉。

上一篇下一篇

猜你喜欢

热点阅读