Разделение IPA-файла приложения iOS по типу устройства для уменьшения размера загрузки / установки
Приложения iOS, поддерживающие приличное количество устройств, должны быть скомпилированы как минимум для двух разных платформ: armv7 и arm64. Из процесса сборки выглядит, что сгенерированный файл IPA в основном содержит две полные версии приложения, по одной скомпилированные для каждой платформы. Я надеялся, что App Store будет достаточно умен, чтобы упаковать эти две версии в две отдельные загрузки, так что во время загрузки на конкретное устройство будет загружена и установлена только действительно необходимая версия. Но, глядя на iTunes Connect, похоже, это не так. На самом деле все становится еще хуже:
- IPA-файл, который я загрузил для моего приложения, составляет 16.8 МБ на моем компьютере.
- В разделе "Сведения о сборке" в iTunes Connect "Размер сжатого файла" соответствует этим 16,8 МБ.
- В разделе "Размеры файлов App Store" "Размер загрузки" указан как 36,8 МБ!!!
- И что еще хуже, "Размер установки" указан в 48,6 МБ!
Это безумие! Хорошо, я могу понять, почему "Размер установки" больше, чем "Размер сжатого файла", но почему огромный "Размер загрузки"??? Не лучше ли будет выполнить распаковку на устройстве после загрузки? Но я отвлекся...
iTunes Connect поддерживает загрузку нескольких версий приложения для разных устройств. По крайней мере, список "Размеры файлов App Store" состоит из таблицы, которая может отображать несколько таких версий по устройствам:
Можно ли каким-то образом создать и загрузить несколько версий приложения для конкретного устройства / платформы, чтобы уменьшить "Размер загрузки" и "Размер установки" для каждой из них вместо использования одной "Универсальной"?
Бонусный вопрос: если это возможно, как мне это сделать в RoboVM?:)
В качестве примечания: одно и то же приложение на Android, включая идентичные графические и звуковые ресурсы и практически идентичную кодовую базу, занимает всего 6,0 МБ! Но это может быть необходимым вздором, представленным RoboVM. Мне все еще нужно разобраться, как уменьшить это...
2 ответа
@RP правильно. Когда вы загружаете сборку Bitcode, Apple использует технику "Разбавление приложений" под названием "Slicing", чтобы создать именно то, о чем вы говорите.
См. Руководство по распространению приложений для более подробной информации.
Вы можете добиться этого, используя методы Разбавления приложений, представленные как часть iOS 9. У Разбавления приложений есть 3 основных аспекта:
- Приложение нарезки
- По требованию ресурсов
- битовый код
В вашем случае вы можете изучить нарезку приложений и битовый код.