Android技术知识Gradle构建Android开发经验谈

Gradle-操作文件&文件拷贝

2018-07-27  本文已影响13人  未见哥哥

# 任务

# 操作文件相关 API

下面列举一下 Project 中关于操作文件相关的 API 。

方法名 作用
project.getBuildDir(); 获取module的build文件夹所在路径的File对象
File getRootDir(); 获取根module所在路径的的File对象
File getBuildFile(); 获取当前module对应的build.gradle文件对象
File file(Object path); 根据指定的path路径获取对应的文件对象
ConfigurableFileCollection files(Object... paths); 获取包含文件的ConfigurableFileCollection对象
ConfigurableFileTree fileTree(Object baseDir, Closure configureClosure); 将指定路径下所有的文件封装成一个文件数
... ...

# 代码演示

下面的代码块,打印了相关的 api 的调用 和输出对应输出的值。

println project.rootDir// /Users/zeal/dev/as_code/GradleDemo
println project.getBuildFile()// /Users/zeal/dev/as_code/GradleDemo/build.gradle
println project.getBuildDir()// /Users/zeal/dev/as_code/GradleDemo/build
println file("app/build.gradle").getText()
ConfigurableFileCollection configurableFileCollection = files("settings.gradle", "app/build.gradle")

//遍历每一个文件
configurableFileCollection.files.each {
    File file ->
        println file.text
}
fileTree("app/build/outputs/apk") { ConfigurableFileTree configurableFileTree ->
    //遍历
    configurableFileTree.visit { FileVisitDetails fileVisitDetails ->
        //在这里操作文件...
        println "the file's name is ${fileVisitDetails.name}"
    }
}

# 练习-文件拷贝

方法名 作用
WorkResult copy(Closure closure); 拷贝

在实际开发过程中,如果我们想要在APK打包完毕之后将APK文件拷贝到文件系统某一个位置中,就可以使用到这个copy方法来实现。

copy() {
    //闭包参数
    CopySpec copySpec ->
        //from 是一个方法,指定拷贝的源文件/文件夹>file("app/build/output/apk") 是方法的参数
        from file("app/build/outputs/apk")
        //into 是一个方法:指定拷贝的目的地>拷贝到根工程的output目录下
        into "${rootDir}/output"
        //重命名拷贝的文件名字
        rename {
            String srcFileName ->
                "${srcFileName}-haha.apk"
        }
        //移除不需要拷贝的内容 不拷贝 .json 结尾的文件
        exclude '**/*.json'       
}

记录于 2018-07-27 下午

上一篇下一篇

猜你喜欢

热点阅读