整理对外的SDK,自己项目中用到以前写的一些Jar的库,刚开始以为build/intermediates/bundles下的class.jar 就可以使用,但是测试运行发现 libs 下引用的Jar 包中的类没包括进去。如果要打的Jar工程libs 中没有依赖第三方Jar包是可以直接只用该目录下的class.jar的,但是运行发现报 classnotdeffound 错误,于是摸索这使用gradle 把libs 下的 Jar包也打进去。代码如下
task makeJar(type: Jar) {
archiveName = 'domob_android_sdk.jar'
from('build/intermediates/classes/release/')
from (project.zipTree('libs/aaa.jar'))
from (project.zipTree('libs/bbb.jar'))
from (project.zipTree('libs/ccc.jar'))
destinationDir = file('build/lib')
}
domob_android_sdk.jar 是要生成的Jar包的名称
build/intermediates/classes/release/ 是把该文件夹下的所有class文件都打包到 domob_android_sdk.jar 下
aaa.jar, bbb.jar , ccc.jar 都是要打SDK工程下libs 中的Jar包
destinationDir = file('build/lib') 是生成的Jar包的位置
gradle 有自己的语法 makeJar 是任务名称,可以在gradle 中看到 ,type 是生成Jar形式,还有比较常见的 Copy,Delete。结构大概如下图
点击Android Studio右侧的gradle,然后再找到打包的工程,即可看到Tasks,里面包括other在other 中makeJar 这个任务就可以找打了,点击 makeJar ,运行成功就生成完整的Jar,包括工程中的class文件,libs下的 Jar 相关的class
本文介绍如何使用Gradle将项目中的class文件及libs下的多个第三方Jar包整合进单一的SDK Jar文件。通过定义Gradle任务,从指定路径收集文件,并最终生成可用于分发的domob_android_sdk.jar。

7691

被折叠的 条评论
为什么被折叠?



