Сколько весит xcode
С другой стороны — «оно всегда вызывало некоторые вопросы» Что по мне, то лучшие времена Xcode — версии 2.х и 3.х, когда «по просьбам трудящихся» Эппл тупо копировал интерфейс «классических IDE из начала 1990-х» вроде Финка и Метроверкса.
Powered by phpBB © 2001, 2005 phpBB Group
МЦ Магазин Apple
ООО «МК-Центр», ИНН 7709480342
- +7 (495) 956-6888
- пн-пт 10:00-18:00
- Москва, ул. Школьная, д. 47 (м. Римская)
- схема проезда
- shop@mccentre.ru
- mccentre.ru
- О магазине MacCentre.ru
- Оплата товара
- Доставка товара
- Личный Кабинет
- Политика конфиденциальности
Сервис Apple
ИП Костыгов Ю.В.
- +7 (495) 600-0075
- пн-пт 10:00-20:00
- Москва, ул. Школьная, д. 47 (м. Римская)
- схема проезда
- service@яблочный-сервис.москва
- яблочный-сервис.москва
- Ремонт и сервис MacBook
- Ремонт и сервис iPhone
- Ремонт и сервис iPad
- Ремонт и сервис iMac
МЦ Полиграфия
ООО «Компания МакЦентр», ИНН 7709450468
- +7 (495) 956-3211
- пн-пт 10:00-18:00
- Москва, Холодильный пер., д.3, стр. 1, офис 3247
- схема проезда
- ofset@maccentre.ru
- maccentre.ru
- mcoffset.ru
- Полиграфические материалы
- Офсетные пластины
- Фототехническая пленка
- Химические растворы
Данный интернет-сайт носит исключительно информационный характер и ни при каких условиях не является публичной офертой, определяемой положениями Статьи 437 (2) Гражданского кодекса РФ.
MacCentre.ru © 1991-2017. ООО «Компания МакЦентр», ИНН 7709450468, Холодильный пер., д.3, стр. 1, офис 3247.
Другие проекты компании МакЦентр
- Airwheel: городской экотранспорт — электросамокаты, моноколёса, гироскутеры, электроскейтборды
- PalmStore: интернет-магазин электроники: смартфоны, планшеты, электронные книги, автоэлектроника
- Электронные книги Onyx BOOX
- HPC.ru — все о смартфонах, информационный проект
Более 40 приложений в App Store заражены вирусом
Ваша легальная копия Angry Birds 2 для iOS может включать небольшой довесок в виде вируса. Как такое возможно?

Kate Kochetkova
В защищенном Эдеме Apple завелся червь: из App Store удаляют около 40 приложений, зараженных вирусом. В частности, зловредом XcodeGhost заражены такие приложения, как WeChat (а у этой программы более 600 млн подписчиков по всему миру), приложение для скачивания музыки от NetEase, считыватель визиток CamCard, аналог Uber от Didi Kuaidi… и даже китайская версия Angry Birds 2.

Apple тратит много средств и времени, чтобы изучить каждое приложение, попадающее в Apple Store. Долгое время это окупалось, выгодно отличая магазин компании от Google Play и сторонних ресурсов, которые были буквально переполнены вредоносным ПО (по крайней мере, пока Google не запустила свою собственную систему проверки файлов на наличие вирусов в 2014 году).
В этом контексте сентябрь 2015 года был особенно неудачным для Apple: в начале месяца специалисты обнаружили вирус, поражающий взломанные iOS-устройства, и все заговорили о «самом большом воровстве Apple-аккаунтов в истории», а теперь компания Palo Alto Networks сообщила о зараженных приложениях уже в самом App Store.
Кстати, что такое Xcode, а что — XcodeGhost?
Xcode — это бесплатный пакет инструментов для разработчиков, занимающихся созданием приложений для iOS и OS X. Официально его можно скачать с сайта Apple, а неофициально — еще с кучи сторонних веб-сайтов.
XcodeGhost — это вредоносное ПО, разработанное специально, чтобы заражать инструменты Xcode, а следом и созданные с его помощью приложения. Инфицированные приложения помимо основной функции начинают воровать данные пользователей и отправлять их на удаленный сервер к хакерам.
Более 40 популярных приложений в #AppStore инфицированы #Apple #malware
Tweet
Как хакеры умудрились скомпрометировать приложения?
Официальный пакет инструментов Xcode от Apple не был взломан; виной всему неофициальная версия инструментов с облачного хранилища в Baidu (это что-то вроде китайского Google). На самом деле в Китае довольно часто скачивают необходимые инструменты со сторонних сайтов, что хакеры и использовали в своих целях.
Надо сказать, что разработчики в Китае скачивают инструменты из неофициальных и, соответственно, ненадежных источников не без причины. В стране не слишком быстрый Интернет; более того, китайское правительство ограничивает доступ к иностранным серверам всего тремя шлюзами. Установочный пакет инструментов Xcode весит 3,59 Гб, и в таких условиях с сайта Apple он может скачиваться очень долго.
Так что злоумышленникам нужно было только загрузить хитроумно зараженный пакет инструментов на сервер и позволить официальным разработчикам сделать всю работу. Исследователи Palo Alto Networks отмечают, что инфицированный набор инструментов Xcode находился в открытом доступе около шести месяцев. За это время его множество раз скачали и использовали для создания новых приложений и обновленных версий старых программ. Инфицированные приложения, конечно же, были отправлены разработчиками в App Store и каким-то образом успешно прошли систему сканирования файлов на наличие вирусов, используемую Apple.
Что дальше?
Недавно Apple подтвердила газете Reuters, что все известные ей скомпрометированные приложения были удалены из App Store и теперь компания работает с разработчиками ПО для iOS и проверяет, что они используют официальную версию Xcode.
К сожалению, на этом наши проблемы не заканчиваются. Все еще неясно, сколько приложений пострадало от вируса. Например, в Reuters отмечают, что китайская компания Qihoo360 Technology Co. утверждает, что ее специалисты по безопасности обнаружили 344 приложения, зараженных XcodeGhost.
Этот инцидент может стать новой вехой в развитии киберпреступлений, в которой разработчики попадут под удар наравне с неофициальными магазинами и обычными пользователями. Другие преступники могут начать копировать тактику автора XcodeGhost. Более того, институт SANS недавно сообщил, что автор XcodeGhost опубликовал исходный код зловреда на GitHub в открытом доступе.
Так совпало, что ранее в этом году инструменты Xcode уже становились предметом обсуждения. В тот раз это произошло из-за Jamboree, секретного ежегодного слета специалистов по безопасности, который спонсирует ЦРУ.
На этой встрече неназванные исследователи безопасности сообщили, что им удалось создать модифицированную версию Apple Xcode, способную встроить шпионский бэкдор в любое приложение или программу, созданные с помощью этих инструментов.
[FAQ] Почему Xcode занимает так много места на диске?

Если вы хотите увидеть на нашем сайте ответы на интересующие вас вопросы обо всём, что связано с техникой, программами и сервисами Apple, iOS или Mac OS X, iTunes Store или App Store, задавайте их через форму обратной связи. Ответы на самые интересные из них будут появляться в материалах данной рубрики. К нам поступил следующий вопрос:
Привет!
За год работы с Xcode я убедился, что он может сожрать чуть ли не всё свободное место на диске мака( Скачиваешь 2 с лишним гига из апп стора, они распакуются и занимают уже чуть ли не 10 ГБ. И это только в Applications! Ещё полно всего хранится в Application Support. Короче, по моему опыту, через несколько месяцев после установки Xcode отъедает больше 30 ГБ пространства.
А вопрос вот в чем – может, подскажете, какие файлы Xcode можно стереть без ущерба для процесса разработки?
Это вас не сильно порадует, но приведённые вами цифры – ещё цветочки по сравнению с тем, что бывает. Если Xcode не переустанавливать начисто, спустя год-полтора он может занять все 80 ГБ.
Поэтому всё зависит от того, ограничены ли в трафике или во времени. Если нет, разумно периодически удалять Xcode полностью, в частности, стирать:
- само приложение из папки Applications
- папку /Library/Developer
- папку ~/Library/Developer (на всякий случай напомним, что тильда означает вашу домашнюю директорию, например, /Users/Vitalik)
Но если целиком переставлять Xcode не хочется, а место освободить надо, можем предложить разобраться с главными пожирателями места на диске.
Обычно лидер по объёму пространства – папка ~/Library/Developer/Xcode/iOS DeviceSupport. Она нужна только для целей дебаггинга и анализа логов падения программы на определённой версии iOS. Беда в том, что при каждом подключении устройства с новым билдом iOS в этой папке создаётся вложенная директория размером от 2 до 3 ГБ. Например, вот так структура этой папки выглядит у автора материала:

Стирание содержимого этой папки безопасно, но помните, что она заполняется автоматически. Например, если вы сотрёте подпапку для iOS 9.2, а потом подключите к Маку iPhone с этой версией iOS и запустите Xcode, подпапка создастся снова.
Второе место среди пожирателей места занимают ненужные симуляторы iOS. Каждый может весить от 1,5 до 3 ГБ, но далеко не каждый вам реально нужен. Например, если ваше приложение не рассчитано под iPad, требуется ли вам симулятор? И нужны ли симуляторы вообще, если вы, к примеру, тестируете все билды на «живых» устройствах?
Удалять симуляторы можно прямо в Xcode (правда, эта возможность появилась сравнительно недавно). В верхнем меню выберите пункт Window-Devices (или нажмите Cmd+Shift+2). Удалять ненужные симуляторы можно из контекстного меню пунктов в сайдбаре слева.

Наконец, много ненужного места может отъедать дополнительная документация по старым SDK. Проверьте содержимое папки ~/Library/Developer/Shared/Documentation/DocSets и удалите его при необходимости.
Надеемся, количество свободных гигабайт на вашем Маке после этого увеличится.
Как Xcode 14 непреднамеренно увеличивает размер приложения
Xcode 14 был выпущен 12 сентября со многими новыми функциями и улучшениями. «Первое, что вы заметите», это то, что Xcode быстрее и на 30% меньше.1 Повышенный параллелизм делает создание проектов на 25% быстрее, а длительные тесты до 30% быстрее.
Вскоре после выпуска Xcode 14 в ряде приложений для iOS был замечен значительный прирост в размере. Сначала мы написали в Твиттере о наблюдении большого скачка в приложении Zillow для iOS. Zillow не был отдельным примером.
Между серединой сентября и началом октября:

- 8 октября размер установки приложения Nike для iOS составлял 182,2 МБ. Неделю спустя он был равен 322,1 МБ (+77%)
- American Airlines выросла с 182,2 МБ до 389,1 МБ, — Xcode 14 стал причиной увеличения на 76,2 МБ (+113%)
- Chime увеличен с 162,8 МБ до 212,8 МБ (+31%)
В каждом случае скачок размера связан с тем, что эти приложения впервые выпускаются с Xcode 14. В числе прочих функций, Xcode 14 отключил битовый код по умолчанию.
Xcode больше не создает битовый код по умолчанию. Возможность сборки с помощью битового кода будет удалена в будущем выпуске Xcode. IPA, содержащие битовый код, будут удалены перед отправкой в App Store.
Примечания к выпуску Xcode 14
Что такое битовый код (биткод)? Bitcode — это альтернативный способ упаковки приложения, который оставляет часть процесса сборки для Apple после отправки в App Store. Одна из вещей, которую делает Apple, это удаляет двоичные символы.
А удаление двоичных символов? Удаление двоичных символов — это когда определенные типы метаданных, которые не нужны для запуска приложения в производстве, удаляются из двоичного файла. Это метаданные, которые могут быть полезны до начала производства, например, для создания файлов dSYM, но в производственной сборке только «раздувают» телефон пользователя.
Простыми словами, битовый код оптимизирует производственные сборки, частично удаляя двоичные символы. Без включения битового кода настройки сборки Xcode должны быть изменены, чтобы удалить двоичные символы.
Этот блог не о том, является ли устаревший биткод хорошим или плохим, он про выделение менее известного эффекта выпускаемых с помощью Xcode 14 приложений. Ниже мы:
- Сравним сборки приложения до и после Xcode 14
- Выясним, какие приложения имели регрессию размера из-за Xcode 14
- Покажем как любое приложение может удалять бинарный код
Сравнение Nike до и после Xcode 14
С Xcode 14 любое приложение, которое полагалось на битовый код, больше не обязательно удаляет двоичные символы из своего приложения. Это означает, что приложение может стать намного больше без добавления какой-либо функциональности.
Вот рентгеновский снимок от Emerge Size Analysis для версии 22.35.0 (в соотношении 10/8) приложения Nike для iOS. В этой версии фреймворки составляют 163,7 МБ от размера установки 191,7 МБ. Если вы находитесь у большого экрана, попробуйте взаимодействовать с древовидной картой, чтобы увидеть детализированные разбивки по размерам.

В версии 22.36.1 (10/15) фреймворки подскакивают до 293,8 МБ (+127,3 МБ) из общих 322,1 МБ. Обратите внимание на добавление темно-синих “String table», найденных в каждом фреймворке.

Когда мы сравниваем две сборки, мы видим, что практически все увеличение на 130 МБ происходит из-за роста DYLD.String tables. Эти String tables являются ненужными метаданными, которые теперь используются в производстве.

Nike вырос с 213,9 КБ двоичных символов (0,11% от общего размера приложения) до 127,5 МБ двоичных символов — почти 40% всего приложения.


В целом, приложение Nike для iOS увеличилось на 130 МБ без каких-либо серьезных изменений.

Сколько приложений было затронуто
Emerge Tools регулярно загружает приложения из App Store для анализа, что позволяет нам обнаружить эти регрессии и присмотреться. Приведенные ниже данные представляют все приложения, где:
- Есть более 2 МБ двоичных символов
- Более 5% приложения — это двоичные символы
- Процент приложения, которое является двоичными символами, вырос по крайней мере на 5% между сборками
Все приложения извлекаются непосредственно из App Store. Предоставленный анализ предназначен только для образовательных целей и не представляет клиентов Emerge Tools.

Каждое из вышеперечисленных приложений, вероятно, регрессировало из-за выпуска с Xcode 14. Тем не менее, есть много других приложений, которые имеют значительную экономию за счет удаления двоичных символов, которые не могут быть однозначно связаны с Xcode 14.
Приложение Toyota (v2.0.9), о котором мы твитнули в начале блога, имеет установочный размер 550,2 МБ и может сэкономить 109,8 МБ (20% от общего размера приложения) за счет удаления двоичных символов. Это был первый раз, когда Emerge Tools проанализировало приложение Toyota, и мы не смогли сказать, было ли в нем раздувание двоичных символов в предыдущих сборках.
Есть также такие приложения, как TurboTax, которое мы анализируем еженедельно с апреля 2022 года. TurboTax обеспечивает потенциальную экономию более 100 МБ в каждой сборке, которую мы измерили. Три основных приложения Intuit для iOS — TurboTax, Mint и Quickbooks — имеют общий установочный размер 1,37 ГБ. Они могли бы сэкономить 578 МБ (42% размера), просто удалив двоичные символы.
Ниже приведен список приложений, в которых более 15 МБ двоичных символов, но мы не можем точно сказать, связано ли это с переходом на Xcode 14.

Как удалить двоичные символы без битового кода
К счастью, удаление двоичных символов из конечного продукта сборки просто. Вот два способа использования настроек сборки Xcode:
Вы можете выполнить автоматическую зачистку сборок во время выполнения Архивной сборки, установив:
- «Deployment Postprocessing» = «Yes»
- «Strip Linked Product» to «Yes»
- «Additional Strip Flags» to -rSTx
- Все остальные настройки зачистки на значения по умолчанию
Однако с этим методом вы должны быть осторожны, т.к. настройки одинаковые для всех таргетов. Кроме того, могут быть подводные камни при использовании менеджеров пакетов. Для Cocoapods здесь обсуждается проблема, которая связана с одним возможным решением (убедитесь, что все удаляемые фреймворки являются динамическими, если вы это делаете).
Использование сценария оболочки
Вы также можете запустить приведенный ниже скрипт в самом конце процесса сборки, прямо перед подписанием. Обратите внимание, что для некоторых менеджеров пакетов, таких как Cocoapods, может не быть какой-либо промежуточной точки между копированием фреймворков и подписанием, где можно запустить пользовательский скрипт. В этом случае подпись необходимо будет снова выполнить вручную после зачистки, потому что зачистка сделает подпись недействительной.
Ниже приведен пример скрипта, который вы можете использовать для удаления двоичных файлов. Огромное спасибо Филипу Бьюзику из Doordash за помощь!
#!/bin/bash set -e # if [ "Release" = "$" ]; then # Uncomment and only do this for release builds that you don't need to debug # Path to the app directory APP_DIR_PATH="$/$" # Strip main binary strip -rSTx "$/$" # Path to the Frameworks directory APP_FRAMEWORKS_DIR="$/Frameworks" # Strip symbols from frameworks, if Frameworks/ exists at all # . as long as the framework is NOT signed by Apple if [ -d "$APP_FRAMEWORKS_DIR" ]; then find "$APP_FRAMEWORKS_DIR" -type f -perm +111 -maxdepth 2 -mindepth 2 -exec bash -c 'codesign -v -R="anchor apple" "<>" &> /dev/null || (printf "%s\\n" "<>" && strip -rSTx "<>")' \; fi # Re-sign binaries as necessary # fi
strip_binary_symbols.sh hosted with ❤ by GitHub
В настройках этапов сборки убедитесь, что флажок «На основе анализа зависимостей» не установлен, чтобы скрипт запускался при каждой сборке. Подробнее об этом методе можно прочитать в нашей документации.
Примечание: Удаление двоичного кода необходимо выполнить перед кодовой подписью приложения, иначе подпись кода будет признана недействительной.
Почему это имеет значение
Как Apple сказала в своем видео про Xcode 14, размер приложения — это первое, что заметит ваш пользователь. И пользователи обращают внимание, как выразился недавний рецензент приложения American Airlines для iOS: 372 мб: приложение слишком большое, постоянно падает

Документация Play Console от Google имеет аналогичную рекомендацию:
Размер приложения является одним из самых больших факторов, которые могут повлиять на показатели установки и удаления вашего приложения. Важно регулярно отслеживать и понимать, как вы можете уменьшить размеры загрузки и установки вашего приложения.
— Документация Play Console
Хорошо… размер имеет значение… Если предположить, что это правда, как можно было бы избежать этой регрессии?
Нереально ожидать, что разработчики будут в курсе всех нюансов изменений версии платформы. Именно здесь вступает в действие непрерывный мониторинг. Если измерения выполняются вручную, регрессии не будут обнаруживаться последовательно до того, как они попадут в производство.

“Привет, ребята из Emerge! Мы только что загрузили нашу первую сборку, сделанную с помощью Xcode 14, и мы видим огромное увеличение в размере, которое в большей степени связано со строковыми таблицами DYLD. Возможно ли, что это артефакт вашего анализа или же это реальное явление? Если да, есть ли у вас какое-либо представление о том, что происходит? Некоторое беглое гугление было не очень полезным.”
Выше приведен Slack от одного из наших клиентов, который спрашивает об увеличении размера своего приложения после перехода на Xcode 14. Они заметили регрессию перед релизом с помощью инструментов непрерывной интеграции Emerge.
Устаревание битового кода, которое пришло как часть Xcode 14, безусловно, является крайним примером регрессии размера приложения. Однако мы обнаруживаем, что небольшие регрессии происходят все время, будь то обновление SDK или новая функция. Со временем эти изменения накапливаются и приводят к заметному ухудшению опыта взаимодействия пользователя с продуктом, что является еще одной причиной для того, чтобы заранее задуматься о размере вашего приложения.
Авторы статьи: Макс Топольски и Джош Коэнзаде.
Перевод и адаптация: SwiftBook.
Подписывайся на наши соцсети: Telegram / VKontakte
Вступай в открытый чат для iOS-разработчиков: t.me/swiftbook_chat
Смотри бесплатные уроки по iOS-разработке с нуля