使用gradle打包jar包

近期用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(‘calsses.jar‘, ‘superlog‘ + VERSION_NAME + ‘.jar‘)
}

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

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

时间: 2024-08-08 09:45:41

使用gradle打包jar包的相关文章

Gradle混淆+打包Jar包基础

本文为原创文章,转载请注明出处. 文章最后会附带源码下载地址,有需要的朋友可下载. 通常我们编写Android APP时有这样的需求:(1)代码混淆:(2)模块化:(3)向第三方提供JAR包.下面将以实例的形式向初学Android或开始使用AndroidStudio(AS)的朋友介绍下这几部分. 引述: (1)AS采用了Gradle的构建工具,可以让我们很方便的对我们的APP进行配置,比如版本.支持最低API level .代码混淆文件.第三方库等等,具体语法请查考其他朋友的文章. (2)AS提

android studio 使用gradle 导出jar包,并打包assets目录

最近项目在做一个sdk,供别的开发者使用,所以要求导出jar包. 与eclipse不同,android studio 1.0 没提供导出jar包的图形界面.需要结合gradle来生成jar包. 首先 需要设置module应用的gradle插件为 library 代码长这样: ? 1 <code class="hljs">apply plugin: 'com.android.library'</code> 这样,build的时候,android studio 1.

Android Studio 使用 Gradle 打包 Jar

Android Studio 打 Jar 包一直是一个麻烦的事,按照网上现有的教程,打包一个混淆的 jar 需要完成下列步骤: 1.将 plugin 修改为 library 后 build 出 aar,再提取 aar 里面的 classes.jar 2.使用 jarjar 等工具剔除多余的 class 3.对第二步得到的 jar 进行混淆 无论哪一步,所做的工作量都不少.于我个人而言,相当麻烦,于是花了些时间研究了下 Gradle 打 Jar 包. 代码 废话不多说,先上代码(注:只在 Grad

【Eclipse】 Maven和Gradle区别及使用Eclipse中使用Gradle下载Jar包

一.简介 代码三大构建工具,Ant.Maven和Gradle.现在的状况是Maven和Gradle并存,Gradle使用的越来越广泛. 二.Maven和Gradle区别 Maven的主要功能是多模块构建.依赖管理系统.一致的项目结构.一致的项目构建模型和插件机制.主要体现以下5点 多模块构建 现在的项目中,一般我们会将一个项目分解是多个模块.在Maven中需要定义一个parent POM作为一组module的通用配置,我们可以用<modules>标签来定义一组子模块 在Gradle也支持多模块

在Android studio中用gradle打 jar 包(Mac下)

这两天公司要重构项目,以前的项目在eclipse上,准备迁移到Android studio上,需要对项目打包,于是我学习了Android studio中gradle打包的内容.我在公司用的Mac,在家用的Windows,两种平台下,打包基本一样的,这里主要说下在Mac系统下的过程. 在Andorid studio中的Terminal用的是Mac的终端,所以要使用Terminal的gradle命令打包,先要配置下mac中的gradle环境,打开mac上的终端: (1) 输入命令:open .bas

使用Gradle部署jar包到Maven中央库

Maven作为目前Java界最好的Dependency管理系统,把jar包托管到Maven中央库,然后通过Maven Dependency使用是目前业界各种第三方库的普遍做法,如果,你想把自己开发的一些库分享给别人使用,也可以遵循这样的套路.Gradle可以看做是升级版的Maven,其使用了Maven最优秀的Dependency管理系统,但是,又规避了Maven的build pipeline的刻板和xml格式配置文件等缺点,可以说是目前Java界最好的构建工具.下面就来说说,如何使用Gradle

android 导包 导入jar包,打包jar包,打包成library。 KanKanStyle

(1)项目导入JAR包: 1.在项目EC或MYec里,将外部jar包拷贝在个libs目录里面.老的项目没有lib目录,活着叫lib,会报错,要改成libs 2.右键点击项目,Bulid Path->Configure Build Path 3.在设置Libraies项,选择刚才的位置添加jar包. 3.在Order and Export项里,将外部jar包选中.(很多时候,可以免去) 4.clean项目后,重新编译,这时的apk包里应该是包含外部jar啦. 在MyEc或androidStudio

Gradle打包jar可执行程序

1. 使用springboot插件 apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'spring-boot' buildscript { ext { springBootVersion = '1.2.5.RELEASE' } repositories { jcenter() mavenLocal() mavenCentral() } dependencies { classpath "org.springframework.

如何使用gradle打jar包

1.进入工程目录,输入./gradlew,如显示"... build success" 则表示当前目录下gradle可用:如当前目录下无gradle,则在线下载 .. 2.输入./gradlew clean  清空build文件夹 3.输入./gradlew build  即可  在build文件夹中可查看到jar包 build过程中gradle总报javaDoc生成错误,解决办法: ./gradlew -x javadocJar build from :http://www.osch