Android Studio项目包含了一个顶级的构建文件和适用于每个模块的构建文件。在项目路径下有个 build.gradle,这些都是纯文本文件,使用了Groovy语法结合了Android plugin for Gradle提供的标签来配置项目的构建。

每个项目至少有一个project,一个build.gradle就代表一个project,每个project可以包含很多个task,task中包含多个action,action是一个代码块,里面包含需要执行的代码。

一个简单的build.gradle文件

apply plugin: 'com.android.application'android {compileSdkVersion 23 buildToolsVersion "23.0.1"defaultConfig {minSdkVersion 14targetSdkVersion 23versionCode 1versionName "1.1.1.0"}buildTypes {release {minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
}dependencies {compile project(":lib")compile 'com.android.support:appcompat-v7:19.0.1'compile fileTree(dir: 'libs', include: ['*.jar'])
}

apply plugin 构建版本,
普通的安卓应用程序的时候

apply plugin: 'com.android.application'

作为安卓modle形式

apply plugin: 'com.android.library'

java项目

 apply plugin: 'java'

Android 最大的一个task

compileSdkVersion 23  //SDK的版本号
buildToolsVersion "23.0.1" //构建工具的版本,其中包括了打包工具aapt、dx等等

defaultConfig默认配置,注意,如果在AndroidMainfest.xml里面定义了与这里相同的属性,会以gradle的为主。
applicationId的选项:在AndroidManifest.xml中,那里定义的包名有两个用途:一个是作为程序的唯一识别ID,防止在同一手机装两个一样的程序;另一个就是作为我们R资源类的包名。修改Manifest这个ID会导致所有用引用R资源类的地方都要修改。但是如果修改gradle中的applicationId只会修改当前程序的ID,而不会去修改源码中资源文件的引用。

buildTypes: 编译类型,针对每个类型可以有不同的编译配置,不同的编译配置对应的有不同的编译命令。默认的有debug、release 的类型。

dependencies:是属于gradle 的依赖配置。它定义了当前项目需要依赖的其他库。

Android task块

有四个基本的 task:

assemble: 对所有的 buildType 生成 apk 包。

clean : 移除所有的编译输出文件,output路径下的文件都被清空

check : 执行lint检测编译。

build : 同时执行assemble和check命令

在实际项目中会根据不同的配置,会对这些task 设置不同的依赖。
比如 默认的 assmeble 会依赖 assembleDebug 和assembleRelease

如果直接执行assmeble,最后会编译debug,和release 的所有版本出来。
如果我们只需要编译debug 版本,我们可以运行assembleDebug。
除此之外还有一些常用的新增的其他命令,比如 install命令,会将编译后的apk 安装到连接的设备。
还有其他的一些命令,比如 check命令会生成lint-results.html.在build/outputs中。

BuildConfig

最常用的用法就是通过BuildConfig.DEBUG来判断当前的版本是否是debug版本

    buildTypes {release {minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'signingConfig signingConfigs.config}proguard {minifyEnabled trueproguardFile getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'signingConfig signingConfigs.config}debug {minifyEnabled falsesigningConfig signingConfigs.config}}

上面定义3中buildTypes ,可以设置proguard 为混淆,但是输出日志,这种是为了测试将要上线版本功能,并且可以查看到日志;release包就是发布的正式包了,日志关闭,且混淆代码;debug包就是平时开发用的包,打包时间快,没有混淆,有日志。
功能非常强大,我们可以通过在这里设置一些key-value对,这些key-value 对在不同编译类型的 apk 下的值不同,比如我们可以为debug ,proguard 和release 环境定义不同的服务器

minifyEnabled 设置混淆是否开启

dependencies 依赖

  dependencies {compile fileTree(dir: 'libs', includes: ['*.jar'])compile project(':honjane-library')betaCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'}

引用库,有几种形式:
1、引用本地jar,aar包
2、引用module project
3、引用远程仓库文件,每个库名称包含三个元素:组名:库名称:版本号

Repositories

代码仓库,dependency 就是从这里下载的,Gradle 支持三种类型的仓库:Maven,Ivy和一些静态文件或者文件夹
gradle 支持多种 Maven 仓库,一般是用共有的jCenter就可以了。

 repositories {jcenter()maven{//公司私有的仓库中url "http://172.30.11.100/maven/tool" credentials{//如果有密码username ‘honjane’password ‘111111’}}flatDir{//相对路径配置本地仓库,我们可以通过配置项目中存在的静态文件夹作为本地仓库dirs ‘aars’}}

Android task中除了上面这些 ,剩下的就是写Options,Options是一些执行代码块,后面文章介绍

Gradle基础介绍相关推荐

  1. 【转】Android Studio安装配置学习教程指南 Gradle基础--不错

    原文网址:http://www.linuxidc.com/Linux/2015-02/113890p4.htm 其实很早之前也写了一篇Gradle的基础博客,但是时间很久了,现在Gradle已经更新了 ...

  2. Gradle基础:4:Task的使用方式

    Task是Gradle的基础单元,这篇文章总结和整理一下关于task的常见的使用方式. 常见的属性和方法 在前面的例子中,我们已经使用task的description属性进行设定gradle task ...

  3. Gradle 笔记_1 - Gradle 基础

    Gradle 笔记_1 - Gradle 基础 <Gradle for Android 中文版>笔记 理解 Gradle 基础 Gradle 构建的脚本–build.gradle Grad ...

  4. day23:shell基础介绍 alias及重定向

    2019独角兽企业重金招聘Python工程师标准>>> 1.shell基础介绍: shell是一个命令解释器,用于用户与机器的交互: 也支持特定的语法(逻辑判断,循环): 每个用户都 ...

  5. Android NDK开发之 NEON基础介绍

    原文:http://blog.csdn.net/app_12062011/article/details/50434259 Android NDK开发之 NEON基础介绍 这是官方介绍: http:/ ...

  6. python介绍和用途-Python基础介绍(一)

    Python基础介绍(一) 1. python是什么编程语言 编译型与解释型 ​编译器吧源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以极其语言来运行此程序,速度很快 ...

  7. STL体系结构与内核分析-2-STL体系结构基础介绍(侯捷)--笔记

    STL体系结构与内核分析(侯捷) 2.STL体系结构基础介绍 STL设计方式与OO(面向对象)不同的地方,OO鼓励数据和处理数据的方法都放在类里,而STL的数据在容器里,操作数据的方法在其他部件里(模 ...

  8. ai一个线段多个箭头_初学设计却分不清PS和AI?超详细的AI基础介绍包你一看即会!...

    以前提到AI,第一个想到的就是人工智能.自从扎进设计的神坑,再提到AI,我可只认软件了~ 包括小ke在内的很多设计小伙伴在最开始入行的时候都认为,只要学好PS就可以稳打设计圈了~毕竟那么多公号一提到设 ...

  9. 深度学习与计算机视觉系列(1)_基础介绍

    转载自: 深度学习与计算机视觉系列(1)_基础介绍 - 龙心尘 - 博客频道 - CSDN.NET http://blog.csdn.net/longxinchen_ml/article/detail ...

  10. 【学习笔记】Tableau基础介绍

    Tableau基础介绍 [简介] Tableau是一家提供商业智能的软件公司,正式成立于2004年,总部位于美国华盛顿西雅图. 源自美国国防部的一个项目需求,在斯坦福博士克里斯·斯图尔特和Pixar创 ...

最新文章

  1. web安全编程——权限的分配和控制
  2. 使用Golang时遇到的一些坑
  3. PAT_B_1006 换个格式输出整数
  4. Linux xsync分发脚本完整内容
  5. 51单片机(STC89C52RC) lcd1602实验小结
  6. boost库编译安装以及Qt导入
  7. 分布式事务之TCC服务设计和实现注意事项!
  8. 深度学习这么调参训练_聊一聊深度学习中的调参技巧?
  9. testng执行参数_初识TestNG测试框架
  10. 苹果CMSv10自适应短视频原创挖片网高端手机+电脑模板
  11. 奇迹按键精灵挂机脚本_奇迹挂机捡物按键精灵源码
  12. 学习编译原理的总结1
  13. 邮箱不能发送大附件,什么邮箱可以发送超大附件?
  14. 做好里程碑就是项目成功了一半
  15. win7电脑提升开机速度方法
  16. 小伙利用C++打造QQ登录器,成功获得称赞
  17. 利用js快速完成大学生新生安全教育课程
  18. javascript join()
  19. 华为手机居然还能这样提高续航?简单设置一下,一天一充很轻松
  20. 22.Odoo产品分析 (三) – 人力资源板块(3) – 休假管理(1)

热门文章

  1. 武汉理工计算机专考研专业课,2017武汉理工大学考研计算机专业课真题
  2. 快速突破面试算法之排序篇
  3. ubuntu18重启vncserver_Windows 10 远程连接 Ubuntu 18.04 Server图形界面
  4. 单结晶体管的导电特性_【硬见小百科】二极管基础知识分类,应用,特性,原理,参数(二)...
  5. svg动画导致持续占用CPU
  6. LightOj 1088 - Points in Segments (二分枚举)
  7. 微信公众号开发中的用户账号绑定
  8. JDK中的SPI和Spring中的SPI
  9. MyBatis源码阅读(一) --- 源码阅读环境搭建
  10. SpringBoot整合RabbitMQ之Topic Exchange通配符交换机(学习总结)