3.文件
Gradle中的文件操作和java中的文件操作是可以互相混用的。也就是说
在Gradle中可以直接使用java中的文件操作。
下面介绍几种Gradle中文件使用方式:
1.文件创建以及获取方式
方式1:file
def file1 = file('release.xml')
def file2 = file('release.xml',PathValidation.FILE)
file2使用的第二个参数是校验文件使用:
有以下几个校验方式:
public enum PathValidation {
NONE(), EXISTS(), FILE(), DIRECTORY()
}
默认使用的是NONE:
EXISTS(), FILE(), DIRECTORY():表示如果不满足当前条件会报对应的异常
EXISTS:文件是否存在FILE:是否是文件DIRECTORY:是否是文件夹
方式2:files
ConfigurableFileCollection files(Object... paths);
//获取一个文件集合,返回类型ConfigurableFileCollection
def _files = files('release.xml','release2.xml')
方式3:fileTree
获取一个文件夹下面的所有的文件
def files = fileTree(dir: 'libs',includes: ['*.jar']){
excludes = ['a*.jar','b*.jar']
builtBy = ['task1','task2']
}
也可以使用fileTree来对文件进行遍历
方式4:zipTree
FileTree zipTree(Object zipPath);
获取zip文件下面的所有文件
2.文件路径设置及获取
getRootDir:获取根路径
setBuildDir:设置编译路径
getBuildDir:获取编译路径
getProjectDir:获取当前Project的路径
3.文件拷贝
copy {
from file('release.xml')
into getRootProject().getBuildDir().path+'/test/'
}
4.文件遍历
普通文件夹遍历
fileTree('build/outputs/apk/'){ FileTree fileTree ->
fileTree.visit { FileTreeElement element ->
copy {
from element.file
into getRootProject().getBuildDir().path+'/test/'
}
}
}
zip/tar压缩文件遍历
FileTree ziptr = zipTree('release1.zip')
FileTree ziptr = tarTree('release1.zip')
然后用FileTree的visit方法进行遍历
5.文件写入和读出
使用java文件的InputStream和OutputStream就可以了,这个大家都很熟悉了
文件Api就讲到这里,下面来看下属性api这块
4.属性Api
属性分类:
- 1.在
gradle.properties中设置的全局属性
org.gradle.jvmargs =-Dfile.encoding=UTF-8
android.useAndroidX=true
android.enableJetifier=true
isLoadTest=true
GRADLE_USER_HOME = '../../user'
这里面包括系统属性和开发者自定义的属性,工程全局都可以访问
其他地方使用访问方式:
- 2.在rootProject中设置的
root项目属性:一般用于统一全局版本信息使用
ext {
mCompileSdk = 31
versionName = '1.0.2'
versionCode = 2
versionInfo = 'App的第2个版本,更新了一些基础核心功能'
}
注意: 其他地方需要使用:则最好加上rootProject.ext.xxProperty
- 3.当前Project中的属性:
包括自定义的属性或者Project自带的属性:
如:
this.project.gradle:当前Gradle
this.project.tasks:当前工程的TaskContainer
this.project.task1:获取当前Project中的task1任务
-
4.当前Project定义的ext属性
一般用于当前Project使用的ext属性
-
5.
Extension扩展属性
Extension 扩展是插件为外部构建脚本提供的配置项,用于支持外部自定义插件,我们项目中给的android{}
其实就是Android Gradle Plugin给我们提供的Extension 扩展,插件内部可以获取这个扩展属性,然后执行对应流程
ReleaseInfo {
versionCode = 1
versionName = '1.0.0'
versionInfo = "12345566版本发布"
fileName = "releaseinfo.xml"
}
这里的ReleaseInfo是笔者自定义插件中的一个Extension扩展,插件中的Task可以使用这个Extension获取到用户提供的属性。
属性访问方式:
hasProperty('key'):是否包含该属性
findProperty('key');找属性,没有找到返回null
property('key'):找属性,没有找到返回
MissingPropertyException异常
getProperties():获取当前Project的所有属性
setProperty('key','value');设置属性
一般我们访问属性:直接使用key访问
如:
定义:GRADLE_USER_HOME = '../../user' =>等价:project.setProperty('GRADLE_USER_HOME','../../user')
访问:GRADLE_USER_HOME =>等价于:project.getProperty('GRADLE_USER_HOME')
定义:project.name = 'pp1' =>等价:project.setProperty('name','pp1')
访问:name =>等价于:project.getProperty('name')
关于自定义插件这块内容,后面会单独出一期文章
总结:
今天这篇文章主要是对Gradle中我们比较常用给的一些api进行了讲解。
主要包括Project相关api,Task相关api,文件相关api和属性相关api等,其实还有一些其他的比如外部命令的api,这些很少会用到,就不再讲解了.
可以结合这篇文章,自己再去看源码和相关官网文档,会让自己对api的认识更加深刻。
后面会持续推出Gradle的一些高级语法,如自定义插件,优秀开源框架插件的解读以及AGP的解析;
好了,本文就讲解到这里了。
-
project
+关注
关注
0文章
35浏览量
13296 -
gradle
+关注
关注
0文章
26浏览量
712
发布评论请先 登录
相关推荐
Gradle版本目录功能的简单应用
gradle安装与配置unity
Android Studio与Gradle深入
请问OpenHarmony鸿蒙demo gradle报错怎么解决?
快速入门Gradle的方法
Gradle入门知识之Gradle详解
Gradle入门知识之Gradle详解(下)
Gradle入门知识之Gradle语法1
Gradle入门知识之Gradle语法2
Gradle入门知识之Gradle api解析(上)
Gradle自定义插件介绍2
Gradle Plugin和AGP的区别1

Gradle入门知识之Gradle api解析(下)
评论