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



Answers

Обновить

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

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

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

Question

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

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




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

pod install



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




Оба других ответа здесь не помогли. Я нашел еще 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



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

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

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




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




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




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

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




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

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




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

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

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

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

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

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

Отладка - Да

Relese - Нет

Путь поиска

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

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

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




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

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

"${PODS_ROOT}/BuildHeaders"

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




Если ни одно из вышеперечисленных не работает для вас, и вы обнаруживаете эту ошибку, потому что вы просто переключились на 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 используется более безопасный файл зонтика.




Links