Android Studio打包生成jar包,合并项目中其他第三方jar包

Hello ! I'm Back,距离上一次写博客已经是好久之前的事了,具体时间我也懒得翻看前面的博客。之前也一直在处理跳槽的事情和熟悉新公司新环境新项目的事情,也没有什么时间写东西,今天终于回归到博客小白一族,希望写的东西不要被太多人喷,毕竟写这些都是为了帮助自己记忆和分享经验,好了,废话不多说了,现在就来分享一下我碰到的坑。

在做项目的时候,很多人都想把自己写的Module或者Libs或者Utils分享出来,一来可以在其他项目中方便用到之前写的东西,二来可以帮助同事提高效率,一般大神们都会选择用Jcenter Maven仓库的方法,然后在build.gradle中去引用这个第三方库,而我们小白呢,一般都会生成一个Library Module包来创建自己要分享公开的代码,但是如果这个Module中不再修改什么的话,一直用Module来传递未免也太不方便了,而且Module在相互传递发送的时候也有可能发生里面某个文件丢失的情况,虽然概率很低。而还有一个办法就是生产jar包来用,jar包在相互发送的时候由于被压缩后反而比较小,速度快,不易丢失文件。

但是问题来了,如果在要生成jar包的Module中还有其他第三方的jar包呢,一般情况在引入或者创建Module的时候,build整个项目就会在Module中的build—>intermediates—>intermediate-jars中会自动生成一个jar包,一个debug版本一个release版本,不同版本的Android Studio生成的路径可能不同。

我也搜了网上一部分有人说还要在build.gradle中配置,复制、删除原包,重命名等一系列命令符操作,拿到一个新生成的jar包,其实这个jar包已经包含原来Module的源码,但是但是但是(重要的事情说三遍)这个jar包是不包含源码Module包中Libs下的第三方jar包的,如果引入这个jar包的话,程序会报错NoClassDefFoundError,就是因为没有找到其里面还有的一个第三方jar包,这就尴尬了,那问题又来了,那么我们怎么让Module生成jar包的时候把libs中的第三方jar包也打进去呢,我又在网上查了一下,有很多人说要用Apache ANT工具,但是要使用ANT工具需要下载,配置环境变量,输入ant命令等一系列操作,像我这么懒得人怎么会做这么复杂繁琐的工作呢,然后,今天的重点来了

在不使用ANT工具的条件下,把Module的Libs下的第三方jar包合并Module生成包含第三方jar的新jar包,其实也是在build.gradle中用task操作符操作,但是类型不是copy,而是Jar,在Module中的build.gradle中的最后加上一句这样的代码

和原来的task不同的是,把type:Copy改成了type:Jar,archivesBaseName的值等于新生成的jar包的名字,下面两句from是说把这两个路径下的jar打进去,最后一句是生成的路径,这样就可以把两个jar包合并,很多人是用Terminal的命令符操作gradle makeJar打jar包,我就跟人不一样,我就喜欢用Android Studio最右边的Gradle工具,在Module项目下找到Tasks—>other—>makeJar,或者直接敲makeJar就会出来,点击就可以了。

只要等到出现Build Successful就生成好了,现在就去配置好的路径找到这个jar包就可以了

要是不确定是否合并,可以复制一份放到桌面,将后缀改成zip,就能看到里面的确是有你要的两个包。

Thanks!

发布了25 篇原创文章 · 获赞 46 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_20328181/article/details/84333750
今日推荐