понедельник, 14 октября 2013 г.

Create expancion file (*.obb) for Android market, Создание файлов расширения


In English

Доброго времени суток

Допустим мы столкнулись со следующей задачей:

Размер .apk файла нашего приложения начал расти как на дрожжах и подходит к критической точке в 50 МБ. Что делать?



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

как научить Ваше приложение использовать такие файлы коротко описано здесь.

Здесь же мы рассмотрим способ создания самих файлов.
Самое сложное это наверное правильно составить имя *.obb файла ))
 `[main|patch].{expansion-version}.{package-name}.obb`
[main|patch] - main - обязательный файл для работы приложения,
               patch -необязательный
{expansion-version} - версия с которой был добавлен файл расширения,
в действительности, что сюда не поставь, маркет 
все равно изменит именно на ту версию которая была указана в манифесте .apk
с которой заливалось расширение.
{package-name} - имя пакета Вашего приложения, 
можно просто скопировать из манифеста


Все по порядку:

  1. Вот лежат у нас в папке assets/arch  картинки, текстовые файлы, медиа файлы и т.д.
  2. Решили мы что очень уж накладно нам держать такой объем дынных в Assets.
  3. Мы запаковали все это дело в архив с первоначальным именем arch.zip
  4. Допустим эти файлы нам очень обязательны - значит это не patch, а main
  5. Текущая версия на Google PLAY допустим  номер 2, а выкладывать с файлом расширения мы будем версию номер 3
  6. Имя пакета прописанyого у нас в манифесте допустим com.example.exp.file
  7. Переименуем архив соответственно - main.3.com.example.exp.file.obb
Спешу напомнить, что файлы расширения скачиваются маркетом автоматически при установке приложения.
Сразу после скачивания они размещаются на внешней памяти (external storage), например:

   /mnt/sdcard/android/obb/ИМЯ_НАШЕГО_ПАКЕТА/file.obb

   или для нашего примера

   /mnt/sdcard/android/obb/com.example.exp.file/main.3.com.example.exp.file.obb

Так же не стоит забывать, что библиотека ExpantionDownloader, поставляемая вместе с Android SDK, требует для идентификации obb файлов точный размер в байтах. Проще всего на Windows открыть консоль в директории с obb файлом и ввести команду dir



Ну вроде с созданием файлов разобрались)).