关闭

使用gradle打包jar包

标签: gradle打包jar包android-libraryandroid-studio
58266人阅读 评论(9) 收藏 举报
分类:

STOP MAINTENANCE!(2017-05-25)


最近用android studio来做android开发的IDE,它是使用gradle来构建的,于是开始学习gradle.

现在有一个项目,里面有一个android-library的模块。我想在做release的时候,把这个模块中我写的代码编译并打包成jar包,并且和依赖的jar包拷贝出来,但android studio对android-library的管理是把其与依赖包打包成一个aar的包的,显示这不是我要的,于是便想用gradle来实现。

首先我找到的第一种方法是在模块中的build.gradle增加一个编译jar包的task.代码如下:

task releaseJar(type:Jar) {
    from sourceSet.main.java
    destinationDir = file('build/libs')
}

但是执行的时候,却提示里面的Log类找不到。显示用这种方法只能编译一般的java文件,无法编译用到了android库的源文件。可能是还要在哪里添加依赖吧。


第二种方法是在stackoverflow中找到的,它也确实能打包成jar包。代码如下:

android.libraryVariants.all { variant ->
    def name = variant.buildType.name
    if (name.equals(com.android.builder.BuilderConstants.DEBUG)) {
        return; // skip debug builds
    }
    def task = project.tasks.create "jar${name.capitalize()}, Jar
    task.from variant.javaCompile.destinationDir
    artifacts.add('archives', task)
}

然后执行gradle jarRelease就可以了。

但是它会把我的R.java也编译进去,而且这个文件又很大。我原来的代码编译之后打包才不到13K,加上编译这个文件的话,要28K。


第三种方法就比较取巧了。这是因为gradle在构建的时候,会对这个模块的class文件先打包成classes.jar并放在build/bundles/release。于是我只需要把它拷出来,并重命名就可以了。

于是代码如下:

task releaseJar(type: Copy) {
    from( 'build/bundles/release')
    into( 'build/libs')
    include('classes.jar')
    rename('classes.jar', 'superlog' + VERSION_NAME + '.jar')
}

task releaseLib(type: Copy, dependsOn: releaseJar) {
    into "../../release"
    from 'libs'
    from 'build/libs'
}

其中VERSION_NAME是我定义的一个变量,在gradle.properties文件中。该文件与gradle.build在同级目录。

1
9
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

gradle生成可运行jar包

在http://blog.csdn.net/zero__007/article/details/50708166中简单介绍了使用gradle生成可运行jar包,但是在实践中可能会发现,生成的jar中包...
  • zero__007
  • zero__007
  • 2017-02-07 19:32
  • 4745

Gradle 自定义Task 打Jar包

之前的ADT为eclipse,所以对外提供jar时候,直接Export,选中src目录输出就可以了。但切到AS中的时候,就一直很啰嗦。所以,趁着晚上无聊,就研究了一下Gradle的Jar包的输出。 可...
  • qq_15364915
  • qq_15364915
  • 2016-08-09 23:14
  • 7363

Gradle打jar包,包含所有依赖

前言最近被gradle折腾的欲仙欲死。gradle想把所有依赖打进jar包主要有两种方式:一种是重写jar动作,一种是用第三方插件。为了装x,我一直都是用的第一种方式,结果出了问题解决不了,为了不影响...
  • zhaodedong
  • zhaodedong
  • 2016-03-15 18:41
  • 8017

gradle 发布jar包到nexus

apply plugin: 'maven' uploadArchives { repositories { mavenDeployer { pom.g...
  • yx511500623
  • yx511500623
  • 2015-12-28 14:12
  • 2577

使用gradle编译jar包

尝试下脱离Android Studio打包一下jar包,正好在使用volley,就自己练习一下使用gradle打包jar吧。
  • GeorgeBinDragon
  • GeorgeBinDragon
  • 2016-08-19 15:01
  • 724

Gradle加载本地jar包

有时,我们需要的jar包不一定能在远程仓库中找到,这时我们需要加载本地的jar包。
  • m1213642578
  • m1213642578
  • 2016-10-09 08:28
  • 12763

如何通过gradle来导入jar包

很多android项目在lib文件夹下看不到任何的jar包,但是项目中确实导入了很多的第三方jar包.这里我们来看看androidstudio通过gradle来导入jar包的方法. 首先我们需要进入...
  • qq_20369621
  • qq_20369621
  • 2017-03-02 16:08
  • 1577

gradle-xxx.jar下载地址和gradle-xxx.zip下载地址

gradle-xxx.jar包下载 gradle-xxx.zip下载地址
  • xufazhong
  • xufazhong
  • 2017-06-22 15:10
  • 837

Gradle中打jar包的方法

不管是在Eclipse或是在IntelijIdea中,都有比较好的方法进行打包,但是在gradle时代,打JAR包就只好自己动手写脚本了。如果,要打jar包,我们要清楚原理。 jar包其实就是把所有...
  • zoudifei
  • zoudifei
  • 2015-12-24 23:48
  • 7948

Gradle实现的两种简单的多渠道打包方法

本来计划今天发Android的官方技术文档的翻译——《Gradle插件用户指南》的第五章的,不过由于昨天晚上没译完,还差几段落,所以只好推后了。 今天就说一下使用Gradle进行类似友盟这样的多渠道打...
  • maosidiaoxian
  • maosidiaoxian
  • 2014-12-18 09:07
  • 54858
    个人资料
    • 访问:2130793次
    • 积分:14236
    • 等级:
    • 排名:第1010名
    • 原创:139篇
    • 转载:0篇
    • 译文:89篇
    • 评论:891条
    欢迎访问我的博客
    个人博客:http://githang.com
    QQ群
    博客专栏
    最新评论
    我的公众号
    微信关注我的公众号
    站长统计