objective-c - iOS - Сбой сборки с помощью CocoaPods не может найти файлы заголовков



12 Answers

Обновить

Я обновил это с момента моего первоначального ответа, который получил downvote, поэтому я надеюсь, что это поможет. И если это произойдет, надеюсь, он вернет мой голос.

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

Это должно помочь с любыми конфликтами и правильно импортировать исходный код.

objective-c ios cocoa build cocoapods

У меня есть проект iOS с использованием CocoaPods. Все работало гладко, пока другой разработчик не начал работать над тем же проектом. Он внес некоторые изменения (только для кода, насколько я знаю) и создал новую ветку в репо. Я проверил его ветку и попытался ее построить, но я получаю сообщение об ошибке: файл ASLogger / ASLogger.h не найден.

Даже если я удалю весь проект и сделаю новую копию и использую установку «pods install». неудача сборки все еще существует. Вы не знаете, где проблема? Если вам нужна дополнительная информация, просто спросите.




Заголовки файлов, вы будете смертью меня ...

Наконец, он получил работу, добавив (включая цитаты)

"${PODS_ROOT}/BuildHeaders"

к записи «Путь поиска заголовка пользователя» и проверке «рекурсивный».




Оба других ответа здесь не помогли. Я нашел еще 2 проблемы, которые могли бы исправить:

EDIT. Вы можете проверить символическую ссылку таким образом: создать текстовый файл с именем «проверка» без расширения. скопируйте эти строки в него:

file=/Users/youUserName/XcodeProjectName/Pods/BuildHeaders/SVProgressHUD/SVProgressHUD.h
if [[ ! -e $file &&  -L $file ]]; then
  echo "$file symlink is  broken!"
else
  echo "symlink works"
fi

Затем перейдите на терминал, перейдите в папку, где находится ваш файл проверки, и введите

bash check



Если ни одно из вышеперечисленных не работает для вас, и вы обнаруживаете эту ошибку, потому что вы просто переключились на use_frameworks! в вашем подпикселе, читайте дальше:

Я пробовал все вышеперечисленные решения и многое другое, прежде чем узнал, что это не касается путей заголовков поиска вообще в моем конкретном случае; это, когда вы переключаетесь на use_frameworks! в вашем подфайле вам больше не нужно включать фреймворки в свой заголовок моста, и на самом деле Xcode будет бросать очень бесполезную ошибку «неспособность найти заголовок».

Что вам нужно сделать, так это удалить все импорт из файла заголовка моста и вместо этого использовать import Module Swift в ваших отдельных файлах Swift по мере необходимости, как и для фреймворков Swift.

И если вы используете какой-либо из заголовков фреймворков в своих классах Obj-C (в моем случае у нас есть класс удобства, который использовал FBSDK), вам нужно изменить его с локального на глобальный импорт (это означает изменение #import "Module.h" на #import <Module/Module.h> , который должен автозаполняться для вас, когда вы начинаете вводить имя <AFNetworking/AFHTTPRequestOperationManager.h> . В моем случае это было <AFNetworking/AFHTTPRequestOperationManager.h> ).

Изменить: с тех пор я узнал, что при @import Module используется более безопасный файл зонтика.




wiki дает советы о том, как решить эту проблему:

Если Xcode не может найти заголовки зависимостей:

Проверьте, правильно ли размещены файлы заголовков pod в Pods / Headers, и вы не переопределяете HEADER_SEARCH_PATHS (см. # 1). Если Xcode все еще не может их найти, в качестве последнего средства вы можете добавить свой импорт, например, #import «Pods / SSZipArchive.h».




Если у вас возникли ошибки здания после установки « pod install » или « обновления pod », может быть, что один из ваших модулей был построен с XCode 6.3, пока вы все еще используете предыдущую версию.

В моем случае мне пришлось обновить мой OSX от mavericks до Yosemite, чтобы иметь Xcode 6.3 и решить проблему




Мне пришлось загрузить zip из git-хаба и перетащить недостающие файлы в Finder на соответствующие пути в Pod / ...




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

Настройки сборки

Включить бит-код - ДА (если вы используете бит-код)

Препроцессор макросов - $ (унаследованный)

Другой флаг компоновщика - objc, -lc ++, $ (унаследованный)

Только построение архитектуры

Отладка - Да

Relese - Нет

Путь поиска

Путь поиска в каркасе - $ (унаследованный) $ (PROJECT_DIR)

Путь поиска библиотеки - $ (унаследованный)

Путь поиска заголовка - $ (унаследованный)




Это был ответ для меня, я обновил cocoapods, и я думаю, что это привело к тому, что PODS_HEADERS_SEARCH_PATHS исчезли. Мое решение было похоже на это, но я использовал «$ (PODS_ROOT) / Headers» - Andrew Aitken

Большое вам спасибо за этот ответ. Мне было трудно найти способы исправить мою проблему. Большое спасибо.




Для меня работал проект Pods, поиск и выбор целевой структуры с отсутствующим заголовком в целевом каталоге проекта Pod и установка «Build Active Architecture Only» на «No» в разделе «Архитектура» в настройках сборки цели.




Я решил эти проблемы для Xcode 8.2.1 с помощью перетаскивания, которые я хочу использовать.




Один простой способ: 1. Удалить папку Pods и файл Podfile.lock. Но не удаляйте Podfile 2. Запустите следующую команду в корневой папке проекта:

pod install



Related