Android studio 打包jar包

  在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 文件,不包含资源文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章