Доступ к ресурсам StreamingAssets из C ++ DLL в Unity на Android - PullRequest
1 голос
/ 18 апреля 2019

Я разработал приложение на C # в Unity для Android.Кроме того, я создал собственную внешнюю C ++ DLL, которая правильно загружена и доступна из кода C #.Я также добавил некоторые XML-файлы в папку StreamingAssets, которая работает, как и ожидалось, поскольку я вижу эти файлы, загруженные в .apk.

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

РЕДАКТИРОВАТЬ:

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

  • На этапе OnStart () моего приложения я использую класс UnityWebRequest для извлечения из файла JAR требуемых файлов, а затем сохраняю их в Application.persistentDataPath
  • После этого я перехожу к своемуDLL новый путь к каждому файлу, который позволяет мне обращаться к ним без проблем.

Ответы [ 2 ]

1 голос
/ 19 апреля 2019

В Android файлы содержатся в сжатом файле .jar (который по сути тот же формат, что и стандартный zip-сжатый файлы). Это означает, что если вы не используете класс Unity WWW для восстановить файл, вам нужно использовать дополнительное программное обеспечение, чтобы увидеть внутри архив .jar и получите файл.


JAR - это формат файла пакета, обычно используемый для объединения множества файлов классов Java и связанных метаданных и ресурсов в один файл для распространения. JAR-файлы - это архивные файлы, которые включают в себя специфический для Java файл манифеста. Они построены в формате ZIP и обычно имеют расширение .jar.


Это означает, что вы можете работать с файлами jar так же, как и с файлами zip . Есть форк для minizip с примерами того, как его использовать.

1 голос
/ 19 апреля 2019

На Android StreamingAssets находятся в банке. Это может быть причиной того, что вы не можете получить к ним доступ, но как вы можете видеть в руководстве, вы можете использовать класс WWW для извлечения файлов.

На Android файлы содержатся в сжатом файле .jar (который по сути тот же формат, что и стандартный zip-сжатый файлы). Это означает, что если вы не используете класс Unity WWW для восстановить файл, вам нужно использовать дополнительное программное обеспечение, чтобы увидеть внутри архив .jar и получите файл.

(https://docs.unity3d.com/Manual/StreamingAssets.html)

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