Godot 4.4dev3导出Android游戏时SQLite触发DllNotFoundException问题
问题:Godot 4.4dev3导出Android(arm64-v8a)搭载SQLite时触发DllNotFoundException
现象描述
- 游戏在桌面端可正常运行,但仅针对
arm64-v8a架构导出Android包后,始终触发DllNotFoundException - 两种依赖的具体报错:
- 使用Microsoft.Data.Sqlite:报错
System.DllNotFoundException: e_sqlite3 - 使用SQLitePCLRaw.bundle_e_sqlite3mc:报错
System.DllNotFoundException: e_sqlite3mc
- 使用Microsoft.Data.Sqlite:报错
已尝试的基础操作
- 检查APK内
/libs/arm64-v8a目录是否包含对应.so文件 - 通过
file命令确认.so文件适配arm64-v8a架构 - 尝试用
[DllImport("e_sqlite3")]和dlopen手动加载.so文件 - 手动调用
...Batteries_V2.Init()完成初始化 - 在Android Manifest中添加READ/WRITE权限
- 遍历进程信息发现
{ Name = libsqlite.so, Size = 1343488 },推测为Godot自带文件 - 尝试将
.so文件复制到不同的jniLib目录 - 移除并重新添加所有依赖项
- 多次清理并重建项目
- 检查LogCat未发现异常外的有效信息
额外尝试的方案
- 测试SQLitePCLRaw的所有版本及组合
- 尝试用
SetProvider(...sqlite3)替代默认的e_sqlite3,匹配发现的程序集名称 - 尝试引入SQLite官网提供的SQLite AAR,但Gradle构建持续报错
- 游戏运行时执行
ls命令,确认PCL DLL已存在
内容的提问来源于stack exchange,提问作者Martin Lyne
相关产品推荐
相关产品推荐

