Подтвердить что ты не робот

Пользовательские сценарии командной строки Xcode замедляют время компиляции

Тестирование любых изменений в моем проекте Xcode стало упражнением в терпении всякий раз, когда я строю. После того, как все исходные файлы скомпилированы, я получаю следующее сообщение в окне активности вверху Xcode:

"Запуск 3 из 3 пользовательских сценариев командной оболочки"

Я не добавил никаких собственных скриптов оболочки, но я использую довольно много зависимостей через Cocoapods, и я использую 2 фреймворка для среды сборки Crashlytics и Tapstream. Crashlytics требует, чтобы вы добавляли run script на этапах сборки, кроме этого, я не знаю, откуда берутся другие, и они кажутся узким местом в моем времени сборки.

Может ли кто-нибудь просветить меня о том, что происходит и как я могу ускорить его?

4b9b3361

Ответ 1

Я не могу просветить вас, но я могу рассказать вам, как я остановил свою работу. Это также произошло после установки Cocoapods. В моем основном проекте Target, под Build Phases, я заметил две записи под названием Check Pods Manifest.lock, а другой - Copy Pods Resources.

В обоих случаях был отмечен непроверенный вариант Run script only when installing. Я проверил оба и, по крайней мере, пока мои проекты строятся и работают нормально, не запуская скрипты.

Это отвратительный ответ, потому что я не могу дать вам больше информации, и это может даже не работать для вашего дела, поэтому, надеюсь, кто-то приходит и просвещает нас.


ВОЗМОЖНЫЕ ВОПРОСЫ ВНЕШНЕГО ОБРАЗЦА

Таким образом, у меня просто было разочарование, отлаживающее проблему, когда установленная папка библиотеки NSLocalized strings файлов не работала. Оказывается, это потому, что я проверил вариант, упомянутый выше. Pods-resources.sh, который имел линии для установки пакета, не работал в режиме отладки. Он работает только при установке - конечно! Что-то, на что нужно следить.

Дополнительная информация в этом вопросе:

NSLocalizedStringFromTable не работает в зависимости от CocoaPod

Ответ 2

Чтобы исправить медленную проблему "Копировать ресурсы контейнеров", я выяснил решение только копировать ресурсы, если они еще не были скопированы.

С этой целью мы должны исправить файлы * -resources.sh, созданные cocoapod, так что процедура копирования выполняется только в том случае, если сгенерированный файл в целевой директории не существует (он создается при первой копии). Пока этот целевой каталог существует и включает этот автогенерированный файл, фаза ресурсов копирования пропускается. Это экономит мне около 30 секунд в моем проекте (конечно, зависит от размера вашего проекта). Для этого выполните следующие действия:

Создайте файл исправления с именем copy_pod_resources_once.patch в корневом каталоге проекта с помощью следующего содержимого:

5a6,13
> NONCE_FILE="${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/copyresources-done.nonce"
> if [ -f "$NONCE_FILE" ]; then
>    echo "already copied resources"
>    exit 0
> else
>    touch "$NONCE_FILE"
> fi
> 

В подфайле для вашего проекта добавьте следующий post install hook:

post_install do |installer_representation|
    system('find "./Pods/Target Support Files" -name "*-resources.sh" | xargs -I{} patch -p0 {} -i ./copy_pod_resources_once.patch')

    <other post install stuff>
end

Ответ 3

Для меня это был Crashlytics. Были некоторые выдающиеся изменения, так как Crashlytics делает автоматическое обновление своих файлов. я reset/удалил их и перестроил и прошел мимо него.

Таким образом, общий ответ может заключаться в проверке любых сторонних компонентов и обеспечении правильной работы.

Ответ 4

Вероятно, вы не будете работать для вас, но очистка проекта исправила его для меня (Product → Clean)

Ответ 5

Как сказал Рамсел в этом ответе, fooobar.com/questions/210327/... Я также пошел на Build Phases и очистил все возможные ссылки на POD, попробовав большинство других решений, и три проблемы сборки, показанные в отношении Pods, были очищены.

Но тогда один файл, который не был указан в навигаторе проекта XCode, отсутствовал, но они были в папке "Загружен" Git Zip! Очевидно, я скопировал его и включил в проект XCode и попробовал запустить его работает чисто!:)

Ответ 6

У меня была аналогичная проблема в моем проекте (однако, не используя Cocoapods). В результате проблема была связана с приложением, внешним по отношению к Xcode (Spritebuilder), каким-то образом удерживающим ресурс в моем проекте Xcode, когда он разбился. Я заставил приложение, отличное от xcode, закрыть, и теперь проблема исчезла.

Ответ 7

Проверьте, что у вашего имени папки проекта есть пробел. Поскольку пространство создает проблему в пути к каталогу, например, "SRCROOT". Я удалял пробелы и выполнял проект нормально.

Ответ 8

Я обнаружил, что это часто случается со мной. Точная причина неизвестна, но, по-видимому, она переключается между ветвями git, которые имеют различия в том, какие контейнеры используются. В моем случае просто касание файла Pods-xxx-Resources.sh оболочки script заставляет его ускорить резервное копирование.