gradle中常用的命令
./gradle tasks --all 显示项目中所有的构建任务,也显示每个任务的依赖
./gradle anDep 每个配置的依赖树
./gradle -b app.gradle 使用非默认的构建文件名
./gradlew androidDependencies 查看android依赖
./gradlew -P(配置属性)=xxx assembleDebug 使用-P标志运行gradle
./gradlew tasks 所有的task
./gradlew build -x lint 排除任务
./gradlew -q hello 日志信息 -i -d -q -s -S 输出堆栈信息
./gradlew --refresh-dependencies 强制刷新
./gradlew projects 所有的project
project相关的api
getAllprojects() 获取所有的project的,0是根project
getSubprojects()获取当前工程下的所有子project
getParent() 获取当前工程的父project
getRootProject() 获取根节点project
project(string path,Closure configureClosure) 获取project
allProject{} //配置所有project
subprojects{}不包括当前节点工程,只包括它的subproject
文件相关操作api
getRootDir() 获取根工程路径
getBuildDir()获取build路径
getProjectDir()获取project路径
file()从当前目录下获取文件
files()定位一个或多个文件
------------------------------------------------------------------------------------
配置的方法
/**
* 配置阶段开始前的监听回调
*/
beforeEvaluate {}
/**
* 配置阶段完成以后的回调
*/
afterEvaluate {}
/**
* gradle执行完毕后的回调监听
*/
gradle.buildFinished {}
--------------------------------------------------------------------------------------
copy的使用
copy{
from
into
exclude//拷贝文件夹时用于排除文件
rename //重命名
}
对文件树进行遍历
fileTree(dir){
it.visit {
FileTreeElement element ->
element.name
}
}
通过task执行外部命令
task(name:'apkCopy'){
def sourcePath = this.buildDir.path + '/outputs/apk'
def descPath = 'Users/用户/Downloads'
def command = "mv -f ${sourcePath} ${descPath}" //执行的命
exec {
try {
executable 'bash'
atgs '-c',command
}catch (GradleException e){
}
}
}
task的执行顺序
task taskY{
doLast{
println 'taskY'
}
}
task taskZ{
mustRunAfter taskY //强制在taskY执行后再执行
doLast{
println 'taskZ'
}
}
每个类型变体
afterEvaluate {
this.android.applicationVariants.all{
variant->
def name = variant.name
def baseName = variant.baseName
def file = variant.outputs.first().outputFile //输出的apk
def checkTask = variant.checkManifest
}
}