gpt4 book ai didi

Android gradle - 如何远程访问 keystore

转载 作者:行者123 更新时间:2023-12-03 06:01:34 24 4
gpt4 key购买 nike

我有一个脚本可以远程获取属性文件。 props 文件中是我的 android 私钥的密码和别名。 props 文件还包含私钥的路径,该私钥也是远程的。这是我到目前为止的脚本:

keystore.properties 文件看起来像这样;

storePassword="pass"
keyPassword="pass"
keyAlias="na"
storeFile="file:////Users/myuserName/Documents/StudioProjects/private-key-vault/mykeystore"

这是实际进行签名的gradle脚本:
def propertiesFileLocation = 'file:///Users/myuserName/Documents/StudioProjects/private-key-vault/props/keystore.properties'
def propFileURL = new URL(propertiesFileLocation);
def propsFile = new File(propFileURL.toURI());

def configName = 'config'

if (propsFile.exists() && android.signingConfigs.hasProperty(configName)) {
def props = new Properties()

props.load(new FileInputStream(propsFile))

println 'The props are:'+ props

android.signingConfigs[configName].storeFile = file(props['storeFile'])
android.signingConfigs[configName].storePassword = props['storePassword']
android.signingConfigs[configName].keyAlias = props['keyAlias']
android.signingConfigs[configName].keyPassword = props['keyPassword']
}
}
}

请注意,我正在打印属性,并且我注意到 keystore 路径不是绝对的。 Gradle 假设 keystore 位于根项目目录中,我似乎无法更改它。这是输出:
The props are:

[storeFile:"file:////Users/myuserName/Documents/StudioProjects/private-key-vault/mykeystore", keyAlias:"na", keyPassword:"pass", storePassword:"pass"]

这很好,直到我运行构建并看到路径现在不是绝对的:

当我运行 ./gradlew assembleFreeRelease我当然收到以下错误:
    :app:validateSigningFreeRelease FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:validateSigningFreeRelease'.
> Keystore file /Users/myuserName/Documents/StudioProjects/myapp/app/"file:/Users/myuserName/Documents/StudioProjects/private-key-vault/mykeystore" not found for signing config 'config'.

注意如何将根项目路径附加到 keystore 路径?所以它找不到它。我怎样才能解决这个问题。

关于我正在尝试做的事情:我想将 keystore 和 keystore 属性远程存储在一个安全区域中,并让 gradle 仅在 VPN 上时在构建时检索它们。

最佳答案

您只需要避开 URI而是将绝对路径直接传递给 File构造函数,然后使用 Gradle 的 File 糖方法 withInputStream加载 Properties

def properties = new Properties()
new File('/Users/myuserName/Documents/StudioProjects/private-key-vault/props', 'keystore.properties').withInputStream {
properties.load(it)
// ... do work with stored properties
}

关于Android gradle - 如何远程访问 keystore ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41338379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com