Android 导出上的 Godot SQLite 数据库

Posted

技术标签:

【中文标题】Android 导出上的 Godot SQLite 数据库【英文标题】:Godot SQLite Database on Android Export 【发布时间】:2021-10-07 23:20:33 【问题描述】:

我在将项目导出到 android 时遇到问题。

我的res://中有以下文件和文件夹

res://addons/godot-sqlite/
res://dataStore/database.db
res://dataStore/database.sqbpro
res://globalenv/globalfunctions.gd
res://globalenv/globalvar.gd
res://scenes/

我在 Android 导出中导出本地数据库时遇到了一些问题,例如,我的代码中有以下变量:

const SQLite = preload("res://addons/godot-sqlite/bin/gdsqlite.gdns")
var db # database object
var db_name = "res://dataStore/database.db" # database path

我已将 database.db 的路径更改为

var db_name = "user://database.db"

然后我将database.db复制到我的

C:\Users\Username\AppData\Roaming\Godot\app_userdata\project-name

在 Godot 的“播放项目”按钮中,数据库工作正常,但是当我将项目导出到 Android 时,将database.db 添加到资源中的非资源过滤器并安装了.apk,登录不起作用.

filter to export non-resources files

有什么想法吗?

谢谢大家!

【问题讨论】:

【参考方案1】:

使用通配符添加导出,例如*.db有一个问题 - 我相信仍然存在 - 如果没有通配符,此选项将不起作用。

这应该使*.db 文件在其res:// 路径中可用。这是只读的。

由于只读对数据库不利,请将其复制到user:// 路径。您可以使用Directory 类的对象来检查它是否已经存在,如果不存在则从res:// 复制到user://

然后继续使用user:// 路径中的数据库。

【讨论】:

我将 database.db 复制到 C:\Users\Username\AppData\Roaming\Godot\app_userdata\project-name 并将 *.db 添加到导出中,但它仍然不读取数据库。我错过了什么? 我也应该将所有 Godot SQLite 插件复制到 user:// 路径吗? @gabe "C:\Users\Username\AppData\Roaming\Godot\app_userdata\project-name" 在你的电脑里,不是吗? - 你不想要安卓吗?我不是在告诉您手动将数据库复制到 PC 的用户路径。我告诉你编写代码,使用 Directory 类将数据库从 res 路径复制到 Android 的用户路径。 我现在明白了。我在_ready函数的第一个场景中制作了以下代码:var dir = Directory.new()dir.copy("res://dataStore/database.db", "user://")并且database.db和文件出现但在一个名为“files”的文件夹中(我正在使用Android Studio进行调试)如何我的代码错了吗? 没关系,我只是错过了复制函数第二个参数中的"user://database.db"。谢谢你的帮助,你现在是我的英雄!大声笑爱你

以上是关于Android 导出上的 Godot SQLite 数据库的主要内容,如果未能解决你的问题,请参考以下文章

GDScript 导出变量 (Godot4.0)

Android 上 SQLite 数据库的简单导出和导入

Godot引擎的一些踩坑记录(不断更新中)

SQLite----Android Studio3.6.3 当前最新版本数据库查找与导出方法

在局部轴 Godot 上的弧之间旋转自身

Android 9 上的 android.database.sqlite.SQLiteCantOpenDatabaseException