2017-02-20 3 views
1

Как делить одну базу данных SqlLite между Unity и родным андроидом?Как разделить одну базу данных SqlLite между Unity и родным андроидом?

Для единства, я полагаю .db-файл должен находиться в папке StreamingAssets. Итак, учитывая это, можно ли получить доступ к общей базе данных?

Я могу придумать способ размещения службы, которая может обрабатывать запрос и связываться с базой данных. Как насчет создания плагина в собственном андроиде и использовать в единстве для обмена общей базой данных? Является ли это возможным?

Я ищу способ дальнейшего изучения и реализации. Каким будет лучший способ решить эту проблему?

Решение должно быть в автономном режиме.

+0

Поддерживает ли Unity [общий идентификатор пользователя] (https://developer.android.com/guide/topics/manifest/manifest-element.html#uid)? –

+0

не правда ли? @CL. Я не уверен –

+0

Если вы используете специальную методологию стиля чтения/адаптера данных, вы можете указать, где разместить файл базы данных вручную. Можете ли вы хотя бы показать, как вы читаете файл? В таких ситуациях я бы выбрал веб-api для взаимодействия с базой данных из нескольких источников, но понимаю, что это не всегда возможно. – LokiSinclair

ответ

0

Я предполагаю, что вы говорите о двух отдельных приложениях, которые должны использовать одну и ту же базу данных. Давайте сломаем проблему.

Когда дело доходит до использования базы данных на любой платформе, ваше решение начинается с доступа к местоположению файла. После того как вы получите доступ к местоположению файла, это просто вопрос доступа к этой базе данных, как если бы не было второго приложения.

Если вы поместили базу данных в какое-либо место, доступное любому приложению, то по определению оно будет доступно для обоих ваших приложений. В любом случае, как Envrionment.getExternalStorageDirectory(), для этой цели будет работать.

Однако, если вы хотите, чтобы это было только, доступ к которому осуществлялся двумя вашими приложениями, то вы говорите о другой игре в мяч, которая затрагивает безопасность данных. У вас есть два основных варианта:

  • Put базы данных в месте, доступный только ваших двух приложений
  • Шифрование базы данных так, что только ваши два приложения могут сделать что-нибудь с ним

Первый вариант включает в себя просмотр двух приложений, имеющих общий каталог . Это будет включать в себя что-то вроде строк, позволяющих двум приложениям делиться идентификатором пользователя, как то, что CL was mentioning.

Второй вариант заключается в размещении базы данных во внешнем хранилище, а затем в поиске шифрования базы данных с помощью какого-либо ключа, а затем с использованием этого ключа в двух приложениях для открытия базы данных.

Важно отметить, что даже если вы должны пойти по первому варианту, если у кого-то есть корневой телефон, он все равно может получить доступ к внутреннему хранилищу, чтобы вы не имели дело с проблемой безопасности, но это может быть вне сферы действия.

Надеюсь, это поможет.

Смежные вопросы