Android, сохраняющий несколько МБ данных приложения безопасно (без ошибок и без ошибок) и осторожно (не заполняя хранилище)? - PullRequest
1 голос
/ 11 апреля 2011

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

В настоящее время они хранятся в:

/data/data/com.myapp.example/files

Однако я чувствую, что нужно сделать два важных замечания:

Прежде всего, приложение займет около 10 МБ дополнительного пространства после начальной «установки».Как я могу сделать это как можно меньшей проблемой для пользователя?Я не думал выводить их на SD-карту, потому что они лицензированы, а SD абсолютно небезопасен.(хотя я полностью осознаю, что так же, как каталог данных от корневых устройств).Каково было бы решение этой проблемы?

Мое второе соображение заключается в том, что мне нужно знать, достаточно ли места на пользовательском устройстве, прежде чем я попытаюсь его использовать, есть ли способ, которым я могуузнать, прежде чем начать процесс?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2011
  1. «Как можно меньше» - ну, если вам требуется 10 МБ данных, то вам требуется 10 МБ данных. Вы ничего не можете сделать, чтобы уменьшить его, кроме сжатия данных. Конечно, если не все эти данные требуются, вы можете рассмотреть возможность разделения данных на отдельные модули и предложить их на рынке в качестве плагинов, или позволить пользователю выбрать, какие данные требуются при запуске, а затем загрузить их. ваш собственный сервер.

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

  3. Что бы вы ни делали, не забудьте включить опцию "установить на SD" в вашем приложении.

0 голосов
/ 11 апреля 2011

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

Чтобы проверить доступное пространство для данного пути, используйте класс StatFs .


Изменить 11/04/2011:

Вы должны сделать несколько тестов, чтобы проверить, будет ли расшифровка данных слишком медленной или нет. У тебя может быть хороший сюрприз. Также обратите внимание на алгоритмы TEA и Blowfish , которые кажутся одними из самых быстрых "сильных" алгоритмов. Или просто зашифруйте свои данные с помощью очень простого алгоритма, который предотвратит прямое копирование изображений (но не поможет противостоять лучшим хакерам).

И я не думаю, что на телефоне будет какая-либо безопасная область для временного хранения расшифрованных файлов, потому что любой пользователь root может получить доступ к любому месту телефона (а рутирование андроида очень просто для всех)


Изменить 12/04/2011:

Вам нужны все 10 МБ одновременно? Не возможно ли загрузка материала в память? Сбоит ли ваше приложение с OutOfMemoryException, если вы загружаете свои данные при запуске приложения (и / или в фоновом режиме) и сохраняете его загруженным в течение срока службы приложения?

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

...