分析Android项目中各个gradle文件,简单Groovy语法、实例
来源:互联网 发布:mac usb 以太网转接器 编辑:程序博客网 时间:2024/05/22 06:46
分析Android项目中各个gradle文件,简单Groovy语法、实例
一、每个项目的编译至少有一个build.gradle,每个build.gradle里面包含多个task,一个task里面又可以包含很多action,action是一个代码块,里面包含了需要执行的代码。
二、在编译过程中,Gradle会根据build相关文件,聚合所有project的task,执行task的中的action。因为一个build.gradle中的task非常多,所以里面的task的执行顺序一种叫依赖逻辑来保证,几乎所有的task都需要依赖其他的task来执行。所以最后所有的task会构成一个有向无环图 的数据结构。
三、Gradle的编译过程分为三个阶段:
1、初始化阶段:创建project,每个project会对应有一个build.gradle。
2、配置阶段:创建每个build.gradle中的task任务。
3、执行阶段:gradle根据传入的参数决定如何执行这些task,此时task中action代码将执行。
四、一个android项目,gradle文件结构
1、setting.gardle:
(1)一个项目只有一个setting.gradle文件
(2)setting.gradle文件中,包含:顶层的build.gradle文件(如:’:app’) ; 以及项目中model对应的gradle文件(定义哪些modle应该被加入编译过程中)。
(3)这个文件的代码在编译阶段就会被执行。
2、顶层build.gradle文件:
顶层build.gradle文件将会被应用到项目的所有model中。
它的典型模型如下:
分析一下这个文件:
(1)buildscript:定义来android编译工具的类路径。
(2)repositories:它其中的jcenter()方法是一个著名的Maven仓库。
(3)allprojects:它里面定义的属性会被所有的Model应用到。
3、每个Model里面的app build.gradle
在这里可以自定义每个Model文件
如果这个文件与顶层build.gradle文件中部分定义相同,顶层的build.gradle文件这部分属性将会被覆盖。
典型app的build.gradle文件
对该文件进行分析:
apply plugin:应用了android应用程序的gradle插件,这一步是必须的,因为plugin中提供了android所有task的编译、测试、打包。
android:android的所有特殊配置都在这里。
defaultConfig:程序的默认配置,如果该处与AndroidManifest.xml里面有相同属性时,就以这个为主。
applicationId:当前程序id,在AndroidManifest.xml中也有声明包名,在那里声明的包名有两个作用:
(1)作为程序的唯一标示id,防止一个手机安装两个相同的程序。
(2)作为R资源文件的包名。修改AndroidManifest.xml资源文件的包名,将会导致所有的R资源、id类都要修改。而如果在这里修改包名的话,只会改掉当前程序id,不会改变R资源文件的路径。
buildTypes:定义了编译类型,默认有debug、release版本。
dependencies:gradle的依赖配置。定义了当前Model依赖的其它库。
五、Gradle Wrapper
它的作用:因为Gradle不断的更新,新的版本要向后兼容的时候就应用到它。
六、Gradle:
android studio在执行build,rebuild,clean时,实质都时在一些执行gradletask
Android task 有四种基本的task,android继承它们分别进行了自己的实现:
(1)、assemble:对所有的buildType生成apk。
(2)、clean:移除所有的编译输出文件,比如apk。
(3)、check:执行lint检测编译
(4):build:同时执行assemble和check命令。
命令:./gradle tasks 列出所有task。
七、dependency
1、project下的dependency
使用私有仓库:
使用本地仓库:
2、Model下的dependency
组成:组名:库名:版本号
+表示依赖库始终保持最新状态
八、 Groovy语法
def name = ‘abc’
def get =”b=”abc,$name!” 可引入插件
list取值:
List list = [1,2,3,4]
遍历:
list.each(){
printlnelement
}
map使用:
Mappiz = [mar:10,pep:12]
取值:piz[‘mar’]
九、Task篇
1、新建task,打印helloworld;
在app的build.gradle文件中写入:
task hello{
println‘hello world’
}
然后在terminal命令行中输入:./gradlew hello
2、task中action执行顺序:
B dependsOn A:A执行完后B才执行。
暂时写到这里,后续会更新更好的实例。
- 分析Android项目中各个gradle文件,简单Groovy语法、实例
- android项目中各个文件的介绍
- android各个文件分析
- android中build.gradle文件简单说明
- Android Studio Gradle 实例 task用法 Groovy string特性
- Android中涉及到的Groovy语法
- Android中各个版本Gradle Distributions下载
- Android Gradle学习记录3 Groovy处理文件
- Android项目各个文件简介
- gradle学习系列之eclipse中简单构建android项目
- Android:Groovy基础语法
- gradle学习(12)-groovy一些基础语法
- gradle 知识(2) -- groovy语法
- Android Studio Gradle项目中添加JNI so文件
- Groovy(二):Gradle for Android
- Android Gradle:build.gradle文件的基本语法解析.
- Android项目中使用Gradle
- Gradle build.gradle样例文件 Groovy语法 注解
- FL2440—基于platform 模型的DS18B20驱动实例
- 京东右侧栏
- 深度学习框架caffe 各层参数解析
- MIME详解
- 把有依赖包的ec项目导入as中遇见的问题一
- 分析Android项目中各个gradle文件,简单Groovy语法、实例
- tcp在TIME_WAIT状态下等待2MSL
- Volley的使用
- 响应轮播图
- Android中检查自动更新使用Service,其中包含了Service的使用然后还包含了几个自定义的dialog
- 树的镜像
- linux命令总结
- Java进阶(一)Java内存解析
- 求最大回文子串问题