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
в STDERROR
echo
из приведенного выше сценария, и оба являются пустыми. Вероятно, я могу обойти эту конкретную ошибку, исправив эти пути самостоятельно, но явно что-то еще более фундаментальное нарушено, поэтому мне нужно исправить саму проблему.
Почему эти переменные пустые?
У меня есть дополнительные фазы сборки для [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.