Загрузка проекта по частям

Материал из wiki.appsalutecreator.com
Версия от 10:58, 15 октября 2013; Shejko (обсуждение | вклад) (Возможные ошибки при закачке)
Перейти к: навигация, поиск

Загрузка проекта по частям необходима в тех случаях, когда размер проекта (его установочный файл: *.ipa, *.apk и т.д.)становится выше определенного значения. Предположим, что установочный файл нашей игры занимает место в 120 мб, что является не очень хорошо для пользователя, так как ему придется потратить больше времени и трафика на загрузку. Для того, чтобы уменьшить размер первоначального установочного файла, необходимо разбить проект по пакам или по определенно взятым экранам! В случае применения разбивки по экранам или по пакам, при экпорте проекта будет формироваться один *.sirx файл (файл в котором идет описание графики, используемой в проекте), и несколько разных *.DAT файлов, в которых хранится сама графика. Далее выделяем *.sirx файл и основной *.DAT файл, которые будут использоваться в установочном файле, а остальные *.DAT файлы запакуем в *.zip архив. После того, как запаковали в zip нужно выложить эти файлы на какой-то внешний ресурс и сохранить url по которым эти файлы находятся. В результате, размер исходного установочного файла будет зависить от размера основного DAT файла, а остальные графические ресурсы будут подгружаться в самой игре из интернета.


Разбивка проекта по экранам

Принадлежит паку.JPG

Для того, чтобы разбить проект по частям, необходимо определить, какой экран к какому паку относится, для этого, нужно выделить экран, зайти в его свойства и найти параметр принадлежит паку. Этот параметр по умолчанию равен 0. Значение 0 означает, что графика данного экрана при экспорте будет запакована в основной *.DAT файл. Чтобы поменять это значение, нужно нажать на это поле, после чего появится выпадающий список, в этом списке выбрать то значение, которому вы хотите присвоить данный экран. В данный момент параметр принадлежит паку имеет значение от 0 до 7, что означает, что существует возможность разбить проект на 8 разных *.DAT файлов. После того, как было выбрано какое-то значение параметра, отличное 0, было определено, что экран screen_1 принадлежит другому паку, и его графика будет паковаться в другой *.DAT файл.
Естественно существует возможность присваивать одному и тому же значению параметра несколько экранов, чья графика будет принадлежать одному и тому же *.DAT файлу.

Все экраны, на которых воспроизводится видео, должны принадлежать паку 0.

Настройка Project Options

Downloadable packages.JPG

После того, как было определенно, какой экран, какому значению принадлежит, нужно настроить Project Options. Это нужно для того, чтобы в *.sirx файле указать, какое изображение на каких экранах используется. Для этого в меню редактора выбираем Project - > Project Options. Появится окно в котором нужно выбрать вкладку Downloadable Packages. В этой вкладке будут отображаться значения параметра принадлежит паку, которые были использованы в проекте. В данный момент в использованном проекте было присвоено по одному экрану одному из значений параметра. В результате имеем 5 разных экранов разбитых на паки. В поле Link for download должна указываться ссылка на место, где лежит *.zip архив с запакованным *.DAT файлом внутри.








Подкачка графики

Подкачка графики в проекте происходит по нажатию на кнопку. Это устроено следующим образом:

  • Создаем кнопку
  • Правой кнопкой мыши кликаем на свойства кнопки и добавляем свойство скачать загружаемый контент
  • Настраиваем добавленное свойство
    • url - сюда вписывается ссылка на *.zip архив с запакованным DAT файлом
    • объект (успех) - объект, который вызывается в случае успешной закачки
    • состояние (успех) - состояние, которое вызывается в случае успешной закачки
    • объект (провал) - объект, который вызывается в случае неуспешной закачки
    • состояние (провал) - состояние, которое вызывается в случае неуспешной закачки
    • счетчик прогресса - из выпадающего списка выбирается объект типа counter, который будет показывать на сколько процентов закончена загрузка

Также существует возможность отменять текущую закачку и перезапускать ее, этому соответствуют параметры: отменить текущие закачки, перезапустить текущие закачки, которые находятся в самой кнопке и принимают значения либо 0, либо 1

Экспорт проекта

После того, как разбили проект по частям и настроили опции проекта, его можно экспортировать. В результате экспорта проекта, в папке common можно наблюдать разные папки с именами: imgs, imgs1, imgs2, imgs3, imgs4, imgs5. Имя папки соответствуют значению параметра, которому присваивали экран. То есть, значение параметра принадлежит паку соответствует папке:
0 - imgs
1 - imgs1
2 - imgs2
3 - imgs3
4 - imgs4
5 - imgs5
Папка imgs содержит файлы: imgs.sirx, res.DAT. Эти файлы следует использовать в сборке проекта.


Подкачка с собственного сервера

В каталогах imgs1 и т.д. содержаться *.DAT файлы, которые следует запаковать в *.zip архивы и выложить на сеть в доступном всем месте. Ссылки, которые указываются в опциях проекта, в кнопке или машине инициирующих закачку и по которым находятся zip архивы, должны совпадать!!! Вид ссылки: http://www.mysite.com/imgs1.zip

Подкачка с Google play

Возможна докачка только одного архива.

Ссылка для загрузки в кнопке или машине должна существовать и должна совпадать с ссылкой указанной в настройках проекта.

1) dat файл из каталога imgs1 следует упаковать в zip архив.

2) в app.icf указать версию и размер пака. Версия должна соотв. версии в файле Proj_config.csv

[Game]
VersionMain=1
VersionGraphic=1
VersionLogic=2
market="android"
[s3e]
SysAppCaption="Уникальное имя приложения"

3) zip архив переименовываем в название вида main.1001002.com.absolutist.testapp.obb

где 2-й октет равен VersionMain*10000000 + VersionGraphic*1000 + VersionLogic

4) в app.icf или platform.icf указать размер сформированного zip архива в байтах

[GoogleDownloader]
packSize=

5) Указать лицензию в app.icf или platform.icf для текущего приложения, если не указана.

[AndroidLVL]
base64_public_key_1=""
base64_public_key_2=""
base64_public_key_3=""
base64_public_key_4=""

6) положить файл лицензии в корень проекта с именем google_lic_pub_key.txt содержимое = base64_public_key_1 + base64_public_key_2 + base64_public_key_3 + base64_public_key_4

7) проверить наличие строк

android-extra-application-manifest.xml:

    <service android:name="com.isextension.s3eGoogleAPKDownloader.s3eGoogleAPKDownloaderService" />
    <receiver android:name="com.isextension.s3eGoogleAPKDownloader.s3eGoogleAPKDownloaderAlarmReceiver" />

android-extra-manifest.xml:

    <uses-permission android:name="com.android.vending.CHECK_LICENSE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

8) Собрать apk файл с указанными настройками и основной базой

9) apk и obb файл загрузить на google play


Возможные ошибки при закачке

Если закачка не удалась, то параметр downloadErrCode в объекте типа options будет содержать код ошибки.

Коды ошибок:

1 - неизвестная ошибка, выдаётся когда не подходят другие коды ошибок, например нет интернета или архив недоступен.
2 - отключён Wi-Fi.
3 - Карта памяти недоступна.
4 - Недостаточно места для загрузки архива.
5 - Ошибка распаковки, чаще всего недостаточно места для распаковки архива.

При ошибке закачки с Google play могу вернуться все 5 кодов, при закачке с собственного сервера - только 1-й или 5-й.