由于需要将assets目录的资源拷贝到设备sdcard中,然而我的工程是一个android test工程,而android test工程在编译阶段,不会把assets目录的资源打包成对应apk,而为了在编译过程中就能将所需要的资源拷贝进去,且方便业务方使用,思考过后,只有自定义task任务才能解决这一问题。
task copyResource(type: Exec){ def srcDir = "${rootProject.rootDir}/app/src/main/assets" def destDir = "/sdcard/" println("cpoy $srcDir to $destDir") commandLine "adb", "push", "$srcDir", "$destDir" } project.tasks.getByName("assembleAndroidTest").dependsOn "copyResource"
groovy脚本虽然不复杂,但是中间遇到一个坑,就是我在root节点的build.gradle中增加这段代码,却提示root.project没有assembleAndroidTest任务,于是增加一段代码,将app下面的build.gradle跟root下的build.gradle同时增加信息
project.afterEvaluate { for (t in project.tasks) { println "task=="+t.getName() } }
终于明白,自定义task需要加在app下的build.gradle中。于是问题顺利解决。虽然还是不明白,在root路径下的setting.gradle中已经增加了include ':app'