使用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在同级文件夹。
使用gradle打包jar包的更多相关文章
- android studio 使用gradle 导出jar包,并打包assets目录
警告:本文年久失修. 随着android studio的升级 ,gradle的升级,严格按照本文的代码去做可能不会成功,希望依然可以作为解决问题的思路. 最近项目在做一个sdk,供别的开发者使用,所以 ...
- [转]--android studio 使用gradle 导出jar包,并打包assets目录
转自: http://www.cnblogs.com/wuya/p/android-studio-gradle-export-jar-assets.html 最近项目在做一个sdk,供别的开发者使 ...
- Android Studio 使用 Gradle 打包 Jar
Android Studio 打 Jar 包一直是一个麻烦的事,按照网上现有的教程,打包一个混淆的 jar 需要完成下列步骤: 1.将 plugin 修改为 library 后 build 出 aar ...
- gradle 打包 jar (一波三折)
第一次尝试,打包成功,运行失败 build.gradle 打包 jar { baseName 'testJar' from { //添加依懒到打包文件 //configurations.compile ...
- gradle引jar包,引工程
gradle引jar包有直接引mvn仓库的,也有引本地的,引本地jar包需要: compile files("xxxxxx.jar")
- gradle打成jar包报错 "错误: 找不到或无法加载主类 App"(已经配置过主类)
文章目录 将gradle打成jar包(包括依赖) 运行jar包 报错 原因(src自己手动创建的) 解决(添加src目录) 将gradle打成jar包(包括依赖) jar { manifest { a ...
- android studio gradle 打jar 包 (混淆+第三方库包)
将依赖的第三方库打包进自己的jar包 1.先将第三方的库包拿到,然后添加jar包到项目的libs. 2.项目的build.gradle脚本添加下面的task: task buildJar(depend ...
- 在Android studio中用gradle打 jar 包(Mac下)
这两天公司要重构项目,以前的项目在eclipse上,准备迁移到Android studio上,需要对项目打包,于是我学习了Android studio中gradle打包的内容.我在公司用的Mac,在家 ...
- Gradle下载 Jar 包
使用此方法下载Jar包的前提是已经配置好了Gradle的环境了,配置好的标志是在终端输入gradle不提示command not found. 1. 编写build.gradle文件代码: apply ...
随机推荐
- ASP.NET身份验证的几种方式
1.windows身份验证 2. Forms验证 3.Passport验证 4.none http://www.jb51.net/article/30510.htm
- 【Eclipse】Tomcat 改变发布路径
关闭服务,删除里面的所有项目,clean,然后双击服务,发布路径修改就可以点击了.当重新发布了项目后,发布路径修改的按钮又会恢复不可点击状态.
- postgres-xc手册生成方法
步骤 检测编译环境 安装编译工具 编译 以上只在linux环境当中进行,本人所用系统ubuntu15.04 检测编译环境 在posgtgresql目录下运行./configure,并安装需要安 ...
- 读书笔记:javascript高级程序设计
> 变量.作用域和内存问题js为弱类型的语言 变量的值和数据类型可以在脚本的生命周期内改变.5种基本类型:string, number, undefined, null, boolean,基本数 ...
- QSplashScreen无法背景透明的解决办法(强制StyleSheet生效)
setWindowFlags(Qt::WindowStaysOnTopHint | Qt::SplashScreen | Qt::FramelessWindowHint); setAttribute( ...
- BZOJ 1499 NOI2005 瑰丽华尔兹 单调队列
题目大意:给定一个m*n的地图,一些点有障碍物,钢琴初始在一个点,每一个时间段能够选择向给定的方向移动一段距离,求最长路径长 朴素DP的话,我们有T个时间段,每一个时间段有m*n个点,n个时间,一定会 ...
- SUSAN检测算子
USAN区域(核同值区):和核像素的灰度相同会相信的模板像素的区域. 利用这个区域的尺寸.重心.二阶矩等可以帮助检测图像的边缘和角点.利用USAN的面积作为特征可以起到增强边缘和角点的效果. 该方法不 ...
- c,const和指针组合的几种意义
const和指针的组合: 注释部分表示非法. ; ; p=&a; //*p = 1 ; ; pp= &a; //*pp = 1; ; //pv=&a; *pv = ; ; // ...
- .net嵌入c#代码(投票练习)
.net嵌入c#代码(投票练习) <%@ Page Language="C#" AutoEventWireup="true" CodeFile=" ...
- CF#231DIV2:A Good Number
Let's call a number k-good if it contains all digits not exceeding k (0, ..., k). You've got a numbe ...