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=密码
posted @ 2026-06-16 18:14  LuoCore  阅读(30)  评论(0)    收藏  举报