我有一个Xamarin Android应用程序,我试图使用Visual Studio使用的相同签名算法进行签名 .

当我从Visual Studio部署时,我看到它使用“-digestalg SHA1 -sigalg md5withRSA”调用jarsigner . 如果我检查生成的APK(使用keytool),它表示签名算法实际上是SHA256withRSA

当我手动签署APK时,我试图得到相同的结果,但不管我做什么,我总是得到SHA1withRSA . 这是我尝试过的:

-digestalg SHA1 -sigalg md5withRSA(与VS相同),结果:SHA1withRSA

-digestalg SHA1 -sigalg SHA256withRSA,结果:SHA1withRSA

-digestalg SHA-256 -sigalg SHA256withRSA,结果:SHA1withRSA

-digestalg SHA-256 -sigalg md5withRSA,结果:SHA1withRSA

我检查过:

  • 我使用的是与VS相同版本的JDK(1.8.0_131)

  • 参数与VS相同(我实际上从VS构建输出中复制了参数以确保它们是相同的 . )

  • 我使用与VS(我自己的)相同的密钥库

似乎无论我做什么,当我手动运行jarsigner时,我总是得到SHA1withRSA . 我错过了什么?