学习Android Studio里的Gradle
一直听说Gradle很强大,只是偶尔用Android Studio创建Demo的时候看到他一次,今天抽个时间完整记录一下。
1.gradle位置
Android Studio项目创建好之后,默认有3个gradle文件,分别位于:
- /settings.gradle
- /build.gradle
- /app/build.gradle
2.gradle内容
- settings.gradle 默认只有一行代码,即:
include ':app'
新创建的项目只有app一个子项目。如果在project里添加了子项目(Module),按理需要在settings.gradle里添加相应子项目名称,如:
include ':app', ':androidlibrary'
提示:当你添加一个Module后,最新版的Android Studio会自动在settings.gradle里配置好,Amazing。
- 根目录的build.gradle 就比较丰富了,默认有三个“节点”,buildscript、allprojects和task clean。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
}
} allprojects {
repositories {
jcenter()
}
} task clean(type: Delete) {
delete rootProject.buildDir
}
buildscript下的第一个子“节点”是声明仓库源,默认是jcenter,之前版本则是mavenCentral,也可以两个center共存。jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。第二个子“节点”是声明Android gradle plugin的版本,Android Studio 1.5版默认是gradle 1.3。
allprojects下是声明了所有project默认的仓库源。
task clean声明了一个任务,任务名叫clean(也可以改为其它),任务类型是Delete(也可以是Copy),就是每当修改settings.gradle文件后点击同步,就会删除rootProject.buildDir下的文件(实际上我看到的效果是清除了External Libraries里的包,然后又添加了一次)。
- app/build.gradle 就是默认android子项目的gradle文件了,也是三个小节点:apply、android和dependencies。
apply plugin: 'com.android.application' android {
compileSdkVersion 15
buildToolsVersion '19.1.0'
defaultConfig {
applicationId "com.nait.picassodemo"
minSdkVersion 4
targetSdkVersion 15
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
} dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.okhttp:okhttp:2.5.0'
compile 'com.umeng.analytics:analytics:5.6.1'
testCompile 'junit:junit:4.12'
}
appley节点:apply plugin: 'com.android.application'
以上语句中的apply是一个方法,给它传递了一个参数plugin,plugin 的值是'com.android.application'。如果有多个参数,则以逗号隔开,例如:compile name: 'volley', ext: 'aar'。
android节点:前面部分很好理解,从字面意思就能了解。buildTypes默认是release(也可以添加debug),minifyEnabled表示是否需要混淆,proguardFiles 表示混淆配置文件的名称。productFlavors表示多渠道包(以后深入学习后再写)。
dependencies节点:com.开头的部分是Demo项目中添加的引用包,规则是namesapce:package name:version,其它两行是项目创建后默认添加的。
参考文档:
http://www.cnblogs.com/youxilua/archive/2013/05/22/3092657.html
http://www.blogjava.net/wldandan/archive/2012/07/12/382792.html
http://www.android100.org/html/201502/16/119379.html
学习Android Studio里的Gradle的更多相关文章
- 关于Android Studio里的Gradle,你所需要知道的都在这里了
Gradle介绍 Gradle是一个先进的build toolkit,可以方便的管理依赖包和定义自己的build逻辑.到底有多先进,Android Studio官方集成Gradle,Google还专门 ...
- [转]Android Studio 里搭建自动化测试框架Robotium
Android的自动化测试框架可选择的不多,后来选了Robotium(https://code.google.com/p/robotium/),它的语法及易用性挺像我们用在iOS里的KIF. 官方文档 ...
- 拥抱 Android Studio 之五:Gradle 插件开发
实践出真知 笔者有位朋友,每次新学一门语言,都会用来写一个贪吃蛇游戏,以此来检验自己学习的成果.笔者也有类似体会.所谓纸上得来终觉浅,绝知此事要躬行.这一章,笔者将以开发和发布一个 Gradle 插件 ...
- android studio学习----Android Studio导入github下载的工程--替换方法
http://www.cnblogs.com/liuling/p/2015-9-16-01.html 这种方法是可行的,主要是先自己创建一个project ,然后把没有的文件夹都复制过去就OK了,特别 ...
- Android Studio之回退Gradle版本方法
Android Studio之回退Gradle版本方法 (Minimum supported Gradle version is 4.10.1. Current version is 4.6.) ...
- Android : Android Studio 更新至gradle 4.10.1后Variants API变化
同步警告: WARNING: API 'variantOutput.getPackageApplication()' is obsolete and has been replaced with 'v ...
- 第四章:重构代码[学习Android Studio汉化教程]
第四章 Refactoring Code The solutions you develop in Android Studio will not always follow a straight p ...
- 【已解决】Android Studio下,gradle project sync failed 错误
原文:[已解决]Android Studio下,gradle project sync failed 错误 Android studio下突然报错 gradle project sync failed ...
- 如何用Android Studio查看build.gradle源码
上一篇博客里讲过 build.gradle 里的每一行代码基本都是在调用一个方法,既然是这样,我们就可以用 android studio(下面简称as) 去查看它源码的方法注释说明,这样就可以理解每个 ...
随机推荐
- python类型学习
python类型学习 标准类型 数字 Integer 整型 Boolean 布尔型 Long integer 长整型 Floating point real numer 浮点型 Complex nu ...
- peda的官方文档说明
peda在github上的官方文档,摘抄过来,方便查阅. 安装 git clone https://github.com/longld/peda.git ~/peda echo "sourc ...
- sql server2014 企业版 百度云下载
sql server2014 企业版 百度云下载 链接: https://pan.baidu.com/s/1j7a6RWwpvSzG-sF7Dnexfw 提取码: 关注公众号[GitHubCN]回复获 ...
- Redis数据类型之Set(四)
前言:set类似于数学上面的集合概念,包含的元素无序,不能重复,能进行交.并.差操作. 一.内部原理 set数据结构,也是随着元素数目的多少而变化.当set中添加 ...
- centos7 关闭默认firewalld,开启iptables
编者按: 对于使用了centos6系列系统N年的运维来说,在使用centos7的时候难免会遇到各种不适应.比如防火墙问题.本文主要记录怎么关闭默认的firewalld防火墙,重新启用iptables. ...
- LoadRunner参数化时的中文乱码问题
http://blog.sina.com.cn/s/blog_6cf205160100mdxi.html
- bzoj 1264 [AHOI2006]基因匹配Match dp + 树状数组
思路:好难想啊, 考虑到应该从每个数字只有5个数字下手, 但是不知道到底该怎么写.. 首先我们将第一个串按数字的种类分类, 每一类里面有5个, 然后将第二个串里面的数字一个一个加,如果一个加入的第 i ...
- hdoj1102 Constructing Roads(Prime || Kruskal)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1102 题意 有n个村庄(编号1~n),给出n个村庄之间的距离,开始时n个村庄之间已经有了q条路,现在需 ...
- 安卓逆向之基于Xposed-ZjDroid脱壳
http://bbs.pediy.com/thread-218798.htm 前言 之前介绍了普通常见的反编译模式 但对于使用了 360加固 棒棒 爱加密 等等的加固应用就没办法了. 你会发现 ...
- 《Android源码设计模式》--单例模式
No1: 懒汉单例模式优缺点分析 public class Singleton{ private static Singleton instance; private Singleton(){} pu ...