密钥库格式无效 - 在 Azure DevOps 构建管道中签署 Android APK

Invalid Keystore Format - Signing Android APK in Azure DevOps build pipeline

我有一个 Xamarin Android 应用程序,我想生成一个签名的 APK 以使用 Azure DevOps 构建管道。

现在,我收到 a java.io.IOException: Invalid keystore format

我使用以下命令从命令行生成了密钥库文件:

keytool.exe -genkeypair -v -keystore myAppName.keystore -alias myAppNamekey -keyalg RSA -keysize 2048 -validity 10000

此密钥库适用于我的本地设备。

我还尝试将默认 debug.keystore 文件添加到 azure 管道,并且成功运行。

我在 Azure DevOps 的 "Signing and Aligning" 部分下将密钥添加到我的(已经工作)CI 构建管道。

当它到达这个部分时,我收到以下错误:

Failed to load signer "signer #1" java.io.IOException: Invalid keystore format [error]Error: The process 'C:\Program Files (x86)\Android\android-sdk\build-tools.0.3\apksigner.bat' failed with exit code 2

我想我找到了解决办法。但我改变了两件事,所以它可能是这些东西之一。

  1. 我有一个 '!'在我的密钥库密码中。我删除了它,因为我看到他们在哪里有特殊字符的问题。 (这可能不是修复它的更改,但我想添加它只是为了确定)
  2. 我re-generated一键用jdk1.8.0_13版本。这是我使用的 keytool 的路径 "C:\Program Files (x86)\Java\jdk1.8.0_131\jre\bin\keytool.exe"

在执行这两件事时,签名任务成功了。希望这对您有所帮助!

这是我的问题 - DevOps 在此文件夹中找到 JDK:

C:\Program Files\Eclipse Foundation\jdk-8.0.302.8-热点\

当我使用标准 JDK 创建我的密钥库文件时(然后我尝试打开 JDK)。

一旦我使用 DevOps 找到的 JDK 创建密钥库,它就起作用了。

我怎么知道它在找哪个 JDK? Xamarin.Android构建任务写出w