PODS_ROOT и другие переменные окружения pods не устанавливаются при компиляции приложения Ionic

Я создал приложение Ionic 2, которое использует Intercom (стороннее расширение). Домофон устанавливается с помощью кокоподов.

При компиляции моего приложения мне выдают ошибки:

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.

Это генерируется на этапе сборки [CP] Check Pods Manifest.lock:

diff "${PODS_PODFILE_DIR_PATH}/Podfile.lock" "${PODS_ROOT}/Manifest.lock" > /dev/null
if [ $? != 0 ] ; then
    # print error to STDERR
    echo "error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation." >&2
    exit 1
fi
# This output is used by Xcode 'outputs' to avoid re-running this script phase.
echo "SUCCESS" > "${SCRIPT_OUTPUT_FILE_0}"

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

Почему эти переменные пустые?

У меня есть дополнительные фазы сборки для [CP] Copy Pods Resources а также [CP] Embed Pods Frameworks которые запускают некоторые сценарии оболочки. Я попытался изменить их порядок без удачи.

Мои Podfile.lock и Podfile (которые все равно были сгенерированы автоматически) кажутся хорошими:

Podfile:

# DO NOT MODIFY -- auto-generated by Apache Cordova
platform :ios, '8.0'
target 'niix' do
    project 'niix.xcodeproj'
    pod 'Intercom', '~> 3.2.2'
end

Podfile.lock:

PODS:
  - Intercom (3.2.12)

DEPENDENCIES:
  - Intercom (~> 3.2.2)

SPEC CHECKSUMS:
  Intercom: 3119e8ebf76d3da425bab717a08067398fcabfe6

PODFILE CHECKSUM: f99283bb8a4e56cb037a02390d2fbc4e76c97db9

COCOAPODS: 1.3.1

Там нет ошибок при запуске pod installи все файлы, которые я ожидаю, присутствуют.

Вещи, которые я уже пробовал:

  • Бег pod install (конечно)
  • Бег pod deintegrate, работает Product > Clean в XCode, перезапускается pod install
  • Удаление вручную Podfile.lock а также Pods каталог, запустив Clean в XCode, а затем повторно запустив pod install
  • Хорошего ночного сна и очередной попытки на следующее утро!

Что следует отметить:

  • Я убегаю от project.xcworkspace не project.xcodeproj
  • Я использую последнюю стабильную версию XCode 8.3.3
  • Я использую последнюю версию Cocoapods 1.3.1

1 ответ

Решение

Я потратил много времени, пытаясь решить эту проблему, и ничего не получил. Приложение было построено с использованием Ionic 2, поэтому фактический исходный код хранится в другом месте и встроен в собственное приложение XCode.

Из-за этого я решил удалить весь каталог XCode. .xcodeproj, .xcworkspace, все. Затем я перестроил из Ionic.

На второй сборке я увидел вот это Pods каталог был там и все было так, как должно быть. Я мог скомпилировать и запустить первый раз без каких-либо проблем.

Я предполагаю, что первая сборка не удалась, потому что у меня не было установленных Cocoapods, поэтому Ionic молча не смог запустить pod install Команда при настройке. Я думаю, что это немного отличается от традиционной установки, поэтому я не мог просто запустить pod install после этого.

Короче говоря, это было исправлено путем удаления проекта iOS:

ionic cordova platform rm ios

И повторно добавив его:

ionic cordova platform add ios

А потом здание:

ionic cordova run ios --device

Но сначала убедитесь, что у вас уже установлены Cocoapods.

Другие вопросы по тегам