VS 2026 打包 Android APK 翻车记:从 -124 到成功安装
# Android APK 安装失败 -124 解决全记录
> 环境:Visual Studio 2026 + .NET Android (net10.0-android)
> 设备:Android 11+(API 30+)
> 错误码:`INSTALL_PARSE_FAILED_BAD_MANIFEST` / `-124`
---
## 问题现象
通过 Visual Studio 打包生成 APK 后,使用 `adb install` 安装到设备时报错:
adb: failed to install app.apk: Failure [-124: Failed parse during installPackageLI:
Targeting R+ (version 30 and above) requires the resources.arsc of installed APKs
to be stored uncompressed and aligned on a 4-byte boundary]
---
## 原因分析
这是 **Visual Studio 2026(18.x 系列)的一个已知 Bug**。
VS 在通过 Archive → Distribute 流程打包 APK 时,错误地对 `resources.arsc` 文件进行了压缩(Deflate),而 Android 11(API 30)及以上版本强制要求:
- `resources.arsc` 必须以**未压缩(Store)**方式存储
- 必须按 **4 字节边界对齐**
正常情况下 Android Studio / Gradle 会在打包时自动处理 `zipalign` 和签名,但 VS 的打包流程存在缺陷。
> 微软官方已确认此问题,但截至目前最新版本仍未修复。
> 参考:[VS Developer Community 问题报告](https://developercommunity.visualstudio.com/t/Android-APK-install-fails-with--124-reso/11092830)
---
## 解决方案
### 方案一:使用 dotnet publish 命令行打包(推荐)
绕过 VS 的 Archive 流程,直接在终端执行:
```bash
cd /d 你的项目目录
dotnet publish -c Release ^
-p:AndroidKeyStore=true ^
-p:AndroidSigningKeyStore="你的keystore路径" ^
-p:AndroidSigningKeyAlias=你的别名 ^
-p:AndroidSigningStorePass=你的密码 ^
-p:AndroidSigningKeyPass=你的密码
打包完成后,APK 位于:
bin\Release\net10.0-android\publish\
注意: 使用
dotnet publish打包后,resources.arsc会正确地保持未压缩状态,不会出现 -124 错误。
方案二:手动对齐 + 签名
如果已经有一个打包好但未对齐的 APK,可以手动修复:
步骤 1:zipalign 对齐
# zipalign 一般在 SDK 的 build-tools 目录下
"C:\Users\用户名\AppData\Local\Android\Sdk\build-tools\版本号\zipalign.exe" ^
-p -f 4 input.apk aligned.apk
步骤 2:apksigner 签名
"C:\Users\用户名\AppData\Local\Android\Sdk\build-tools\版本号\apksigner.bat" ^
sign ^
--ks "你的keystore路径" ^
--ks-key-alias 别名 ^
--ks-pass pass:密码 ^
--key-pass pass:密码 ^
--out signed.apk ^
aligned.apk
步骤 3:安装
adb install -r signed.apk
重要: 必须先 zipalign 再签名,顺序不能反。签名后再对齐会导致签名失效。
完整操作流程(一键复制)
Step 1:确认设备连接
adb devices
Step 2:打包
cd /d 项目根目录
dotnet publish -c Release -p:AndroidKeyStore=true -p:AndroidSigningKeyStore="keystore路径" -p:AndroidSigningKeyAlias=别名 -p:AndroidSigningStorePass=密码 -p:AndroidSigningKeyPass=密码
Step 3:查找生成的 APK
dir /s /b *.apk
Step 4:安装到设备
adb install -r "完整APK路径"
踩坑记录
坑 1:APK 路径找不到
打包时没有指定完整路径导致 No such file or directory:
# 错误:当前目录下没有这个文件
adb install -r app.apk
# 正确:使用完整路径
adb install -r "D:\项目路径\bin\Release\net10.0-android\publish\app.apk"
坑 2:dotnet publish 后 APK 未签名
部分情况下 dotnet publish 生成的 APK 没有正确签名,安装时会报:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
解决: 用 apksigner 手动签名(见方案二步骤 2),或者确保命令行中正确传递了签名参数。
常用辅助命令
| 用途 | 命令 |
|---|---|
| 查看已连接设备 | adb devices |
| 搜索所有 APK | dir /s /b *.apk |
| 查看 Keystore 信息 | keytool -list -keystore "keystore路径" |
| 卸载应用 | adb uninstall com.example.app |
| 无线连接设备 | adb connect IP地址:端口 |
| 安装 APK | adb install -r "APK完整路径" |
总结
| 方案 | 操作难度 | 推荐度 | 说明 |
|---|---|---|---|
| dotnet publish 命令行 | 低 | 最推荐 | 绕过 VS Bug,一步到位 |
| 手动 zipalign + apksigner | 中 | 备选 | 适合已有未对齐 APK 的情况 |
| 降级 VS 到 18.5.2 | 低 | 最后手段 | 版本回退,可能影响其他功能 |
核心要点: 问题根源在 VS 打包流程的 Bug,不是代码问题。使用命令行打包是最简单可靠的解决方式。
环境信息:Visual Studio 2026 (18.x) | .NET 10 | Android SDK 36
MAUI 安卓打包
dotnet publish -c Release -f net10.0-android -p:AndroidKeyStore=true -p:AndroidSigningKeyStore="C:\Users\用户名\AppData\Local\Xamarin\Mono for Android\Keystore\rcominfo\Rcominfo.keystore" -p:AndroidSigningKeyAlias=别名 -p:AndroidSigningStorePass=密码 -p:AndroidSigningKeyPass=密码

浙公网安备 33010602011771号