android - 已安装 GnuPG,但来自 gradle 任务的 "command not found"

标签 android gradle task gnupg

我已经使用 brew (macOS) 和 brew install gnupg gnupg2 安装了 gpg 并且工作正常。我可以使用它或者只是检查 gpg --version 或其他。

MacMini:~ boost$ gpg --version
gpg (GnuPG) 2.1.22
libgcrypt 1.8.0

问题是,当我从 Android Studio 中的 gradle 任务运行它时,它不再工作:不再找到 gpg 命令。

任务是(实际上没什么特别的):

task decryptSigningProperties(type: Exec) {
    commandLine 'gpg', '--passphrase-file', file(project.property("passPhraseFile")), '-o', 'signing.properties', '-d', 'signing.properties.enc'
}

我在 Jenkins 构建日志中收到错误:

  • What went wrong:
    Execution failed for task ':app:decryptSigningProperties'.
    A problem occurred starting process 'command 'gpg''

同时,我可以手动执行,导航到特定目录并运行:

gpg -o signing.properties -d signing.properties.enc

然后,一切正常(它提示我通过并进行解密)。

那么为什么任务中无法识别命令 gpg 但我可以从终端运行?有人对此类问题有经验吗?

最佳答案

这听起来像使用 Gradle 和普通命令行时您的 $PATH 变量不一样。通过运行 which gpg 找出 GnuPG 的安装位置(当您使用 brew 时,可能是 /usr/local/bin/gpg) 。在 Gradle 任务中配置 $PATH 变量以包含 /usr/local/bin (或由 which gpg 确定的任何路径) ,或使用完整的绝对路径调用 GnuPG。

关于android - 已安装 GnuPG,但来自 gradle 任务的 "command not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45415373/

相关文章:

Android工具栏菜单按钮点击事件

android - 无需创建和帐户的 Firebase 电子邮件验证

java - 如何将jar发布到Nexus(快照存储库)?

.net - Threading.Tasks.TaskScheduler - 请帮我解决这个问题

java - 制作接受所有字母和字符选择的正则表达式的正确方法是什么?

Android 位图大小超出 VM 预算错误

android - 使用自定义 XML 标记和数据绑定(bind)的 Gradle 构建不成功

Android - 根据口味更改应用程序版本名称

task - Gulp 更改整个任务的工作目录

parallel-processing - Apache Airflow : run all parallel tasks in single DAG run