it-swarm.com.de

Fehler beim Senden eines vorkompilierten Headers für den Bridging-Header

Ich habe ein Projekt von GitHub heruntergeladen und dann die folgenden Dateien gepackt, von denen einige von OBJ-C geschrieben wurden, und ich habe einen Bridge-Header verwendet.

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

Wenn ich das Projekt mit Xcode 9.0 Beta 2 laufe, wird das Fehlerprotokoll leider wie folgt protokolliert:

fehler: Fehler beim Senden des vorkompilierten Headers '/var/folders/kd/4gh0_kxx3jx4thjb_sssmmcw0000gn/T/EvoRadio-Bridging-Header-97bd5f.pch' zur Überbrückung des Headers '/Users/ringo/Downloads/EvoRadio-master/EvoRadio/Resources/EvoRadio-Bridging-Header.h'

Ich habe gegoogelt, aber kein solches Problem. Der Fehler bedeutet, dass eine PCH-Datei? Erforderlich ist. Dies ist meine .pch-Header-Konfiguration:  enter image description here Es kann es nicht lösen.

Wie man es macht?

18
Ringo

Ich habe auch genau dasselbe Problem (Xcode9 Beta 6) erhalten, nachdem ich Kakaopads für Encrypted Core Data hinzugefügt habe.
Dies ist meine 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

Lösung:
1 Ich habe $(inherited) non-recursive zu Search Path -> Header Search Paths hinzugefügt.
2 Dann wurde ${PODS_ROOT} recursive zu Search Path -> User Header Search Paths hinzugefügt.
Beide oben in den Ziel-Build-Einstellungen meiner Projekte.

Bitte werfen Sie einen Blick auf diese SO Antworten:
1 Header-Suchpfade übernehmen
2 Benutzersuchpfade erben

16
D4ttatraya

Beachten Sie, dass dies auch passieren kann wenn Ihr Bridging-Header Objective-C-Code importiert, der selbst das Swift module über myproject-Swift.h Ihrer App importiert. Die Lösung ist zu verwenden schicken Sie Erklärungen für Ihre Swift Typen und importieren Sie das Projekt Swift Modul in die .m Datei.

@class MySwiftClass Oder ...

typedef NS_ENUM(NSInteger, MySwiftEnumType)

MySwiftEnumType ist der Name der untersten Ebene, auch für Klassen. Also Swift enum MyClass.MySwiftEnumType Wird nur MySwiftEnumType

16

Stellen Sie sicher, dass Sie den richtigen Projektarbeitsbereich öffnen. Andernfalls verfügt Podfile möglicherweise nicht über alle zum Kompilieren erforderlichen Ressourcen.

Ich habe diesen Fehler bei einem Projekt gesehen, das zuvor einwandfrei funktioniert hat.

Ich stellte fest, dass ich versehentlich die ProjectName.xcodeproj-Datei und nicht die ProjectName.xcworkspace-Datei geöffnet hatte. Die xcworkspace-Datei wurde geöffnet und presto, das Projekt funktionierte wieder!

9
BAP

Dieses Problem trat für mich auf, als ich dem vorhandenen Projekt eine neue Build-Konfiguration und ein neues Schema hinzufügte.

Die Lösung bestand darin, pod install mit einem neu erstellten Schema auszuführen. Danach wurde das Projekt erfolgreich erstellt.

6
Aliens

Sie können diese Lösung ausprobieren. Ich habe das gleiche Problem auf diese Weise gelöst.

Produkt> Schema> Bearbeitungsschema> Wählen Sie im linken Menü "Erstellen"> Implizite Abhängigkeiten suchen aus

Aktivieren Sie auf der Registerkarte "Build" die Option "Implizite Abhängigkeiten suchen"

Find implicit dependencies

Dann mache einen sauber und baue wieder.

5
Okan Yücel

Ich habe alle oben genannten Schritte in den Antworten ausprobiert, aber bei mir hat nichts funktioniert. Das Problem lag im Grunde bei der Bereitstellungszielversion für das Projekt und in der Poddatei.

In meinem Projekt war das Bereitstellungsziel 10.0, während es in meinem Podfile 11.0 war.

Scr1

scr2

3
paras gupta

Für meinen Fall hatte ich einen Tippfehler im Ordnernamen "Unterstützende Dateien" statt "Unterstützende Dateien".

2
Gomfucius

Durch das Löschen von Podfile.lock und das erneute Ausführen von pod install wurde dieses Problem behoben.

1
Zack Shapiro

In meinem Fall hatte ich den gleichen Compiler-Fehler mit zusätzlichen Fehlern wie "Unbekannter Typ" in einer meiner Projektdateien. Also fügte ich dies der problematischen Datei hinzu und löste es sofort. 

#import <UIKit/UIKit.h>

1
Benzi Heler

Ich hatte dasselbe Szenario, stellen Sie sicher, dass die Datei file A in YourProjectName-Bridging-Header.h enthalten ist. 

  • wenn andere Klassen verwendet werden, sind diese anderen Klassen ebenfalls vor File A enthalten.
0
iOS_Developer

Ich habe die Erfahrung gemacht, dass Xcode keine Header-Dateien für in das Projekt importierte Pods/Frameworks finden kann. 

Meine Projekterfahrung dazu: Aktualisierung von Xcode9.2 - 9.3, wo viele Cocoapoden aufgrund impliziter Definitionen, die jetzt nicht verfügbar sind oder veraltet sind, aktualisiert werden mussten.
Ich hatte die Pod-Datei so geändert, dass sie jetzt 'use_frameworks!' Enthält. Im Anschluss daran und nachdem ich mich mit anderen Kompilierproblemen befasst hatte, fand ich den Fehler, den Sie haben. Ich glaube, dass 'use_frameworks' hinzugefügt wird! verhinderte, dass einige Pods mit Unterstützung vor iOS 8 korrekt kompiliert wurden. Schritte, die ich zur Behebung dieses Problems unternommen habe:

  1. Ich habe versucht, das Pods/-Verzeichnis mit Kakao zu löschen pod deintegrate
  2. Ich öffne dann das Projekt mit Xcode und bereinigte den Erstellungsordner und das Projekt. (Inhalt in abgeleiteten Datenordnern löschen) 
  3. Ich pod install dann wieder aber das Problem blieb bestehen. 

  4. Letztendlich entfernte ich die use_frameworks-Zeile in Podfile und wiederholte dann die Schritte 1-3, und das Projekt konnte nun die fehlenden Header-Dateien finden und das Problem wurde nie wieder selbst angezeigt. 

0
Randoramma

Ich habe auch darunter gelitten, nachdem ich neuen Xcode aktualisiert habe. Nach mehrstündigen Nachforschungen stellte sich heraus, dass Sie bei mehreren Zielen jetzt mehr Ziele in die Pod-Datei in Xcode 10 einfügen müssen. Ihr Code sollte also so aussehen:

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

Ich habe festgestellt, dass Sie in Xcode 9 nicht hinzufügen müssen, aber in Xcode 10 müssen Sie dies hinzufügen. Hoffe das hilft.

0
Richter

Es gibt so viele Gründe und Dinge können getan werden, wie:

Das einzige, was für mich funktioniert, ist die akzeptierte Antwort in Xcode 9 - Fehler beim Senden des vorkompilierten Headers

0
Allen Wang

In meinem Fall habe ich mit dem falschen Schema gebaut (Menü oben links).

0
atulkhatri