【问题标题】:How to share single SqlLite database between Unity and native android?如何在 Unity 和原生 android 之间共享单个 Sqlite 数据库?
【发布时间】:2017-07-09 17:26:19
【问题描述】:

如何在 Unity 和原生 android 之间共享单个 SqlLite 数据库?

为了统一,我认为 .db 文件必须位于“StreamingAssets”文件夹中。那么考虑到这一点,是否可以访问共享数据库?

我可以想到一种托管服务的方法,该服务可以处理查询并与数据库进行通信。 如何在原生android中创建一个插件,并统一使用来通信共享数据库?有可能吗?

我正在寻找一种方法来进一步探索和实施它。解决这个问题的最佳方法是什么?

解决方案必须离线。

【问题讨论】:

  • Unity 是否支持shared user ID
  • 是吗? @CL。我不确定
  • 如果您使用自定义数据读取器/适配器样式方法,则可以手动指定存放数据库文件的位置。你至少能说明你是如何阅读文件的吗?在这种情况下,我会选择一个 web api 来与来自多个来源的数据库进行交互,但要理解这并不总是可行的。

标签: c# android database sqlite unityscript


【解决方案1】:

我假设您正在谈论需要使用相同数据库的两个独立应用程序。让我们分解问题。

当谈到在任一平台上使用数据库时,您的解决方案首先要访问文件的位置。一旦您可以访问文件的位置,那么只需访问该数据库,就好像没有第二个应用程序一样。

如果您将数据库放在任何应用程序都可以访问的位置,那么根据定义,您的两个应用程序都可以访问它。像 Envrionment.getExternalStorageDirectory() 这样的任何地方都可以用于此目的。

但是,如果您希望它由您的两个应用程序访问,那么您正在谈论一个涉及数据安全的不同球类游戏。您有两个主要选择:

  • 将数据库放在只有您的两个应用程序才能访问的位置
  • 加密数据库,以便只有您的两个应用可以对它执行任何操作

第一个选项涉及查看共享一个内部存储目录的两个应用程序。这将涉及让两个应用程序共享用户 ID 之类的内容,例如 CL was mentioning

第二种选择是将数据库放在外部存储目录中,然后研究如何使用某种密钥加密数据库,然后在两个应用程序中使用该密钥打开数据库。

需要注意的重要一点是,即使您选择第一个选项,如果有人拥有已植根的手机,他们仍然可以访问内部存储,因此您无需处理安全问题,但这可能会出问题范围。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    相关资源
    最近更新 更多