Verwenden Sie Cocoapods mit einer App-Erweiterung
Ich versuche zu bauen eine Foto-App Erweiterung in der Xcode 6 Beta 6 verwendet cocoapods-Bibliotheken.
Die bridging-header, die Xcode erzeugt, die für die Foto-Erweiterung kann nicht sehen, nichts von cocoapods.
Beispiel: #import <GPUImage/GPUImage.h>
Ergebnisse in der Fehlermeldung "GPUImage/GPUImage.h" file not found
.
Ich habe versucht, jeden denkbaren Pfad für den import (mit Klammern und Anführungszeichen) und hatte fast keinen Erfolg. Die Ausnahme ist, dass für einfache Hülsen wie SVProgressHUD
folgende hässlich schreckliche hack funktioniert:
#import "../Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h"
.
Aber für GPUImage, geht es in der GPUImage.h
header und beschließt, es plötzlich nicht sehen können GPUImageContext.h
obwohl Sie kein Problem, wenn diese importiert, mit den bridging-header für den normalen swift-code, der nicht Teil der app-Erweiterung.
Was ist anders an der Zusammenstellung von app-Erweiterungen, die verhindern, dass die bridging-header von Verhalten sanely?
Hinweis:
Ich habe gelesen, jede mögliche permutation von dieses tutorial und es ist nicht sofort anwendbar, nur falls jemand denkt, Sie haben die Antwort gefunden es.
Auch das beschriebene problem in diese Frage ALSO zusammenhängen kann, aber ich habe diese Frage jedenfalls, falls mein Problem ist spezifisch für app-Erweiterungen.
InformationsquelleAutor der Frage DanBlakemore | 2014-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den richtigen Weg, dies zu tun ist, aktualisieren Sie Ihre podfile hinzufügen nur 1 Zeile :
sowie der pod-update sollte das Problem beheben.
InformationsquelleAutor der Antwort LeChatNoir
BEARBEITEN (2015/03/10)
Sehen, neue akzeptierte Antwort. Ich habe versucht, es in ein neues Projekt und es hat funktioniert, obwohl mein test-pods beide sharedApplication nicht zulässig ist in Erweiterungen. Die Tatsache, dass Sie zeigte diese Fehler bedeutet, dass es richtig verknüpft. Weg zu gehen @LeChatNoir!
Erfolg.
Die Lösung ist wie folgt:
Sobald Sie Ihre app-Erweiterung und es ist bridging-header in einem Projekt mit cocoapods und Sie möchten, verwenden Sie eine von denen cocoapods-Bibliotheken, die versuchen gehören die pod-wie
#import <GPUImage/GPUImage.h>
fehl mitfile not found
.Stellen Sie zunächst sicher, dass Sie sagen, die app-Erweiterung (klicken Sie auf Ihr Projekt-Datei, klicken Sie dann auf der Verlängerung target) link gegen
libPods.a
viel wie Ihre app Ziel.Nächsten, die in Ihrer tatsächlichen Projekt (klicken Sie auf Ihr Projekt-Datei, klicken Sie dann auf der Projekt-Datei wieder in das "Projekt" Abschnitt der inneren sidebar) unter der Registerkarte "Info", setzen Sie die Konfiguration der Erweiterung für Debug, Release und Inhouse zu verwenden, die "Pods" - Konfiguration aus dem dropdown-Menü. Pod Installieren, wird dies nicht tun, für Sie, so müssen Sie es selbst zu tun.
Schließlich, stellen Sie sicher, dass das Pods-Projekt-Ziele und Ihres Projekts-Ziele haben alle Architekturen, für die Sie brauchen, um zu bauen, für die in der Gültigen Architekturen variable, oder Sie bekommen die immer Spaß undefinierten Symbole Fehler.
Diese sollte arbeiten und ermöglichen Ihnen den import der Hülsen Ihrer Wahl wie normal.
BEARBEITEN (2014/10/14): Als beiseite, da können Sie auch Objective-C-Dateien innerhalb Ihrer eigenen Projekt-code in der raschen Erweiterung, die Sie sollten sicherstellen, dass alle
.m
Dateien, die Sie in den bridging-header werden auch kompiliert, die durch die Erweiterung Ziel. Sie können entweder aus den Quellen kompilieren Menü für die Ziel-oder in der.m
Datei selbst mit der "Target-Mitgliedschaft" - Abschnitt der rechten Seitenleiste in Xcode.InformationsquelleAutor der Antwort DanBlakemore
Den oben genannten Antworten wird funktionieren, aber ich wollte nur ein paar Hülsen in meine extension, so habe ich Folgendes zu meiner Podfile:
Dann ein
pod install
werde es tun!InformationsquelleAutor der Antwort wyzkid207
link_with, die Sie nicht mehr verwenden.
Unten ist die perfekte answe, getestet auch.
InformationsquelleAutor der Antwort Mehul