我将项目导出到 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
时,登录无法正常工作。
有什么想法吗?
谢谢大家!
使用通配符添加导出,例如
*.db
。 有一个问题 - 我相信这个问题仍然存在 - 如果没有通配符,此选项将不起作用。
这应该使
*.db
文件在其 res://
路径中可用。这是只读的。
由于只读对数据库不利,因此将其复制到
user://
路径。您可以使用 Directory
类的对象来检查它是否已存在,如果不存在,则从 res://
复制到 user://
。
然后继续从
user://
路径处理数据库。
我发现将数据库复制到用户目录中的唯一方法(godot 4.3)
var db_file_content : PackedByteArray = FileAccess.get_file_as_bytes("res://data/data.db")
var file : FileAccess = FileAccess.open("user://data.db",FileAccess.WRITE)
file.store_buffer(db_file_content)
file.close()