Mac下VS Code使用sqlite-net-sqlcipher构建.NET8 MAUI iOS模拟器应用失败
解决.NET 8 MAUI + sqlite-net-sqlcipher iOS模拟器构建链接错误
问题分析
从错误日志可以明确:你使用的sqlite-net-sqlcipher版本(1.9.172)提供的e_sqlcipher.a原生库仅针对iOS真机arm64架构编译,但当前构建目标是iOS模拟器(iossimulator-arm64),架构不匹配导致链接失败。
解决步骤
1. 升级sqlite-net-sqlcipher到最新稳定版
旧版本的包可能存在多架构打包缺失问题,优先尝试升级到最新版(如1.9.180及以上):
dotnet add package sqlite-net-sqlcipher --version <最新稳定版本号>
2. 配置项目多架构支持
在MAUI项目的.csproj文件中添加iOS架构适配配置,确保Debug模式下模拟器兼容arm64和x86_64架构:
<PropertyGroup Condition="'$(TargetFramework)' == 'net8.0-ios'"> <RuntimeIdentifiers>iossimulator-arm64;ios-arm64</RuntimeIdentifiers> <MtouchArch Condition="'$(Configuration)' == 'Debug' and '$(RuntimeIdentifier)' == 'iossimulator-arm64'">x86_64,arm64</MtouchArch> </PropertyGroup>
3. 清理缓存并重建项目
执行以下命令彻底清理构建缓存后重新构建:
dotnet clean rm -rf obj bin # 手动删除项目下的obj和bin文件夹 dotnet build -f net8.0-ios -c Debug -r iossimulator-arm64
4. 验证原生库多架构支持
如果升级后仍报错,用lipo命令检查e_sqlcipher.a是否包含模拟器架构:
lipo -info /Users/user1/Desktop/MauiApp1/MauiApp1/obj/Debug/net8.0-ios/iossimulator-arm64/linker-cache/e_sqlcipher.a
- 若输出仅显示
arm64,说明库缺少模拟器架构,需更换包含多架构的包或自行编译支持模拟器的SQLCipher库。
5. 临时切换到x86_64模拟器(Apple Silicon Mac兼容方案)
在Xcode中创建一个x86_64架构的iOS模拟器,然后指定该架构构建:
dotnet build -f net8.0-ios -c Debug -r iossimulator-x64
内容的提问来源于stack exchange,提问作者Bhavanesh N
相关产品推荐
相关产品推荐

