Размер приложения увеличился (почти вдвое) с 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, развернув эту опцию, щелкнув стрелку вниз перед опциями для просмотра подпараметров. См. снимок экрана с двумя подпараметрами ниже «Удалить связанный продукт». Обычно вы хотите сохранить символы, если вы создаете сборку для отладки, но удалить их для сборки выпуска. В конце концов, эти символы предназначены для целей отладки, поэтому имеет смысл сохранить их при сборке для отладки.