Размер приложения увеличился (почти вдвое) с Xcode 14 и отключенным биткодом

Apple отказалась от использования Bitcode и больше не принимает любые заявки с приложениями с поддержкой Bitcode, начиная с Xcode 14. Мы в PhonePe отключили Bitcode и загрузили приложение в App Store, подключились через Xcode 14, и теперь наблюдаем очень сильное увеличение размера приложения. . Размер приложения почти удвоился по сравнению с189 MB(с включенным Xcode 13 и Bitcode) в342 MBс Xcode 14.

Кто-нибудь сталкивается с подобной проблемой или имеет какое-либо решение для уменьшения размера приложения?

Устаревшие

  • Начиная с Xcode 14, биткод больше не требуется для приложений watchOS и tvOS, а App Store больше не принимает биткоды от Xcode 14.

  • Xcode больше не создает битовый код по умолчанию и генерирует предупреждающее сообщение, если проект явно включает битовый код: «Сборка с битовым кодом устарела. Пожалуйста, обновите настройки вашего проекта и/или цели, чтобы отключить биткод». Возможность сборки с биткодом будет удалена в будущем выпуске Xcode. IPA, содержащие битовый код, будут удалены перед отправкой в ​​​​App Store. Символы отладки для прошлых представлений битового кода остаются доступными для загрузки. (86118779)

  • Поскольку биткод устарел, сборки для iOS, tvOS и watchOS больше не включают биткод по умолчанию. (87590506)

3 ответа

Предоставил исправление для него. Размер нашего приложения вернулся к норме, как и раньше.

Итак, когда у нас включен биткод, Apple удаляет символы из нашего IPA и, таким образом, помогает нам уменьшить размер приложения. Однако, когда мы отключаем Bitcode, символы по умолчанию не удаляются. У Apple нет документации, которая рекомендовала бы нам удалять символы из двоичного кода для приложений с отключенным биткодом. Удаление символов вернет вас к предыдущему размеру приложения, где все было нормально.

Чтобы убрать символы, мы можем использовать эту команду.

strip -rSTx Binary -o StrippedBinary.

Флаг T указывает полосе удалить символы Swift, другие флаги удаляют отладочные и локальные символы.

Шаги для выполнения:

Как только вы сгенерируетеxcarchive, идти кShow package Contents -> Products -> Applications -> YourAppName.app -> Show package contents. У вас будетYourAppNameфайл. Бегатьstrip -rSTx YourAppName -o YourAppNameчтобы убрать символы.

Если у вас есть другие фреймворки, связанные с вашим приложением, перейдите кFrameworksпапку и запустите указанную выше команду полосы для всех этих файлов фреймворка.

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

      #!/bin/bash

yourAppName=PhonePe
appFolder="$yourAppName.app"

echo "$appFolder"
cd $appFolder

strip -rSTx $yourAppName -o $yourAppName

cd Frameworks

for d in */ ; do
    IFS='. ' read -r -a array <<< "$d"
    newname=${array[0]}1
    
    strip -rSTx $d/${array[0]} -o $d/${array[0]}
done

После того, как описанный выше сценарий или процесс удаления завершен, вы можете, как обычно, продолжить распространение приложения в App Store. Как только Apple завершит обработку вашей сборки, вы увидите очень сильное уменьшение размера приложения.

Отличная статья. Xcode 14 непреднамеренно увеличивает размер приложения . Я добавил скрипт для каждой из моих целей. Удалить двоичные символы.

Также, если вы используете CocoaPods, добавьте скрипт ниже в подфайл.

      post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings['STRIP_INSTALLED_PRODUCT'] = 'YES'
    config.build_settings['STRIP_STYLE'] = "all"
    config.build_settings['STRIPFLAGS'] = "-rSTx"
  end
end

Фаза разгрузки не должна быть индивидуальным шагом с использованием сценария. Вы можете включить полосу в настройках целевой сборки. См. снимок экрана ниже (обратите внимание на выделенные настройки):

Установите «Удалить связанный продукт» — понятное имя для опции.STRIP_INSTALLED_PRODUCTна Да. Если вам необходимо указать дополнительный флаг, вы можете установить его в «Дополнительные флаги полосы» (STRIPFLAGS). Вы также можете указать, сколько разрезать, изменив параметр «Стиль полоски» (STRIP_STYLE), но обычно для него должно быть установлено значение «Все символы».

Обратите внимание, что вы также можете установить разные настройки для сборки Debug и Release, развернув эту опцию, щелкнув стрелку вниз перед опциями для просмотра подпараметров. См. снимок экрана с двумя подпараметрами ниже «Удалить связанный продукт». Обычно вы хотите сохранить символы, если вы создаете сборку для отладки, но удалить их для сборки выпуска. В конце концов, эти символы предназначены для целей отладки, поэтому имеет смысл сохранить их при сборке для отладки.

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