Xamarin UI测试异常排查:手动安装APK测试时jarsigner别名参数错误
解决Xamarin UI测试中jarsigner别名参数导致的启动异常
问题回顾
你已经在Android模拟器上手动安装了目标APK,想要执行Xamarin UI测试且不允许重新安装应用,配置了AppInitializer.cs但运行测试时遇到了jarsigner的异常:
System.Exception : Failed to execute: C:\Program Files\Android\jdk\microsoft_dist_openjdk_1.8.0.25\bin\jarsigner.exe -sigalg SHA1withRSA -digestalg SHA1 -signedjar "C:\Users\user\AppData\Local\Temp\uitest\a-287A94...D0807\23248\SignedTestServer.apk" -storepass passw -keypass passw -keystore "C:\...\Certificate\Mycompany.keystore" "C:\Users\user\AppData\Local\Temp\uitest\a-287A...D0807\TestServer.apk" ""alias"" - exit code: 1 Only one alias can be specified Please type jarsigner -help for usage
问题原因
仔细看你的KeyStore方法参数,你给别名加了额外的双引号:"\"alias\""。这会导致jarsigner命令里的别名变成""alias""(双重引号包裹),工具无法正确识别这个参数,误以为你传入了多个无效的别名,从而抛出错误。
解决方案
只需要去掉别名参数的额外双引号,直接传入别名的字符串即可。修改后的AppInitializer.cs配置代码如下:
string keyStore = @"C:\...\Certificate\Mycompany.keystore"; return ConfigureApp .Android .InstalledApp("com.myapk.test") .PreferIdeSettings() .KeyStore(keyStore, "passw", "passw", "alias") // 这里去掉了别名的额外引号 .EnableLocalScreenshots() .StartApp();
额外检查项
- 确保你的keystore路径、存储密码、密钥密码都是正确的
- 确认
alias确实是你keystore中存在的有效别名,可以通过keytool -list -v -keystore "C:\...\Certificate\Mycompany.keystore"命令验证
这样修改后,jarsigner就能正确识别别名参数,顺利签名TestServer.apk,你的Xamarin UI测试应该就能正常启动了。
内容的提问来源于stack exchange,提问作者Сергей
相关产品推荐
相关产品推荐

