AndroidStudio 用Gradle把Moudle打成jar包

说明:

AndroidStudio 把Moudle打成jar包,使用Gradle命名配置要打包的内容,然后使用命令行执行打包。

大哥们写文章很累,转载请说出处呀!AndroidStudio 把Moudle打成jar包

项目结构:

juhepay是项目,juhepaysdk是这个项目依赖的Moudle,目的是吧juhepaysdk大成jar包,放到app的libs下面能继续使用。

步骤:

1、首先在juhepaysdk(你要打包成jar的Moudle)下面的build.gradle里面写入要打包的语句:

build.gradle:在android{ }里面添加如下代码

 

//打jar包
    // Copy类型
    task makeJar(type: Jar) {
        archiveName = 'baofoo-juhepay-v1.0-demo.jar' //最终jar包的名称
        from(project.zipTree('build/intermediates/bundles/release/classes.jar')) //需要打的juhepaysdk的编译文件
        from(project.zipTree('build/intermediates/bundles/release/libs/banksdk.jar')) //需要打的juhepaysdk所以来的jar包
        from(project.zipTree('build/intermediates/bundles/release/libs/libammsdk.jar')) //需要打的juhepaysdk所以来的jar包
        destinationDir = file('build/libs') //jar包输出路径
    }
    makeJar.dependsOn(build) //必须写的配置

然后在AndroidStudio-Terminal中输入命令:
./gradlew makeJar
或者在Android Studio右侧 Gradle - 要打包的module - Tasks - ohter - 双击makeJar
项目就会执行命令,最终会在juhepaysdk-build-libs下面生成baofoo-juhepay-v1.0-demo.jar包。

 

2、上面的操作的截图

命令行执行最终出现:

 

这样就jar包就打成了。

命令行原理:

其实打包的原理就是把Moudle(juhepaysdk包)运行编译后的classes.jar文件改个名字变成自己的jar包。

如果你的Moudle(juhepaysdk包)没有依赖第三方jar包,你不用操作操作上面的步骤,不用写命令执行命令,直接把classes.jar拷贝走就可以直接使用了。

但是大部分的Moudle(juhepaysdk包)会依赖第三方库,例如微信支付等jar包,这个时候就不能单单的把classes.jar打包走这么简单了,还需要把这些第三方库一起打进去。

这里我遇到了一个大坑:

最早我直接把from的地址携程libs下面的jar文件了,这样打成的jar包会出现包冲突,如下错误打包方式:

而是应该把编译好的第三方jar包和classes.jar一起打进jar包,下面是正确的打包方式:

至此打包完成,真的很浪费时间,还是以前的Eclipse使用的工具直接打包简单。

出错坑二:

如果在运行 gradlew makeJar 命令时出现如下错误(mylibrary为我的library库的名称):

 

Execution failed for task ':mylibrary:lint'.
> Lint found errors in the project; aborting build.
则在mylibrary目录下的build.gradle文件中,加入下面的代码块(注意代码块所在的位置),重新执行 gradlew makeJar 命令即可:

 

 

lintOptions {
       abortOnError false
   }

 

注释:打包命令task...放在android里面和外面都可以!

 

或者用系统自带的工具执行命令:

找到你的Module下面的build.gradle,右侧工具Gradle,找到对应Module下面的makejar双击执行

 

PS~代码另一种写法:

 

task makeJar(type: Copy) {
	delete 'build/libs/IMAF.jar'
	from('build/intermediates/bundles/release/')
	include('classes.jar')
	into('build/libs/')
	rename ('classes.jar', 'IMAF.jar')
}

这种写法和上面的写法第一排区别是:这里用的Copy只是把classes.jar包拷贝成IMAF.jar包了,适合没有以来的Moudle项目,如果你的Moudle有依赖,则还是用Jar命令吧!

 

  • 1
    点赞
  • 6
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页

打赏

Beluga_白鲸

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者