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 数据库的主要内容,如果未能解决你的问题,请参考以下文章
SQLite----Android Studio3.6.3 当前最新版本数据库查找与导出方法
Android 9 上的 android.database.sqlite.SQLiteCantOpenDatabaseException