android - 使用 AS 同步时将运行 gradle 任务
问题描述
我在 app/build.gradle 中创建了一个任务取决于 assembleRelease,就像这段代码一样,FileNotFoundException
当我使用 AS 同步时出现错误
task push(type: Exec, dependsOn: ['assembleRelease']) {
println 'push invoke'
def apkDir = "${project.projectDir.absolutePath}/build/outputs/plugin/release/"
def apkName = ""
fileTree(apkDir).visit { FileVisitDetails details ->
println "${details.name}"
//只取第一个apk
if (apkName.endsWith(".apk")) {
apkName = details.name
details.stopVisiting()
}
}
if (apkName.isEmpty()) throw new FileNotFoundException("apk file not found,please invoke 'assemblePlugin' first")
workingDir project.projectDir
commandLine 'adb', 'push', "${project.projectDir.absolutePath}/build/outputs/plugin/release/{$apkName}", '/sdcard/Demo_plugin_1.apk'
ignoreExitValue true
}
当我同步 gradle 时代码会运行吗?我希望代码在执行时运行gradlew push
我该怎么办
解决方案
尝试对任务的第一部分使用 doFirst{ } 块:
doFirst {
println 'push invoke'
def apkDir = "${project.projectDir.absolutePath}/build/outputs/plugin/release/"
def apkName = ""
fileTree(apkDir).visit { FileVisitDetails details ->
println "${details.name}"
//只取第一个apk
if (apkName.endsWith(".apk")) {
apkName = details.name
details.stopVisiting()
}
}
if (apkName.isEmpty()) throw new FileNotFoundException("apk file not found,please
invoke 'assemblePlugin' first")
}
推荐阅读
- excel - VBA:如何使用 vbProperCase 将第一个字母大写但保持其他所有字母不变?
- django - 当我要从购物车中删除产品时,我没有得到任何回应?
- excel - 对象变量或块变量未设置问题
- asp.net-mvc - 如何在 Visual Studio 2017 或 2019 中断开项目解决方案与 TFS 的连接?
- markdown - 以纯文本形式获取降价电子邮件
- python - 为什么我的自我实例没有在方法中传递
- java - 无法在 Netbeans 8.2 JDK8u231 中创建 Maven 项目(Web 应用程序)
- bash - 在不退出脚本的情况下中断循环(bash)
- mysql - 如何优化 prestashop 类别随机获取产品
- laravel - 我在 laravel 中读取 excel 文件时遇到问题