Apache Cordova - 无法生成 v1 签名

Lig*_*ard 2 android gradle cordova phonegap

Cordova 8.1.1 (cordova-lib@8.1.0)
Android 7.1.1
OSX 10.13.6
Run Code Online (Sandbox Code Playgroud)

以下 Cordova 版本构建命令出错。我们做错了什么?

$ cordova build --release android

BUILD FAILED in 5s
46 actionable tasks: 2 executed, 44 up-to-date
/Users/xxx/QS/platforms/android/gradlew: Command failed with exit code 1 Error output:
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:packageRelease'.
> Failed to generate v1 signature
Run Code Online (Sandbox Code Playgroud)


构建文件

  {
    "android": {
      "release": {
        "keystore": "/Users/xxx/QS/platforms/android/appreleasedemo.keystore",
        "storePassword": "password",
        "alias": "appreleasedemoalias",
        "password" : "password"
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

密钥库存在:

$ keytool -keystore /Users/xxx/QS/platforms/android/appreleasedemo.keystore -list

Keystore type: jks
Keystore provider: SUN

Your keystore contains 1 entry

appreleasedemoalias, Oct 1, 2018, PrivateKeyEntry, 
Certificate fingerprint (SHA1): FC:63:EC:88:0A:A2:ED:B4:7A:34:C1:76:F9:98:F5:E0:8D:85:7A:4F
Run Code Online (Sandbox Code Playgroud)

小智 8

我发现我可以通过使用以下命令行来构建新的密钥文件来解决此问题,如https://developer.android.com/studio/publish/app-signing.html 所述

keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias

具体来说,我认为问题在于默认值在某个时候已从 RSA 更改为 DSA,并且这些工具无法与大型 DSA 密钥一起正常工作。