MAUI .NET 8 Android端无法加载sqlite3 DLL问题求助
解决MAUI .NET 8 Android端SQLite加载DLL异常问题
问题根源
Mono.Data.Sqlite 是适配传统Mono环境的旧包,在MAUI .NET 8的Android运行时中无法正确提供sqlite3原生库文件,导致加载失败;iOS端因环境对旧包兼容性更好,所以未出现异常。
修复步骤
1. 移除旧依赖包
打开项目的.csproj文件,删除以下引用:
<PackageReference Include="Mono.Data.Sqlite" Version="1.0.61" />
2. 添加MAUI兼容的SQLite包
在.csproj中添加适配.NET 8的SQLite相关依赖:
<PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.0" /> <PackageReference Include="SQLitePCLRaw.bundle_green" Version="2.1.8" />
注:版本号可根据NuGet上的最新稳定版调整
3. 替换数据库连接代码
将原Mono.Data.Sqlite的API替换为Microsoft.Data.Sqlite的对应实现,示例:
原代码:
using Mono.Data.Sqlite; var conn = new SqliteConnection("Data Source=your_db_name.db");
替换后:
using Microsoft.Data.Sqlite; var conn = new SqliteConnection("Data Source=your_db_name.db");
4. 清理重建项目
- 执行清理解决方案(Build -> Clean Solution)
- 执行重建解决方案(Build -> Rebuild Solution)
- 重新部署到Android设备/模拟器测试
额外排查点
如果问题仍存在,可检查:
- 确认数据库文件路径是否正确,MAUI中获取应用私有存储路径可使用:
string dbPath = Path.Combine(FileSystem.AppDataDirectory, "your_db_name.db"); - 对于Android 13及以下版本,若数据库存储在外部存储,需在
AndroidManifest.xml中添加对应权限(私有目录无需额外权限)
内容的提问来源于stack exchange,提问作者Anitha v
相关产品推荐
相关产品推荐

