12. El análisis de api en gradle (dos)

1. API relacionada con archivos 1. API
relacionada con la adquisición de rutas
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2. Api relacionada con la operación del archivo
1) Ubicación del archivo
Inserte la descripción de la imagen aquí
Dado que hay más de un archivo build.gradle en el proyecto raíz y los subproyectos, cuando se buscan varios archivos a través de archivos, solo se devuelve la ubicación de build.gradle en el proyecto actual, que muestra que archivos El ciclo no involucrará a los subproyectos.
Inserte la descripción de la imagen aquí
2) Copia de archivo

//简单的进行一个文件的拷贝,只需要把路径和文件写清楚即可
copy {
    
    
	//注意这里只能搜索一级目录,二级三级目录是不行的。如果要找下级目录的文件,需要详细路径,比如file('build\\outputs\\apk\\debug\\app-debug.apk')
    from file('commonVersion.gradle')
    //此处定义的是路径,不是具体文件名,就算填入具体文件名,系统也会把具体文件名作为目录新建
    into getRootProject().getBuildDir().path + "\\apk\\"
	//还可以随便把哪个路径下的所有文件都给拷贝走
	from file("src\\")
    into getRootProject().getBuildDir().path + '\\apk\\'
    //src目录下面,'androidTest'和'test'两个目录不拷贝。这里要注意,指定的不拷贝的文件和目录必须要在src目录下,再往下的二三级目录就不行了
    exclude ('androidTest', 'test')
}

copy {
    
    
    def _file = file('build\\outputs\\apk\\debug\\app-debug.apk')
    from _file
    into getRootProject().getBuildDir().path + "\\apk\\"
    //复制某个文件后,对文件重命名,直接在clourser里定义新名字即可
    rename {
    
     "app-debug_pre.apk" }
    //或者指定名字
    //rename("app-debug.apk", "app-debug_pre.apk")
    //rename { String fileName ->
    //    fileName.replace('debug', 'release')
    //}
}

3) Transferencia de archivos

//对文件树进行遍历,每个文件夹以下都构成了一个文件树
fileTree('build\\outputs\\apk') {
    
     FileTree fileTree ->
    fileTree.visit {
    
     FileTreeElement element ->
        println 'the file name is:' + element.file.name
        copy {
    
    
            from element.file
            into getRootProject().getBuildDir().path + '\\test\\'
        }
    }
}

2. Otra API
1. Confíe en la API relacionada
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

2. Ejecución de comandos externos

task apkCopy2(group: 'apk') {
    
    
    doLast {
    
    
        //gradle的执行阶段去执行,不会在配置阶段
        def sourcePath = this.buildDir.path + '\\outputs\\apk\\'
        def resultPath = 'D:\\oliver\\oliver_project\\OliverKotlin\\AndroidProject\\build\\'
        def command = "cp ${sourcePath} ${resultPath}"
        exec {
    
     ExecSpec execSpec ->
            try {
    
    
                executable 'bash'
                args '-c', command
                println 'the command is execute success.'
            } catch (GradleException e) {
    
    
                println 'the command is execute failed.'
            }
        }
    }
}

Autor: Cangshuipu
blog de nube de brujas : http: //blog.csdn.NET/amir_zt/
más original, indique la fuente, gracias.
https://blog.csdn.net/amir_zt/article/details/113887609

Supongo que te gusta

Origin blog.csdn.net/u011635351/article/details/113887609
Recomendado
Clasificación