Медленная компиляция приложения с новым обновлением Sierra

Когда я обновил свой Mac до macOS Sierra 10.12.1, время работы приложения на реальном устройстве значительно увеличилось. Сборка «Запуск пользовательского скрипта Embed Pods Frameworks» и «Копирование стандартных библиотек Swift» занимает более 30 минут.

Кто-то сталкивается с той же проблемой?


person psu    schedule 26.10.2016    source источник
comment
У меня такая же проблема, и я не могу найти решение. Я дам вам знать, если узнаю, в чем проблема   -  person kikettas    schedule 26.10.2016
comment
Кто-то здесь предложил создать нового пользователя: stackoverflow.com/q/39934254/2491738. Хотя сам не пробовал..   -  person ken    schedule 26.10.2016
comment
@ken да, я только что протестировал его, и он немного быстрее. Я буду использовать эту временную учетную запись пользователя, пока Apple решит ее исправить... Спасибо!   -  person kikettas    schedule 26.10.2016
comment
Только что проверил свое приложение на другом компьютере, без нового обновления macOS - все работает быстро и нормально, поэтому я думаю, что пользователь не проблема, но я попробую с новым пользователем Apple...   -  person psu    schedule 26.10.2016
comment
На моем втором маке после обновления Sierra и использования нового GM Xcode все нормально собирается.   -  person psu    schedule 26.10.2016


Ответы (4)


Проверьте свой брелок. После обновления до Sierra до 10.12.1 у меня было более 500 копий одного из моих сертификатов, а несколько других дублировались несколько сотен раз.

Я удалил все дубликаты и оставил только по одному, а время подписи кода сократилось с 30 секунд на фреймворк до примерно 1 секунды на каждый.

Я не знаю, как и почему сертификаты были продублированы, но время возникновения проблемы предполагает, что это произошло из-за обновления Sierra.

person Troy    schedule 28.10.2016
comment
Это было так! Спасибо @Troy - person psu; 28.10.2016
comment
Удаление повторяющихся цепочек ключей у меня не работает. Все еще требуется 1-2 минуты, чтобы кодировать фреймворки подписи для кокосов при сборке на реальном устройстве. - person Johnny; 31.10.2016
comment
@Johnny Вы испытываете 1-2 минуты на фреймворк или 1-2 минуты на все фреймворки? Если второе, сколько у вас фреймворков? - person Troy; 31.10.2016
comment
@Troy Для всех фреймворков в моем подфайле всего 45 библиотек. Я разместил аналогичный вопрос в stackoverflow: stackoverflow.com/questions/40281040/ Похоже, что другие разработчики сталкиваются с этой проблемой. Также попробовал последнюю бета-функцию CocoaPods для распараллеливания подписи кода: 6088 Все еще не повезло :( - person Johnny; 31.10.2016
comment
@Johnny Я вижу, что подписание кода занимает секунду или две на каждую структуру, поэтому 1-2 минуты соответствуют моему опыту, учитывая ваши 45 библиотек. Было бы здорово ускорить подписание кода, но я не уверен, что это возможно. CocoaPods может изменить способ упаковки фреймворков или лучше кэшировать результаты подписи кода. - person Troy; 31.10.2016
comment
@Troy Нашел альтернативное решение, я разместил ответ ниже, возможно, вы можете попробовать! :) - person Johnny; 01.11.2016
comment
Это ускорило время компиляции. меня сводили с ума - person zirinisp; 16.11.2016
comment
Это был ответ и для меня! Всего один сертификат продублирован более ста раз. - person bcherry; 24.03.2017

2017-03-23 ​​Обновление

Вы можете пропустить установку бета-версии CocoaPods, потому что флаг COCOAPODS_PARALLEL_CODE_SIGN также оценивается в текущей сборке выпуска.

Оригинальный ответ

Нашел альтернативное решение, не лучшее, но хотя бы ускоряющее. Меня устраивает)

Несколько дней назад Cocoapods выпустили новую бета-версию.

Что позволяет подписывать параллельный код при запуске сценария среды встраивания (https://github.com/CocoaPods/CocoaPods/pull/6088#issuecomment-257441733)

  1. Установите последнюю бета-версию

gem install cocoapods --pre

  1. Перейдите к настройкам целевой сборки Xcode и щелкните значок + вверху.

введите здесь описание изображения

  1. Установите COCOAPODS_PARALLEL_CODE_SIGN на true

введите здесь описание изображения

И наслаждайтесь увеличенной скоростью строительства!

person Johnny    schedule 01.11.2016
comment
Ницца. Это тоже очень помогает. Все 8 ядер сейчас работают над подписью кода одновременно. Следующий шаг — ускорить время компиляции Swift! - person Troy; 01.11.2016
comment
Благодарю вас! Эта проблема сводила меня с ума полторы недели. - person David Wong; 02.11.2016
comment
как можно сравнить сроки? я ничего не вижу - person aelam; 14.12.2016
comment
Для тех, кому интересно, это доступно с CocoaPods v1.2.0. Проверить - pod --version - person Alexandre G; 03.07.2017
comment
это сработало для меня: stackoverflow.com/questions/20649298/ - person Wojtek Dmyszewicz; 30.03.2018

Если брелок выглядит хорошо, но есть проблемы — проверьте настройки и удалите все дубликаты в этом файле: ~/Library/Preferences/com.apple.security.plist

Для типичной установки этот файл должен содержать только одну запись со ссылкой на цепочку ключей для входа в систему.

person Max Potapov    schedule 15.11.2016
comment
Этот список был проблемой для меня. Удаление примерно пяти дубликатов диктов цепочки ключей для входа в систему сократило время архивирования с нескольких часов до нескольких минут. - person Cfr; 06.02.2017
comment
То же самое и для меня, отличная находка! - person Tokuriku; 10.02.2017
comment
Я не могу найти этот файл на 10.12.3 - person Zell B.; 12.02.2017

Все вышеупомянутые подходы не работали для меня. Что очень помогло, так это resetting the System.keychain размером 25 МБ. Это ускорило время сборки до 40% в нашей системе непрерывной интеграции.

Анализ

du -h /Library/Keychains/System.keychain
good: 60K
bad: 25MB

Сбросить

sudo systemkeychain -vfcC [password]

Внимание: если у вас есть важные ключи/сертификаты/пароли, хранящиеся в вашей цепочке ключей System.keychain, вы можете экспортировать их перед выполнением сброса, а затем повторно импортировать по требованию. Мне это было не нужно. Мой новый System.keychain не имеет содержимого, и строительные проекты работают абсолютно нормально.

person Sven Driemecker    schedule 26.07.2017