.NET MAUI应用APK安装后崩溃,调试模式运行正常
解决.NET MAUI签名APK启动崩溃(程序集未找到)的问题
核心问题
打包签名APK时,assemblies目录下的.NET程序集被压缩,导致Android运行时无法加载这些文件;而调试模式下默认不会压缩这些程序集,所以能正常运行。
修复步骤
1. 修改项目csproj配置
打开你的MAUI项目的.csproj文件,添加以下配置,强制让assemblies目录下的文件以**STORED(未压缩)**状态打包:
<PropertyGroup> <!-- 禁止压缩assemblies目录文件,同时启用V2签名 --> <AndroidApkSignerAdditionalArgs>--compress none --v2-signing-enabled true</AndroidApkSignerAdditionalArgs> </PropertyGroup> <ItemGroup> <!-- 标记assemblies下所有程序集为不压缩 --> <AndroidAsset Include="assemblies\*" /> <AndroidAsset Update="assemblies\*" Compress="false" /> </ItemGroup>
如果文件里已有<PropertyGroup>或<ItemGroup>节点,直接把对应内容插入到已有节点中即可,不用重复创建。
2. 清理缓存并重新打包
- 关闭Visual Studio,删除项目目录下的
bin和obj文件夹,彻底清除旧构建缓存 - 重新打开项目,切换到Release配置,重新生成签名APK
- 先卸载设备上已装的旧版本应用,再安装新生成的APK
3. 验证配置是否生效(可选)
可以用zipinfo工具检查APK内文件状态:
- 把APK后缀改成
.zip,或者直接执行命令:zipinfo 你的应用文件名.apk assemblies/*.dll - 查看输出里每个dll的状态,显示
STORED就说明配置生效了
额外提醒
- 一定要用Release配置打包签名APK,Debug配置虽然不会压缩程序集,但不能用于正式测试
- 如果你用了第三方NuGet包,上述配置会统一处理
assemblies目录下的所有文件,无需单独配置每个包
内容的提问来源于stack exchange,提问作者porado5146
相关产品推荐
相关产品推荐

