Не удалось испустить предварительно скомпилированный заголовок для объединения заголовка

Я загрузил проект из GitHub, затем загрузил следующие файлы, некоторые из которых написаны OBJ-C, и я использовал заголовок моста.

pod ‘SnapKit’
pod ‘MJRefresh’
pod ‘Alamofire’
pod ‘Kingfisher’
pod ‘MBProgressHUD’
pod ‘pop’
pod ‘EVReflection’
pod ‘StreamingKit’
pod ‘iCarousel’
pod ‘ReflectionView’

Когда я запускаю проект с Xcode 9.0 beta 2, но, к сожалению, журнал ошибок выглядит следующим образом:

Ошибка: не удалось выпустить предварительно скомпилированный заголовок '/var/folders/kd/4gh0_kxx3jx4thjb_sssmmcw0000gn/T/EvoRadio-Bridging-Header-97bd5f.pch' для соединения заголовка '/Users/ringo/Downloads/EvoRadio-master/EvoRadio/Resources/EvoRadio-Bridging-Header.h'

У меня есть googled, но нет такой проблемы. Ошибка означает, что ему нужен файл PCH? Это моя конфигурация заголовка .pch: введите описание изображения здесь Он не может его решить.

Как это сделать?

Ответ 1

Я также получил ту же самую проблему (Xcode9 beta 6) после того, как я добавил cocoa pods для Зашифрованные основные данные.
Это мой PodFile:

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
pod 'EncryptedCoreData', :git => 'https://github.com/project-imas/encrypted-core-data.git'

target 'Root' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for Root

  target 'RootTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'RootUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

Решение:
1 Я добавил $(inherited) non-recursive в Search Path -> Header Search Paths
2 Затем добавили ${PODS_ROOT} recursive в Search Path -> User Header Search Paths
Оба указанных выше в настройках целевой настройки моих проектов.

Пожалуйста, взгляните на эти ответы SO:
1 Наследовать пути поиска заголовков
2 Наследовать пути поиска пользователей

Ответ 2

Обратите внимание, что это также может произойти, если ваш соединительный заголовок импортирует код Objective-C, который сам импортирует ваш модуль Swift приложения через myproject-Swift.h. Решение состоит в том, чтобы использовать предварительные объявления для типов Swift и импортировать модуль Swift проекта в файл .m.

@class MySwiftClass или...

typedef NS_ENUM(NSInteger, MySwiftEnumType)

MySwiftEnumType - это имя самого низкого уровня даже для классов. Так что Swift enum MyClass.MySwiftEnumType становится просто MySwiftEnumType

Ответ 3

Убедитесь, что вы открываете надлежащее рабочее пространство проекта, в противном случае Podfile может не иметь всех ресурсов, необходимых для компиляции.

Я видел ту же ошибку в проекте, который раньше работал нормально.

Я обнаружил, что случайно открыл файл ProjectName.xcodeproj, а не файл ProjectName.xcworkspace. Открыл файл xcworkspace и presto, проект снова работает!

Ответ 4

Для меня эта проблема возникла, когда я добавил новую конфигурацию сборки и схему в существующий проект.

Решением было запустить pod install на вновь созданной схеме. После этого проект был успешно выполнен.

Ответ 5

Вы можете попробовать это решение. Я решил эту проблему таким же образом.

Продукт> Схема> Редактировать схему> Выберите "Построить" в левом меню> Найти неявные зависимости

На вкладке сборки установите флажок "Найти неявные зависимости":

Find implicit dependencies

Затем почистите и постройте снова.

Ответ 6

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

#import <UIKit/UIKit.h>

Ответ 7

Для моего случая у меня была опечатка в названии папки "Поддержка файлов" вместо "Поддержка файлов".

Ответ 8

Мой опыт показывает, что Xcode не может найти заголовочные файлы для pods/frameworks, импортированных в проект.

Мой проект с этим связан с: Обновлением Xcode9.2 - 9.3, где пришлось обновить многие cocoapods из-за неявных определений, которые сейчас недоступны или устарели.
Я изменил Podfile, чтобы теперь включить "use_frameworks!". После этого и после решения других проблем компиляции я обнаружил ошибку, с которой вы столкнулись. Я считаю, что добавление 'use_frameworks! препятствовал компиляции некоторых модулей с поддержкой до iOS 8. Шаги, которые я предпринял, чтобы исправить эту проблему:

  1. Я попытался удалить каталог pod deintegrate/, используя pod deintegrate cocoa pod deintegrate
  2. Затем я открываю проект с помощью Xcode и очищаю папку сборки и проект. (удалить содержимое в папке производных данных)
  3. Затем я снова pod install но проблема осталась.

  4. В конечном итоге я удалил строку use_frameworks в Podfile, а затем повторил шаги 1-3, и теперь проект смог найти отсутствующие заголовочные файлы, и проблема больше никогда не представлялась.

Ответ 9

Удаление Podfile.lock и повторная pod install исправили это для меня.

Ответ 10

Есть так много причин и вещей, которые можно сделать, например:

У меня работает только один - принятый ответ в Xcode 9 - не удалось создать скомпилированный заголовок.

platform :ios, '11.0' в подфайле должно соответствовать цели в проекте

Ответ 11

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

В моем проекте цель развертывания была 10.0, а в моем подфайле - 11.0.

Scr1

scr2

Ответ 12

У меня был такой же сценарий, убедитесь, что для файла A, который вы включили в YourProjectName-Bridging-Header.h

  • если он использует какой-либо другой класс (ы), то эти другие классы также включаются перед этим файлом A

Ответ 13

В моем случае я строил с неправильной схемой (верхнее левое меню).

Ответ 14

Я также пострадал от этого после того, как я обновил новый Xcode. После нескольких часов исследования я обнаружил, что если у вас есть несколько целей, теперь вам нужно добавить больше целей в файл pod в Xcode 10. Поэтому ваш код должен выглядеть следующим образом:

platform :ios, '9.0'

target 'EvoRadio' do

pod ‘SnapKit
pod ‘MJRefresh
pod ‘Alamofire
pod ‘Kingfisher
pod ‘MBProgressHUD
pod ‘pop
pod ‘EVReflection
pod ‘StreamingKit
pod ‘iCarousel
pod ‘ReflectionView

target 'EvoRadio2ndtarget'   # add your second target

end

Я обнаружил, что в Xcode 9 вам не нужно добавлять, но в Xcode 10 вам нужно добавить это. Надеюсь это поможет.