android - gradle任务将在使用AS同步时运行

标签 android gradle

我在app / build.gradle中创建了一个像这样的代码的依赖项assembleRelease,当我使用AS同步时收到FileNotFoundException错误

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")
}

关于android - gradle任务将在使用AS同步时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56966727/

相关文章:

android - 如何在应用程序快捷方式图标上实现事件监听器?

Android Studio - 终止进程重新启动应用程序?

java - outOfMemoryError while gradle build

gradle - gradle 构建脚本应该如何模块化此应用程序?

gradle - gradle如何解释在父级别运行的命令

android button setPressed after onClick

android - 为什么我在使用 adb 时拒绝访问数据文件夹?

android - 如何在同一行中为本地和仪表化测试添加build.gradle依赖关系?

javascript - 找不到com.android.tools.build:graddle-链接返回404

android - 为什么 SQLiteDatabase 的 getMaximumSize() 方法返回 1 TB?