Gradle在Android中简单的使用

还望支持个人博客站:http://www.enjoytoday.cn

Android Studio 使用gradle进行工程构建,为了更好的了解整个android开发过程(开发,调试,发布),就需要对gradle有一个初步的了解,至少需要知道他的每一个配置所代表的意思,更深层次的了解就要看个人兴趣了。

  • Gradle简述
  • android工程中的gradle
  • 常见的gradle配置
  • Gradle学习参考

Gradle简述

其实有关gradle的介绍网上有很多的相关资料了,简单来说它就是一个构建java工程的工具,帮助我们管理编译java工程。高大上点就是他们自己在GitHub上说的那样,是个很牛逼的面对jvm的编译系统(A powerful build system for the JVM.)。gradle的特点有很多,比较重要需要了解的有如下三个特点(不全面,只是概括):

1)是一个构建整合工具
就是可以直接与其他构建系统进行切换
2)支持多工程构建
这也是他的特色,我们在Android Studio中可以很明显的看看到在新建选项中有两个很不一样的新建方式,一种是New Project,这种方式会帮你真的建立一种gradle工程,而新建的gradle工程中会在工程一级目录下默认创建一个app的文件夹子(即我们配置的android项目),而New Module则是基于一个已有的gradle的工程下创建一个android 工程,同样也是默认在工程的一级目录下创建,同时我们的Project下的settings.gradle中会添加一个include工程。
 include  'app' , 'source';

如上,settings.gradle就 是多工程配置文件,通过include 来引入子工程,默认子工程位置是在当前Project的主目录下,若不再默认位置,需要在settings.gradle中指定子工程文件位置,如:

include 'app'
project(':app').projectDir = new File('../app')
3)gradle是采用groovy脚本语言实现配置的而非xml
groovy是一种基于jvm的脚本语言,面向对象,可以很好的帮助我们维护构建项目,最直观的例子,多版本发布可以直接通过简短的几句脚本配置语句完成。

Android工程中的gradle

1、Project 中的gradle

- gradlew

linux或者mac的编译脚本,可以通过./gradlew build编译当前project

- gradlew.bat

windows下的编译脚本

- gradle.properties

gradle的属性配置文件,一般情况不需要我们配置什么信息,保持默认即可

- build.gradle

gradle的编译脚本,每个工程子工程中都会存在,是编译配置的主要文件

- settings.gradle

多项目导入的配置文件,可以在这儿将你的所有的子过程导入

2、Module中的gradle

  • build.gradle

    module中只需要一个build.gradle即可,用于配置工程的结构,依赖管理,签名信息,sdk编译版本,包名信息,发布渠道或版本控制等。

常见的gradle配置

介绍build.gradle中一些常见配置信息的含义和使用简单的一些配置帮助我们完成一些预期的效果。

buildscript {
repositories {
//依赖支持jcenter仓库获取
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
} //当前的project的所有子模块,即settings.gradle中所有项目
subprojects{
//共有配置
} //当前project中所有项目均
allprojects {
repositories {
jcenter()
}
}
//clean 任务可以帮助我们删除编译生成的build目录
task clean(type: Delete) {
delete rootProject.buildDir
}

如上,Android Studioi默认是采用jcenter()仓库来获取gradle依赖,jcenter是一种远程的maven依赖库,我们也可以将自己的项目上传jcenter,这样就可以直接在添加jcenter库后通过依赖配置远程依赖编译我们的工程,如高德,百度,facebook等均提供jcenter库依赖方式。同时,除了maven仓库,gradle还支持Ivy仓库,可通过如下方式添加:

//添加仓库,一般在我们导入aar时会用到
repositories {
flatDir {
//编译时会在libs目录下查找依赖
dirs 'libs'
}
}

android 项目中常用的build.gradle如下:


//插件声明,这个也可以自定义
apply plugin: 'com.android.application' //基本的android 配置
android {
compileSdkVersion 23 //编译的sdk版本
buildToolsVersion "23.0.3" //编译工具的版本 //android的默认配置信息
defaultConfig {
//报名信息,可以没有,若没有会默认从manifest.xml中读取包名
applicationId "com.hfcai.liferecord"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
//发布版
release {
//dex分包属性
minifyEnabled false
//混淆设置
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} //测试版
debug{ //配置信息
}
} //apk签名配置
signingConfigs {
//测试版本
release {
//签名文件路径
storeFile file('../keystore/personal.jks')
//签名文件的密码
storePassword 'personal'
//用户名
keyAlias 'personal'
//用户名的密码
keyPassword 'personal'
}
} //修改生成的apk名字
applicationVariants.all { variant ->
variant.outputs.each { output ->
//定义无类型属性
def oldFile = output.outputFile
if (variant.buildType.name.equals('release')) {
def releaseApkName = 'test.apk'
output.outputFile = new File(oldFile.parent, releaseApkName)
}
if (variant.buildType.name.equals('debug')) { }
output.assemble.doLast {
//文件拷贝操作
copy {
from output.outputFile.getAbsolutePath()
into('../Personal/out/apks/')
}
}
}
} } //添加Ivy仓库,查找libs下的依赖
repositories {
flatDir {
dirs 'libs'
}
} //android 的依赖管理配置
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
//Ivy依赖
compile(name: 'AudienceNetwork', ext: 'aar')
}

以上,为android工程编译的一些基本配置,还有类似多渠道打包,新建task任务等。如将依赖包打入jar:

//新建task,编译jar包
task makeJar(type: Jar){
delete 'build/libs/test.jar'
new File('libs').eachFile {
from zipTree(it)
}
from fileTree(dir:'src/main',includes: ['java/**'])
destinationDir = file('build/libs/test.jar') } makeJar.dependsOn(build)

可以通过命令 ./gradlew makJar直接执行或者在android studio 右边框的gradle对应工程的Task–>other–makeJar双击执行,执行后会在build/libs下生成一个test.jar文件。

Gradle学习参考


Gradle在Android中的简单使用的更多相关文章

  1. Gradle在Android中的基本使用

    1.基本概念 程序开发作为一种工程作业,不光是编写代码,还涉及到工程的各种管理(依赖,打包,部署,发布,各种渠道的差异管理.....).很多时候,我们反复的build,clean,签名,打包,发布,那 ...

  2. MVP架构在xamarin android中的简单使用

    好几个月没写文章了,使用xamarin android也快接近两年,还有一个月职业生涯就到两个年了,从刚出来啥也不会了,到现在回头看这个项目,真jb操蛋(真辛苦了实施的人了,无数次吐槽怎么这么丑),怪 ...

  3. android中实现简单的聊天功能

    这个例子只是简单的实现了单机版的聊天功能,自己跟自己聊,啦啦~~ 主要还是展示RecyclerView控件的使用吧~ 参考我之前写的文章: android中RecyclerView控件的使用 andr ...

  4. EventBus在Android中的简单使用

    EventBus是一个方便与Android中各组件通信的开源框架,开源地址;https://github.com/greenrobot/EventBus.EventBus功能非常强大 ,今天在做一个功 ...

  5. Groovy与Gradle在Android中的应用

    大家都知道, Android Studio 的编译构建,是基于Gradle的, 而Gradle又是基于Groovy, Groovy又是基于Java的 Android Studio 的gradle 本身 ...

  6. android 中Log - 简单使用

    例如,我们可以使用'Log.d'进行Debug,在java代码中输入Log.d(String tag, String message),tag为自己命名的tag,message为待输出的信息.然后打开 ...

  7. android中的简单animation(四)3D transition

    animation_main_screen.xml: <?xml version="1.0" encoding="utf-8"?> <Fram ...

  8. android中的简单animation(三)accelerate(加速),decelerate(减速),anticipate,overshoot,bounce

    animation_3.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

  9. android中的简单animation(二)push up,push left,cross fade,hyperspace

    animation_2.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

随机推荐

  1. Go-for循环

    一.第一种情况(死循环) package main import "fmt" func main() { for{ fmt.Println("fuck") } ...

  2. SimpleDateFormat类简单学习

    一.简介 SimpleDateFormat是一个格式化和解析日期的具体类,其可以将时间转化为指定格式的日期字符串,也可以将具有格式的日期字符串转换为时间. formatting (date → tex ...

  3. JS基础语法---(数据)简单类型和复杂类型

    原始数据类型: number, string, boolean, undefined, null, object 基本类型(简单类型), 即值类型: number, string, boolean 复 ...

  4. Dynamics CRM - js中用webapi基于fetchxml查询遇到的问题 -- Invalid URI: The Uri scheme is too long.

    最近用WebApi做基于Fetchxml的查询的时候,遇到一个很蛋疼的报错:Invalid URI: The Uri scheme is too long. 检查了整个URL,也没发现有什么问题. - ...

  5. [iOS开发]关于cocoapods的使用

    CocoaPods的使用 关于CocoaPods,相信做iOS开发的应该都比较熟悉了.Cocoapods是一个用来管理第三方库的比较好用的管理工具.关于Cocoapods的东西不再多说,接下来进入正题 ...

  6. The PostgreSQL installation in windows

    Summary: in this tutorial, we will show you how to install PostgreSQL on your local system for learn ...

  7. https连接

        在发送连接之前设置显示握手过程:   System.setProperty("javax.net.debug", "all"); DubboServer ...

  8. Redis之高可用、集群、云平台搭建(非原创)

    文章大纲 一.基础知识学习二.Redis常见的几种架构及优缺点总结三.Redis之Redis Sentinel(哨兵)实战四.Redis之Redis Cluster(分布式集群)实战五.Java之Je ...

  9. 30-学容器必须懂 bridge 网络

    Docker 安装时会创建一个 命名为 docker0 的 linux bridge.如果不指定--network,创建的容器默认都会挂到 docker0 上. apt-get install bri ...

  10. sakura设置桌面壁纸

    下下载steam上的Wallpaper Engine 先将sakura.html下载为html文件. 再从文件打开 就保存了 再加载保存,就一直是了