Gradle基础

xiaoxiao2021-02-28  89

根目录的build.gradle

该gradle文件是定义在这个工程下的所有模块的公共属性,它默认包含二个方法:

buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' } } allprojects { repositories { jcenter() } }

Android tasks

assemble 针对每个版本创建一个apk

clean 删除所有的构建任务,包含apk文件

check 执行Lint检查并且能够在Lint检测到错误后停止执行脚本

build 执行assemble和check

BuildConfig和resources

android { buildTypes { debug { buildConfigField "String", "API_URL", "\"http://test.example.com/api\"" buildConfigField "boolean", "LOG_HTTP_CALLS", "true" } release { buildConfigField "String", "API_URL", "\"http://example.com/api\"" buildConfigField "boolean", "LOG_HTTP_CALLS","false" } }

类似这些定义的常量,当定义了这些属性后,你完全可以在代码中使用:BuildConfig.API_URL和BuildConfig.LOG_HTTP

android { buildTypes { debug { resValue "string", "app_name", "Example DEBUG" } release { resValue "string", "app_name", "Example" } } }

你可以在代码中使用这些string。其中“”不是必须得。

Comile & Provided

compile是默认的那个,其含义是包含所有的依赖包,即在APK里,compile的依赖会存在。

apk的意思是apk中存在,但是不会加入编译中,这个貌似用的比较少。

provided的意思是提供编译支持,但是不会写入apk。

testCompile和androidTestCompile会添加额外的library支持针对测试。

构建的生命周期

一旦一个tasks被执行,那么它不会再次执行了,不包含依赖的Tasks总是优先执行,会经历下列三个阶段:

初始化阶段:project实例在这儿创建,如果有多个模块,即有多个build.gradle文件,多个project将会被创建。gradle会寻找到settings.grade文件。如果该文件不存在,那么gradle就会假定你只有一个单独的构建模块。如果你有多个模块,settings.gradle文件定义了这些模块的位置。如果这些子目录包含了其自己的build.gradle文件,gradle将会运行它们,并且将他们合并到构建任务中。

配置阶段:在该阶段,build.gradle脚本将会执行,为每个project创建和配置所有的tasks。

执行阶段:这一阶段,gradle会决定哪一个tasks会被执行,哪一个tasks会被执行完全依赖开始构建时传入的参数和当前所在的文件夹位置有关。

转载请注明原文地址: https://www.6miu.com/read-56254.html

最新回复(0)