forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Программирование для мобильных устройств (http://forum.boolean.name/forumdisplay.php?f=173)
-   -   Изменяемый конфиг для apk (http://forum.boolean.name/showthread.php?t=20245)

ABTOMAT 31.03.2016 21:00

Изменяемый конфиг для apk
 
Встала задача: сделать, чтобы игра грузила данные из файла, который можно менять, не переустанавливая (не перекомпиливая) приложение.

Если бы дело было на Винде, то тут всё легко: в папке с игрой кладём txt-файлик, читаем его через StreamReader (как один из вариантов), берём оттуда данные и дальше делаем, что захотим.

Но проблема в том, что на мобилке "в папку с игрой" ничего не подсунешь. Короче, проблема — "скормить" игре "левый" файл.

Пока что придумал такой дебил-козёл способ: файл этот хранить в Интернете и загружать по http, что очень неудобно в плане его редактирования, да и сама идея тупая.

Может, есть какие-то места на Андроиде, где можно хранить юзерские файлы, и игра сможет получить к ним доступ? Можно ли это сделать на Юнити?

Knightmare 31.03.2016 21:07

Ответ: Изменяемый конфиг для apk
 
Ну дык читай с SD карты (даже если она не воткнута, то внутренняя монтируется как карта памяти). Там только надо в манифесте разрешить это дело.

RegIon 31.03.2016 21:16

Ответ: Изменяемый конфиг для apk
 
А если грузить бандлы? Их можно сделать с любыми ресурсами.

Папка приложения, которая в data/. Туда - оттуда пиштся без бубнов, вроде если не указать путь до файла, то он дефолтный как-раз туда (если не изменяет память). Как выше написали, то SD карту тоже можно, даже без правки манифеста, в PlayerConfig есть настройка для этого.

ABTOMAT 31.03.2016 21:22

Ответ: Изменяемый конфиг для apk
 
Всё понятно, так и сделаю.

ABTOMAT 03.04.2016 22:41

Ответ: Изменяемый конфиг для apk
 
Ну, в-общем, отпишусь вкратце, если кто-то тоже будет это искать.

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

Например:
PHP код:

File.WriteAllText(Application.persistentDataPath "/foo.txt""bar"); 

Для упрощения поисков выведите Application.persistentDataPath на экран каким-либо образом (например я создал Text на канвасе и высрал её туда).

Например, путь может выглядеть так: Android/data/com.foo.bar/files

Теперь то, что может сбить поначалу с толку.

В Юнити обязательно надо либо включить галку "Developbemt Build" в настройках билда, либо выбрать player settings > android > configuration > write access = external, иначе на Андроиде приложение будет "в песочнице", писать, что она находится в /data/data, но на деле извне к ней доступа будет не получить (если у вас не рутован девайс).

Соответственно, я сначала долго не мог найти, куда же пишется и откуда читается, и выставление Write Access мне помогло. Тогда я положил в эту папку файл с конфигом, и он нормально прочитался моей игрой. Хеппи энд.

RegIon 04.04.2016 07:46

Ответ: Изменяемый конфиг для apk
 
Цитата:

Сообщение от ABTOMAT (Сообщение 305213)
Ну, в-общем, отпишусь вкратце, если кто-то тоже будет это искать.

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

Например:
PHP код:

File.WriteAllText(Application.persistentDataPath "/foo.txt""bar"); 

Для упрощения поисков выведите Application.persistentDataPath на экран каким-либо образом (например я создал Text на канвасе и высрал её туда).

Например, путь может выглядеть так: Android/data/com.foo.bar/files

Теперь то, что может сбить поначалу с толку.

В Юнити обязательно надо либо включить галку "Developbemt Build" в настройках билда, либо выбрать player settings > android > configuration > write access = external, иначе на Андроиде приложение будет "в песочнице", писать, что она находится в /data/data, но на деле извне к ней доступа будет не получить (если у вас не рутован девайс).

Соответственно, я сначала долго не мог найти, куда же пишется и откуда читается, и выставление Write Access мне помогло. Тогда я положил в эту папку файл с конфигом, и он нормально прочитался моей игрой. Хеппи энд.

Это не песочница, это PrivateDirectory, на самом деле /sdcard/Android/Data тоже самое, но там нельзя выставлять права (fat32 не позволяет), по этому можно достучаться до нее, по этому кстати execute не работает с карт, если кто пытался нативки с них запускать.
Да, кстати, если хочешь приватную инфу хранить, то можно получить и /data/data , вроде через переменные окружения.
Автомат, я же скрин для этого приложи:-)
Ну и написал, что права нужно выставить.

Ты читаешь черезстрочно.

UPD: возможно пока ты увидел, срок на картинку истек и ее удалил сервер, прости.


Часовой пояс GMT +4, время: 03:46.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot