在Android前期的开发时,我们使用的IDE工具大多是Eclipse,所以对其熟练度相信大家都是OK的,所以对于如何将一个项目导出为jar包,供其它项目使用的操作都是没问题的。
那么现在问题来了,谷歌新提供的Android Studio工具,也都已经update到2.x版本了,到目前为止,不知道有多少人懂得对module进行打包?至少在我写下这篇文字之前,我都只关心写代码!
现在,个人实际写了个Demo来证明自己研究过,并且得到了想要的结果。
GitHub地址:点击我可获得Demo
现在创建一个项目为MakeJarDemo,并New Module为common,项目结构如下图:
其中,app 为主工程,common是要将其打包成jar包的module
步骤1:实现依赖
可在app module中的build.gradle中编写
compile project(':common')
实现app module对common module的依赖,完整代码如下:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
testCompile 'junit:junit:4.12'
compile project(':common')
}
也可以通过下图步骤实现:
步骤1:在Module中编写task
在我们编译完工程之后,对应module中的所有java文件都已经生成了包含class 的classes.jar包,所在目录如下图:
由于要打包的是common module,所以在common的build.gradle中增加如下代码:
//Copy类型
task makeJar(type: Copy) {
//删除存在的
delete 'build/libs/mysdk.jar'
//设置拷贝的文件
from('build/intermediates/bundles/release/')
//打进jar包后的文件目录
into('build/libs/')
//将classes.jar放入build/libs/目录下
//include ,exclude参数来设置过滤
//(我们只关心classes.jar这个文件)
include('classes.jar')
//重命名
rename ('classes.jar', 'mysdk.jar')
}
makeJar.dependsOn(build)
//在终端执行生成JAR包
// gradlew makeJar
该task实现将对应的classes.jar 导出到对应Module的build/libs/下,并修改名字为mysdk.jar ( 名字随意)。
在完成以上步骤后,在android studio 提供的Terminal中键入 gradlew makeJar
回车看到如下所示就表示导出成功:
:commonutils:assembleReleaseUnitTest
:commonutils:testReleaseUnitTest
:commonutils:test
:commonutils:check
:commonutils:build
:commonutils:makeJar
BUILD SUCCESSFUL
Total time: 29.936 secs
D:\Developer\WorkspaceLocal\MakeJar>
其中打包出来的mysdk.jar所在目录如下图:
再此,一个可以提供给其他项目使用的jar包就实现了,那么在其他项目中的引用,只需把该jar包放在对应module中的libs中,并添加依赖即可使用。
声明:打出来的jar只有源代码的.class 文件,不包含资源文件