GitHub Actions中.NET MAUI Android构建失败:jarsigner.exe退出代码1
.NET MAUI Android应用GitHub Actions构建签名时jarsigner.exe报错问题
问题概述
尝试通过GitHub Actions构建并签名.NET MAUI Android应用,本地构建完全正常,GitHub Actions工作流在签名阶段前的步骤运行顺畅,但构建时遭遇jarsigner.exe相关错误。
错误详情
错误信息如下:
C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\33.0.68\tools\Xamarin.Android.Common.targets(2335,2): error MSB6006: "jarsigner.exe" exited with code 1. [D:\a\App.name\App.name\App.name\App.name.csproj::TargetFramework=net7.0-android]
工作流相关片段:
- name: Setup Java uses: actions/setup-java@v3 with: distribution: 'microsoft' java-version: '17' - name: Build run: dotnet build App.name/App.name.csproj -c Release -f net7.0-android /p:AndroidSigningKeyPass=${{ secrets.KEYSTORE_PASSWORD }} /p:AndroidSigningStorePass=${{ secrets.KEYSTORE_PASSWORD_STORE }} --no-restore
补充信息
- keystore文件已正确解密并在GitHub Secrets中可用
- 使用Microsoft发行版的Java 17
- 依赖还原、MAUI工作负载安装等前置步骤均无问题
原因分析及解决建议
常见触发原因
- 签名参数缺失:仅指定了
AndroidSigningKeyPass和AndroidSigningStorePass,但缺少AndroidSigningKeyAlias(密钥别名)和AndroidSigningStoreFile(keystore文件路径)两个核心参数,jarsigner无法完成签名流程,直接退出。 - keystore路径错误:即使文件已解密,若构建命令中指定的
AndroidSigningStoreFile路径与实际存放位置不匹配,jarsigner找不到文件就会报错。 - Java版本兼容性:部分旧版本Android SDK工具与Java 17存在适配问题,这类场景下Java 11通常更稳定。
- 密码不匹配:可能存在
KEYSTORE_PASSWORD与KEYSTORE_PASSWORD_STORE混淆,或者密钥别名密码和存储密码不一致的情况。
对应解决操作
- 补充完整签名参数:在
dotnet build命令中添加/p:AndroidSigningKeyAlias=你的密钥别名和/p:AndroidSigningStoreFile=keystore文件的绝对/相对路径。 - 验证文件路径:在Build步骤前添加
dir(Windows环境)或ls(Linux环境)命令,确认解密后的keystore文件存在于指定路径。 - 切换Java版本:将Setup Java步骤的
java-version改为11,测试兼容性。 - 核对密码正确性:在本地用相同的keystore文件和密码测试签名流程,排除密码错误的可能。
是否需要分享完整yaml文件?是的,完整工作流文件能帮助排查keystore解密步骤、环境变量配置等细节问题。
内容的提问来源于stack exchange,提问作者AllramEst
相关产品推荐
相关产品推荐

