Xcode 9 е над 10 GB, но това е само началният му размер ...

накараме

Всички знаем, че Xcode от няколко години се бори да бъде малко настрана и дори Apple призна това още на WWDC 2012. Ето какво каза Матю Фирлик (директор на Технологиите за развитие в Apple) по това време:

Миналата година [на WWDC 2011], когато изпратихме Xcode 4.1, размерът ни на изтегляне беше малко над 4 гигабайта и не мисля, че има какво повече да се каже за това. Когато изпратихме Xcode 4.2, успяхме да намалим този размер на пакета до около 1,5 гигабайта, като направихме част от старото съдържание - като по-старите симулатори на iOS - за изтегляне при поискване.

По онова време това беше голямо и добре дошло подобрение, но за съжаление не трябваше да продължи: след като се подложи на катастрофалната си диета през 2012 г., Xcode оттогава беше зает на десертната пътека и нарасна далеч отвъд „няма какво повече да се казва за този ”размер на Xcode 4.1.

Нека да разгледаме някои цифри:

Изтеглянето на версията е инсталирано
Xcode 5.0 2.05 GB 4.37 GB
Xcode 6.0 2,62 GB 5.18 GB
Xcode 7.0 3.85 GB 7,79 GB
Xcode 8.0 4.41 GB 9,97 GB
Xcode 9.0 5,37 GB 10.41 GB

Сега се очаква някакво естествено колебание - както Firlik каза още през 2012 г., Apple може да коригира своя избор на симулатори, за да намали първоначалното изтегляне за сметка на възможни по-късни изтегляния.

Също така е важно да се отбележи, че Xcode е добавил функции през тези години, като Swift в Xcode 6 или App Thinning в Xcode 7, така че някакъв естествен прираст е неизбежен. Много разработчици - включително и аз! - имаме дълъг списък с желания от функции, които искаме да видим в Xcode 10, така че има безкраен компромис между размера на рязане и добавянето на функции.

СПОНСОРИРАН Дизайн като 9:41. DetailsPro е ново приложение за дизайн на потребителски интерфейс, създадено специално за дизайнери на Apple. За първи път можете да проектирате изцяло в редактируем SwiftUI на живо, всички без въобще да пишете код. DetailsPro има безплатна версия и много дизайнерски шаблони, които да проучите и да започнете.

Но изчакайте - има още!

Целият този допълнителен растеж означава, че Xcode 9 е повече от два пъти по-голям от Xcode 5, но дори това не е цялата история. Виждате ли, Xcode е малко подъл: 10.41 GB, които Xcode 9 заема, всъщност са само началният му размер.

Всеки път, когато свързвате устройство към компютъра, може да сте забелязали, че Xcode обича да прекарва известно време в „Обработка на файлове със символи“ или „Подготовка на поддръжка за отстраняване на грешки“ за това устройство. Това се случва веднъж за версия на iOS, въпреки че е изключително фино - дори преминаването от iOS 11 beta 9 към iOS 11 beta 10 ще накара този процес да се повтори.

Това, което Xcode прави, е да конфигурира своята система за поддръжка на устройства, така че да разбира всички рамки, които се доставят във версията на iOS, която сте свързали, което от своя страна означава, че може да символизира регистрационни файлове за сривове. Това не е малко количество данни - можете да очаквате Xcode да сдъвче 2-3GB за всяка версия на iOS, която свържете.

Проблемът е, че Xcode изглежда никога не иска да премахне поддръжката на устройството, след като бъде инсталиран, така че ако сте активен разработчик на iOS, който активно не подрязва това, има голяма вероятност да намерите около 40 GB или повече от данни за поддръжка на устройства - повечето от които са за версии на iOS, за които дори повече не мислите.

В моя случай наскоро завърших писането на книга, в която се обучават всички нови API на iOS в iOS 11, което означава, че съм инсталирал iOS 11 бета от 1 до 10 на своите устройства. Ако не бях почиствал директорията за поддръжка на устройства на Xcode, всеки от тези комбинирани щеше да заема огромен 20GB пространство, въпреки че всяка бета версия на практика беше остаряла веднага след излизането на нейния наследник.

Спестете 20 GB с този странен трик

Първоначалният размер на Xcode за инсталиране е извън нашия контрол, но удълженият му растеж след инсталиране е нещо, което можете да намалите. Първо инсталирайте страхотния инструмент GrandPerspective, след което го насочете към вашия

Това е мястото, където Xcode съхранява три парчета от своята екосистема:

  1. Директорията за поддръжка на устройства за iOS съхранява данни за отстраняване на грешки за отделни версии на iOS.
  2. Директорията за изведени данни е областта за съхранение, която Xcode използва при изграждането на вашите приложения.
  3. Директорията CoreSimulator е мястото, където живеят данните на симулатора на Xcode, включително всички приложения, които сте инсталирали в симулатори.

Имайте предвид, че всеки от тези симулатори има пълна функция, чак до тези примерни снимки, които виждате в приложението Снимки. Ако сте любопитни, опитайте да търсите

/ Библиотека/Програмист за “IMG_0005.JPG” - намерих 90 копия на една и съща снимка. Хубаво!

Когато GrandPerspective завърши - и може да отнеме известно време - ще видите нещо като изображението по-долу:

GrandPerspective ви показва общото пространство, заето от сканираната директория в долния ляв ъгъл (20,7 GB за мен), но можете също да задържите курсора на мишката върху отделни файлове, за да видите какви са те и колко заемат.

За да улесня четенето на нещата, добавих някои анотации към моите, за да можете да добиете представа къде отива цялото пространство:

Добре, така че може би съм бил досаден, но въпросът е, че по-голямата част от файловете, които можете да видите в моята директория за разработчици, не са необходими. Можете буквално просто да ги изтриете направо и Xcode ще пресъздаде битовете, от които всъщност се нуждае, когато следващото включване на iOS устройство.

Ако искате да изчистите отделни директории на симулатора, можете, но честно казано, най-лесното нещо е да прикачите директориите за поддръжка на устройства - те обикновено са над половината от използваното пространство.

Ето как да го направите:

  1. Щракнете с десния бутон на мишката върху един от големите файлове, намерени GrandPerspective - той ще се нарича dyld_shared_cache_arm64 - и изберете Reveal In Finder.
  2. В Finder задръжте клавиша Cmd и натиснете няколко пъти курсора нагоре, докато накрая изберете папка, наречена „iOS DeviceSupport“.
  3. Върнете се в тази папка и ще видите, че има директории за номера на версиите на iOS, напр. 9.3.5 (13G36), 10.3.2 (14F89) и 10.3.3 (14G60).
  4. Изберете всички, изтрийте ги, след което изпразнете кошчето.
  5. Включете вашите iOS устройства, след което стартирайте Xcode, за да може да изтегли символите, от които всъщност се нуждаете.
  6. Чувствайте се самодоволни.

Няма ли по-добър начин?

Разбираемо е, че Xcode се нуждае от поддръжка на устройство, за да функционира правилно. Въпреки това настояването му за запазване на цялата поддръжка на устройството е безполезно и би било чудесно да се види някаква работа, която да се прави, за да се подстригва автоматично.

Например, би ли било толкова лошо за Xcode да сканира поддръжката на устройството си всеки път, когато се стартира, и да каже „е, те не са свързали нито едно от тях от три месеца; да го бракуваме “? Може дори да е опция, която по подразбиране е деактивирана, ако Apple смята, че толкова много хора искат поддръжка на стари устройства - но поне дайте шанс на останалите да използваме Xcode по-малко от 50 GB.

Xcode: Обичам те, но се надявам да помислиш за това като намеса и да останеш далеч от въглехидратите по време на Xcode 10.

И накрая, в случай че сте любопитни ...

Колкото и да е трудно да се претегли една версия на Xcode срещу друга, тъй като съдържанието им се различава, дълбоко несправедливо е да се претегля една IDE срещу друга - това, което Apple избира да обедини и какво Google избира да обедини, няма почти никаква връзка.

И все пак, признайте си: малко сте любопитни как Xcode се подрежда срещу Android Studio, което е инструментът, на който нашите колеги от Android разчитат за създаване на приложения.

Е, за да задоволя любопитството ви, ако не друго, позволете ми да преправя тази маса ...

Изтеглянето на версията е инсталирано
Xcode 5.0 2.05 GB 4.37 GB
Xcode 6.0 2,62 GB 5.18 GB
Xcode 7.0 3.85 GB 7,79 GB
Xcode 8.0 4.41 GB 9,97 GB
Xcode 9.0 5,37 GB 10.41 GB
Android Studio 2.3 486MB 861MB

По думите на Матю Фирлик, не мисля, че има какво повече да се каже по този въпрос.

СПОНСОРИРАН Дизайн като 9:41. DetailsPro е ново приложение за дизайн на потребителски интерфейс, създадено специално за дизайнери на Apple. За първи път можете да проектирате изцяло в редактируем SwiftUI на живо, всички без въобще да пишете код. DetailsPro има безплатна версия и много дизайнерски шаблони, които да проучите и да започнете.

За автора

Пол Хъдсън е създателят на Hacking with Swift, най-изчерпателната поредица от книги на Swift в света. Той е и редактор на Swift Developer News, поддържащ базата знания на Swift и лектор на Swift събития по целия свят. Ако сте любопитни, можете да научите повече тук.