0

我想在 Gadle 完成构建我的应用程序时收到通知,

请注意,除了 Android Studio 中使用的常用语句外,我对 Gradle 不是很熟悉,但我很高兴我能学到一些东西。

到目前为止,我见过的最好的方法似乎是使用announcebuild-announcements插件,正如在这个链接中所述。不幸的是,它通常适用于 Gradle,我看不出如何使其适应 Android Studio 的构建系统。顺便说一句,我在 Windows 上并安装了 Snarl,但不知道如何使其与 Android Studio 一起使用。

与教程中一样,我将这两个插件都应用到了我的 app/build.gradle。

我首先尝试从这个 SO question调整代码。由于没有关于它的真实信息,我将这些行写在 gradle 文件的根目录中。

assembleRelease.doLast {
    announce.local.send "Gradle Info Task", 'Running'
    println gradle.gradleVersion
    announce.announce("helloWorld completed!", "local")
}

然而,Gradle 甚至不会同步,抛出这个错误:

无法为 org.gradle.api.Project 类型的项目“:myApplication”获取未知属性“assembleRelease”。

然后,我尝试创建一个类似其他 SO 问题的任务:

task notification() {
        announce.local.send "Gradle Info Task", 'Running'
        println gradle.gradleVersion
        announce.announce("helloWorld completed!", "local")
}
build.finalizedBy(notification) //

这不会引发任何错误,但不会显示任何通知。

为什么我的尝试失败了?我怎样才能实现我的目标?

如果可能的话,非常欢迎有关我应该如何自己搜索以找到此信息的信息。

4

3 回答 3

0

实现所需的最简单方法:

在 Android Studio 中,进入Preferences > Appearance & Behavior > Notifications,进入 Gradle Build (Logging) 并选中朗读框。

当您的构建完成时,这将说明 Gradle 构建在 x 分钟和 x 秒内完成。

于 2018-12-05T08:50:14.830 回答
0

您是否考虑过使用声音进行通知?

您可以将其添加到标签app/.gradle内的文件中:android{ }

afterEvaluate {
    gradle.buildFinished{ BuildResult buildResult ->
        if (buildResult.failure) {
            ['powershell', """(New-Object Media.SoundPlayer "C:\\failed_notif.wav").PlaySync();"""].execute()
            println("failed doing task")
        } else {
            ['powershell', """(New-Object Media.SoundPlayer "C:\\succeed_notif.wav").PlaySync();"""].execute()
            println("build finished")
        }
    }
}

如果您希望通知仅在特定 buildType 完成后运行(仅成功构建),您可以使用:

afterEvaluate {
   assembleDebug.doLast{ //play sound for debug buildType }
   assembleRelease.doLast{ //play sound for release buildType }
}

请注意,此方法只能与.wav文件一起运行。如果你想使用 an.mp3你可以试试这个

于 2021-09-23T05:16:19.367 回答
0

您需要添加插件公告构建公告。支持以下目的地:Twitternotify-send (Ubuntu)、Snarl (Windows)、Growl (macOS)。这些是所需的插件:

rootProject {
    apply plugin: "announce"
    apply plugin: 'build-announcements'
}

并完成构建过程(请参阅支持的通知服务):

// it finalizes :assemble
task finalizeBuild {
    doLast {
        println(":finalizeBuild > doLast")
        announce.announce("task :assemble completed!", "snarl")
    }
}

tasks.whenTaskAdded { task ->
    if (task.name == "assembleDebug") {
        task.finalizedBy finalizeBuild
    } else if (task.name == "assembleRelease") {
        task.finalizedBy finalizeBuild
    }
}
于 2018-11-10T17:57:30.093 回答