You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在app/build.gradle的signingConfig中设置含$符号的storePassword

密钥库密码含$符号时的build.gradle签名配置处理方法

当密钥库密码包含$符号(如test$app)时,直接在signingConfig中写入会因为Groovy/Kotlin的字符串插值规则解析错误,需要通过以下方式处理:

Groovy DSL 写法

Groovy中$是变量引用标识,可通过两种方式保留$:

  • 用单引号包裹密码:单引号字符串不会解析变量,$会被当作普通字符
  • 用反斜杠转义$:双引号字符串中,\$会保留$符号

示例代码:

android {
    signingConfigs {
        release {
            storeFile file("your-keystore.jks")
            storePassword 'test$app' // 单引号写法,无需转义
            keyAlias 'your-key-alias'
            keyPassword "test\$app" // 双引号写法,转义$
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            // 其他构建配置
        }
    }
}

Kotlin DSL 写法

Kotlin中同样需要避免$被解析为变量,可选两种方式:

  • 用三引号原始字符串:""" """包裹的字符串不会解析任何转义字符,直接保留$
  • 用反斜杠转义$:普通双引号字符串中,\$表示保留$

示例代码:

android {
    signingConfigs {
        create("release") {
            storeFile = file("your-keystore.jks")
            storePassword = """test$app""" // 原始字符串写法,无需转义
            keyAlias = "your-key-alias"
            keyPassword = "test\$app" // 转义$写法
        }
    }

    buildTypes {
        release {
            signingConfig = signingConfigs.getByName("release")
            // 其他构建配置
        }
    }
}

核心原理

Groovy和Kotlin的字符串解析逻辑中,$用于标识变量插值(如"Hello $name"会把name变量值插入字符串)。直接写入带$的密码会导致$后的内容被当作变量名,最终解析出错误的密码。上述方法通过改变字符串解析规则,让$作为普通字符保留在密码中。

内容的提问来源于stack exchange,提问作者sejn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:33:12