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双击执行
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命令吧!