栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

gradle复制文件到你的build文件夹下

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

gradle复制文件到你的build文件夹下

接到需求是,复制一个apk到build文件夹的assets文件夹下,我们都知道当我们点击clean的时候,build文件夹就会被清理,而且build文件夹下的assets文件夹并不存在,这个里面会根据application和library不同assets文件夹也会不同,具体看如下分析

application下,build文件夹的assets文件夹名称叫做 merged_assets
library下,build文件夹的assets文件夹名称叫做library_assets
全路径是在build/intermediates下的merged_assets或library_assets

好了,接下来我们需要想,怎么样才能在创建build文件夹之后再执行任务来做复制呢?
根据这篇文章即可

操作task

这里我贴出两种写法,第一种是在application下

// application,注意,要放到你的app下的build.gradle文件里面的android{}下
    android.applicationVariants.all { variant ->
        variant.outputs.each { variantOutput ->
            println("applicationVariants.name=----------------${variant.name}")
            println("applicationVariants.description=----------------${variant.description}")
            println("applicationVariants.mergeAssets=----------------${variant.mergeAssets}")
            println("applicationVariants.name----------------${variant.mergeAssets.name}")

            variant.mergeAssets.doLast {
                println("applicationVariants doLast")
                def fromFile = rootProject.file("plugindemo1").path + "\src\main\assets\plugindemo1-debug.apk"
                println("applicationVariants fromFile = " + fromFile)
                def intoFile = rootProject.file("app").path + "\build\intermediates\merged_assets\debug\out\"
                println("applicationVariants targetFile = " + intoFile)
                def targetFile = new File(intoFile)
                if(!targetFile.exists()) {
                    targetFile.mkdirs()
                }
                copy {
                    from fromFile
                    into intoFile
                    rename("plugindemo1-debug.apk","plugin.apk")
                    println("applicationVariants copy success")
                }
            }

        }
    }

第二种写到library下就是

// 也是放到你的library下的build.gradle下的android{}里面
    android.libraryVariants.all { variant ->
        variant.outputs.each { variantOutput ->
            def tag = "DL applicationVariants"
            println("${tag}.name=----------------${variant.name}")
            println("${tag}.description=----------------${variant.description}")
            println("${tag}.mergeAssets=----------------${variant.mergeAssets}")
            println("${tag}.name----------------${variant.mergeAssets.name}")

            variant.mergeAssets.doLast {
                println("applicationVariants doLast ${rootProject.path}")
                def fromFile = rootProject.file("plugindemo1").path + "\src\main\assets\plugindemo1-debug.apk"
                println("${tag} fromFile = " + fromFile)
                def intoFile = rootProject.file("DL").path + "\build\intermediates\library_assets\debug\out\"
                println("${tag} targetFile = " + intoFile)
                def targetFile = new File(intoFile)
                if(!targetFile.exists()) {
                    targetFile.mkdirs()
                }
                copy {
                    from fromFile
                    into intoFile
                    rename("plugindemo1-debug.apk","plugin.apk")
                    println("${tag} copy success")
                }
            }

        }
    }
// gradle执行linux命令
task('deletejustDir') {
    doLast {
        def path = this.rootProject.projectDir.path + '/justDir'
        def command = "rm -r ${path}"
        println("command:" + command)
        exec {
            try {
                executable 'bash'
                args '-c', command
                println("the command is execute success")
            } catch (GradleException e) {
                println("the command is execute failed")
            }

        }
    }
}

参考文档
复制文件
task调用另外一个task
使用tasks.xxxxxxxx.execute()即可
gradle复制图片
gradle基础

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459742.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号