Ошибки CocoaPods при сборке проекта

Я не могу создать проект, который использует CocoaPods. Я получаю следующие ошибки:

diff: /../Podfile.lock: No such file or directory
diff: Manifest.lock: No such file or directory error: 
The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.`

$ pod install, похоже, отлично работает и добавляет проект Pods к моей рабочей области. Я пробовал $ pod update, но это не помогает.

Кажется, что PODS_ROOT не устанавливается.

Podfile:

platform :ios, '6.0'

workspace 'Example.xcworkspace'
xcodeproj 'example/Example.xcodeproj' 

pod 'TestFlightSDK', '~> 1.3.0-beta.5'
pod 'TestFlightLogger', '~> 0.0.2'
pod 'CocoaLumberjack', '~> 1.6.2'
pod 'Reachability', '~> 3.1.0'
pod 'SBJson', '~> 3.2'
pod 'MKMapViewZoom', '~> 1.0.0'

Ответ 1

У меня была аналогичная проблема, когда я внес серьезные изменения в мой подфайл. Мое решение состояло в том, чтобы удалить файл рабочей области и снова запустить pod install:

rm -rf MyProject.xcworkspace
pod install

Ответ 2

TL;DR:. Скорее всего, ошибка с Xcode и закрытие и повторное открытие проекта - это, как правило, самое простое исправление. Предполагая, что все остальное настроено правильно.


Иногда я получаю ту же ошибку при удалении каталога Pods, а затем запускаю pod install.

В информации о проекте все выглядит правильно:

enter image description here

Однако, когда я перехожу к целевым настройкам User-Defined Build, запись PODS_ROOT либо полностью отсутствует, либо пуста для одной или нескольких конфигураций. Это вызывает следующую ошибку при сборке:

enter image description here

Самое простое исправление - закрыть проект в Xcode и снова открыть его.

Если вы перейдете к целевому Настройки сборки и отфильтруете Все, теперь вы увидите запись PODS_ROOT без ошибок:

enter image description here

Теперь он должен строиться без ошибок.


Примечание. Даже эта проблема с официальным AFSetworking iOS для Cocoa Pods 'имеет такую ​​проблему, что заставляет меня думать, что это ошибка с Xcode.

Альтернативное решение заключается в том, чтобы вручную изменить конфигурацию на None, а затем вернуться к исходному значению:

enter image description here

Ответ 3

Перейдите к целевому Build Settings и убедитесь, что значение PODS_ROOT равно ${SRCROOT}/Pods в разделе "Пользовательский".

enter image description here

Ответ 4

update: a podfile.lock необходим, а не должен игнорироваться при управлении версиями, он отслеживает версии библиотек, установленных на определенной установке pod. (Это похоже на gemfile.lock и composer.lock для управления зависимостями rails и php, соответственно). Чтобы узнать больше, прочитайте docs. Кредит отправляется cbowns.


В моем случае я сделал то, что я делал уборку дома для своего проекта (т.е. разветвлял интеграционные тесты как подмодуль git.. удаление дубликатов файлов и т.д.).. и подтолкнуло конечный результат к git удаленное репо.. все клиенты, которые клонировали мое репо, страдали от вышеуказанной ошибки. Вдохновленный комментарием Hlung выше, я понял, что были некоторые скрипки pod-скриптов, которые пытались запустить против некоторых несуществующих файлов. Поэтому я перешел на фазу сборки цели и удалил все оставшиеся фазы, которые имели какое-либо отношение к cocoa pods (и комментарий Hlung он предлагает удалить Copy Pods Manifest.lock и copy pod resources.. мои были названы разными, может быть, b/c я используя Xcode 5. Точка состоит в том, чтобы удалить эти фаны сборки.)

Ответ 5

Итак, кажется, что CocoaPods не установил конфигурацию для моего проекта. Они должны основываться на Pods.xcconfig, который находится в Pods/Target Support Files/Pods. Чтобы заставить это работать, я должен был сделать следующее:

  • Перетащите этот файл в мой проект Xcode в Xcode, не копируя.
  • Теперь в нашем проекте есть ссылка, мы можем установить конфигурации: enter image description here

У меня была другая ошибка сборки, которая может быть или не быть связана. Путь к оболочке script, определенный в Copy Pods Resources, был неправильным.

"${SRCROOT}/Pods/Pods-resources.sh"

Решено неправильно. Казалось, что SRCROOT добавляет дополнительный каталог, который не существовал на пути. Поэтому я жестко закодировал путь к папке проекта.

Это позволило мне создать.

Почему так много вещей, которые должны сэкономить ваше время, в конечном итоге съесть его?

Примечание: Пожалуйста, см. @abood ответ для объяснения.

Ответ 6

У меня такая же проблема, как это работает:

  • В Xcode:
    • Clean
    • Удалить производные данные в Xcode/Window/Organizer/Project/Your Project
    • Pod (он содержит файлы конфигурации, удаляет файлы не только ссылки!)
    • Удалены все ссылки на конфигурационные файлы pod для каждой цели в Project/Configurations (debug/release)
    • Удалены "Цели/Сформировать фазы/Ресурсы копий данных" из всех целей
    • Удалены "Цели/Настройки сборки/Пользовательские/PODS_ROOT" из всех целевых объектов
  • Выйти из Xcode
  • В каталоге проекта:
    • rm -rf Pods
    • (Необязательно) rm -rf YourProject.xcworkspace
    • rm -rf Podfile.lock
  • pod install
  • Откройте файл YourProject.xcworks в Xcode

Ответ 7

Я избавился от одной и той же проблемы, выполнив следующие шаги:

  • Xcode->Product->Clean Build Folder (удерживайте alt key на продукте, чтобы увидеть его)
  • Откройте Xcode->Window->Organizer и выберите вкладку Projects. Затем найдите проект и удалить derived data проекта.

Ответ 8

Просто разрешите, выполнив следующие действия:

  • (sudo) gem install cocoapods

  • pod install

  • очистить и построить

похоже, проблема была вызвана тем, что один из наших членов команды имеет более новую установку gem cocoapods.

Ответ 9

  • открыть файл .xcodeproj в возвышенном тексте
  • удалите эти две строки, если у вас есть папки с чистыми папками, я имею в виду, если вы получили ошибки выше, после удаления папки с папками

Ответ 10

Если бы тот же самый вопрос, говорящий /Pods/Pods -resources.sh: Нет такого файла или каталога даже после удаления файлов и т.д., связанных с контейнерами.

Избавьтесь от него, перейдя в цель → Сформировать фазы, а затем удалив фазу сборки "Копировать ресурсы подстраки".

Ответ 11

У меня была такая же проблема в последнее время. Я пробовал все возможные советы, ничего, кроме этого плагина, работал у меня:

https://github.com/kylef/cocoapods-deintegrate

После очистки текущей интеграции cocoapods, что нужно удалить, это Podfile, Podfile.lock и .xcworkspace. Затем просто установите все заново.

Надеюсь, я помогу кому-то с этим.

Ответ 12

Эта проблема решена.

  • Выберите цель вашего проекта
  • Выберите "Настройки сборки"
  • Открытый раскрывающийся список User-Defined
  • Изменить значение ключа PODS_ROOT на ${SRCROOT}/Pods

Снимок экрана для вышеуказанных шагов

Ответ 13

Я думаю, что здесь есть ошибка.
Для меня я удаляю папку Pods и Podfile.lock и снова pod install, чтобы решить проблему.
Это сообщение игнорируется..: (

Ответ 14

Это было не очень интуитивно. Я перешел к настройкам базового проекта, а затем жестко закодировал пути к моим pod.lock и pod.manifest в разделе "Проверяющие элементы" Manifest.lock, потому что они остались в разных папках на самом деле, поэтому мои пути выглядели так:

diff "/Users/admin/Desktop/Experimental/projectfolder/Podfile.lock" "/Users/admin/Desktop/Experimental/projectfolder/Pods/Manifest.lock" > /dev/null
if [[ $? != 0 ]] ; then
    cat << EOM
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
EOM
    exit 1
fi

Ответ 15

Вы можете попробовать следующее. Это исправлено для меня.

  • установить gem install cocoapods-deintegrate
  • установить gem install cocoapods-clean
  • перейти к деинтеграции
  • pod clean
  • pod install

Плагины будут удалены из cocoapods для вашего проекта и будут установлены только недавно.

Ответ 16

В моем случае это была тестовая цель, из которой я удалил все контейнеры из моего podfile (потому что я добавил модули, которые позже понял, что мне не нужно в этой цели). Ни одно из других решений здесь не работало для меня.

  • Перейдите на вкладку "Фазы построения" в настройках проекта для целевого что вызывает проблемы.

  • Удалите раздел с названием "Проверять подписи манифеста" и "Копировать подписи" Ресурсы "

  • Внутри "Link Binary With Libraries" удалите libPods-YourTarget.a

  • В настройках вашего проекта на вкладке "Информация" разверните "Конфигурации" и установите для параметра target значение None для отладки и выпуск. (Это устранит пару недостающих предупреждений файла)

  • Удалить данные, полученные из проекта (Окно > Проекты > Удалить [next к вашему проекту) и перезапустить Xcode. Создайте/запустите цель.

Ответ 17

Это сделало мой день!

  • Удаление файла Podfile.lock в папке проекта
  • Удаление папки Pods в папке проекта
  • Выполнить pod install в папке проекта
  • Сделайте "Очистить" в Xcode
  • Перестройте свой проект

Ответ 18

В моем случае проблема была неправильной. решение здесь http://guides.cocoapods.org/using/troubleshooting.html

Если что-то не работает, прежде всего убедитесь, что вы не полностью переопределяя любые параметры, установленные из файла Pods.xcconfig в настройках ваших проектов. Чтобы добавить значения к параметрам из вашего проектов, добавьте список значений с $(унаследованным).

Ответ 19

У меня была эта проблема.

То, как я исправил это, - это полностью удалить приложение Pod и его повторное внедрение. Обязательно удалите "Копировать ресурсы Pods" и "Check Pes Manifest.lock" из "Сформировать фазы" по всем целям, как указано здесь: Как удалить CocoaPods из проекта?

Ответ 20

Чтобы избавиться от этой ошибки, мне нужно было удалить каталог Pods и удалить файл Podfile.lock.

Ответ 21

В моем случае я поставил Podfile.lock и Manifest.lock в исходный элемент управления, но я забыл добавить файлы Pods-Project.debug(release).xcconfig в исходное управление (ошибочно добавляя *.xcconfig к .gitignore), то я получил те же ошибки компиляции по той же причине, PODS_ROOT не устанавливается.

Итак, если цель состоит в том, что после клонирования репо проект может сразу создавать и запускаться, без установки CocoaPods на компьютере, вы либо добавляете всю директорию Pods в исходный элемент управления, либо добавляете Podfile.lock, Manifest.lock, проект xcconfig файлы и файлы Pods xcconfig для управления исходным кодом.

Я не поместил закрытый .xcconfig, который объединяет настройки сборки с настройкой CocoaPods по умолчанию для управления исходным кодом.

Ответ 22

Я создал несколько целей, прежде чем когда-либо использовал pods. Позже, когда я начал компилировать другие цели, мне пришлось добавить link_with со списком целей в моем подфайле.

Ответ 23

У меня была такая же проблема. После повторного выполнения моих недавних шагов я обнаружил, что причиной << → было добавление объявления цели для новой цели, а затем запуск pod install,:

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

Сброс моей ветки и очистка моего проекта не сработали, так как Cocoapods модифицировал хотя бы один файл, который не находится под контролем источника. Я знаю это, потому что, как только я reset удаленная ветвь до фиксации перед добавлением дополнительной цели и повторно клонировала репо, проблема больше не существовала.

Ответ 24

Если у вас есть цель watchOS: я обнаружил, что внезапно, когда струйки в расширении часов, но не в самой часе, сами побили эту ошибку. Решение заключалось также в добавлении стручков в целевую аудиторию.

Ответ 26

если вы добавили новую цель после создания Podfile, просто удалите Podfile, Podfile.lock, папку Pods и рабочее пространство тогда init pods → затем поместите свои стручки pod install

Ответ 27

Just Press Product → Clean → Build → Done

Ответ 28

Внесите изменения в подфайл, как показано ниже:

Старый файл подкачки

target :EmojiKeyboard, :exclusive => true do

Измененный файл подкачки

target 'EmojiKeyboard' do

Он будет работать нормально.