Android преодолел 50MB барьер

Android 50MB 4ГбИсторически сложилось так, что приложения дляAndroid, были ограниченны размером в 50МВ. Причина вполне очевидна: мобильные устройства пока не могут нести на борту терабайтные диски. Однако, с ростом вычислительной мощности росло и желания разработчиков создавать сложные, а значит и большие, программы и игры. Кроме того, размер памяти в телефонах тоже увеличивался, и барьер в 50 Мб стал фактором, тормозящим развитие платформы.  В связи с этим разработчикиAndroidрешили расширить предел памяти для приложений до 4 Гб.

Предложенное Google решение довольно замысловато. Сама программа по-прежнему не может весить больше 50 Mb, но теперь к ней можно добавить два файла расширений размером по 2 Гб каждый. В Android Market пользователю будет показываться суммарный размер программы с учетом файлов расширения. На новых устройствах установка программы на телефон пользователя будет начинаться только после того как он полностью выкачает и саму программу и расширения.  На старых телефонах расширения будут загружаться при первом запуске программы.

Googleрекомендует использовать первый файл расширений как хранилище ресурсов, а второй – для доставки патчей и исправлений.
Полезные ресурсы.

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

  • Google Market Licensing package, где обновилась библиотека License Verification Library (LVL). С помощью LVL программа может получить подробную информацию о файлах расширения с сервера лицензирования.
  • Google Market APK Expansion package. С помощью этой библиотеки Вы можете легко реализовать загрузку расширений. В APK Expansion содержит в себе множество полезных функций, например функцию возобновления прерванной загрузки или функцию возвращающую прогресс загрузки.


Что такое файлы расширений?

Файлы расширений имеют уникальные имена и могут содержать ресурсы и исходный код.  Как только расширения загружены на сайт издателя, им присваивается номер версии кода, соответствующий версии APK-файла с программой. Таким образом, они оказываются связанными вместе. Наименования и локализация имеют такой вид:

Локализация: <shared-storage>/Android/obb/<package-name>/
Имя файла: [main|patch].<expansion-version>.<package-name>.obb
Пример: /sdcard/Android/obb/com.example.myapp/main.5.com.example.myapp.obb

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

Загрузка и использование расширений из базового Android приложения

Загрузку файлов расширений можно осуществить из основной деятельности приложения. Сразу после ее создания нужно проверить доступны ли файлы расширений. Это можно сделать с помощью методов класса “Helpers”. Ниже приводится код проверки:

boolean expansionFilesDelivered(){
// пытаемся получить имя файла, где main == true и version == 3
String fileName= Helpers.getExpansionAPKFileName(this,true,3);
// Проверяем существует ли файл и совпадает и его размер с FILE_SIZE?
if(!Helpers.doesFileExist(this, fileName, FILE_SIZE,false)){
returnfalse;
}
returntrue;
}

Если файл не существует, запустить сервис загрузчика:DownloaderClientMarshaller.startDownloadServiceIfRequired(). Загрузчик будет выполнять проверку LVL  на сервере лицензий. Он сопоставит имена файлов, размеры, и URL-адресоа.

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

  • В пользовательский интерфейс включена возможность получения уведомлений. Это помогает отслеживать прогресс и расчетное время завершения загрузки.
  • Реализован надежный механизм загрузки, учитывающий специфику работы с большими файлами.
  • Загрузчик можно запустить в фоновом режиме, как службу.
  • Можно загружать файлы расширений, используя только Wi-Fi.  То есть загрузка будет приостановлена при потере сети, и автоматически продолжена, когда Wi-Fi вновь станет доступным.


Для более полной информации о работе с файлами расширений, почитайте APK Expansion Files.


09 марта 2012
Источник:Tim Bray "Android Apps Break the 50MB Barrier"
Перевод:Евгений Чернов




Наши соцсети

Подписаться Facebook Подписаться Вконтакте Подписаться Twitter Подписаться Google Подписаться Telegram

Популярное

Ссылки

Новости [1] [2] [3]... Android/ iOS/ J2ME[1] [2] [3]) Android / Архив

Рейтинг@Mail.ru Яндекс.Метрика
MobiLab.ru © 2005-2018
При использовании материалов сайта ссылка на www.mobilab.ru обязательна