Разделение 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 основных аспекта:

  1. Приложение нарезки
  2. По требованию ресурсов
  3. битовый код

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

Другие вопросы по тегам