суббота, 8 февраля 2014 г.

Deployment Manager или куда ещё можно задеплоить файлы

Решил посмотреть, куда ещё можно задеплоить файлы и что происходит при обновлении приложения вручную, не из гугл маркета. Почему-то во всех статьях/заметках говорят только про путь ".\assets\internal\", исправляем ситуацию (смотрите скриншот).

Из этой заметки вы узнаете:
Куда можно задеплоить или программно сохранить файлы, так чтобы их можно было вытащить любым файловым менеджером и без прав супер пользователя. В общем, небольшой разбор полётов, основываясь на официальной справке и моих экспериментах (на SGS2 и HTC Rhyme).



Описывать процедуру прикрепления файла к приложению через Deployment Manager я не буду, просто приведу вам скриншот таблицы, которую я сделал для удобства.


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

Особенность #1 – При каждом запуске приложения на устройстве, оно проверяет существование задеплоиных файлов и если какой-то файл не найден, то он автоматически копируется из ".apk".

Особенность #2 – При обновлении приложения вручную (т.е. не из гугл маркета), все данные (файлы) старой версии приложения сохраняются. (По поводу темы с обновлением базы, варианты, которые, скорее всего, будут работать (проверю позже), смотрите в комментах к статье Несколько особенностей и вопросы по ним)

Особенность #3 – Папки типа "Pictures", "tmp", "DCIM" и т.д. не создаются на устройстве, если в них ни чего не поместили, что логично. Однако, если мы ни чего не задеплоили, но где-то в коде упомянули строчку "TPath.GetTempPath" и т.п., например, в обработчике события OnClick для кнопки, то сразу после нажатия на кнопку будет создана пустая папка "tmp".

Спасибо за внимание.

p.s. Дополнения приветствуются.