Ich versuche, eine App mit dem Xcode6 GM einzureichen, und bei der Validierung wird dieser Fehler angezeigt. Die App verfügt über eine Aktionserweiterung und ein dynamisches Framework, das von der Erweiterung und der App selbst gemeinsam genutzt wird.
Ich habe nirgendwo im Projekt eine Datei namens "Frameworks", daher bin ich mir nicht sicher, was dies bedeuten soll. Hat jemand dieses Problem bekommen oder hat er irgendwelche Ideen?
ios
xcode
app-store-connect
Mike
quelle
quelle
Antworten:
Es stellt sich heraus, dass der Fehler mit der Verwendung von Swift zusammenhängt (sowohl die App als auch die Erweiterung verwenden Swift).
Für die App musste ich einstellen:
und für die Erweiterung:
Xcode 8 und 9
Sieht so aus, als ob dies
Always Embed Swift Standard Libraries
in Xcode 8 und 9 umbenannt wurde. Also für die App:und für die Erweiterung:
quelle
@executable_path/../../Frameworks
Die einzige Lösung, die für mich funktioniert hat, war das Hinzufügen dieses Ausführungsskripts zum Ziel der App-Erweiterung:
Quelle: https://github.com/CocoaPods/CocoaPods/issues/4203
quelle
dyld: Library not loaded: ... Image not found
Kann mir jemand helfen?Also 3 Schritte, um dies anhand der Build-Einstellungen zu beheben
Embedded Content Contains Swift Code: YES
Embedded Content Contains Swift Code: NO
@executable_path/../../Frameworks
quelle
In meinem Fall habe ich gerade ein Upgrade auf CocoaPods 1.0.1 durchgeführt, und dies scheint ein neuer Fehler zu sein.
Das Pod-Update fügt dem Ziel meiner Erweiterung ein Ausführungsskript hinzu, das den Frameworks-Ordner erstellt. Ich fand es, als ich das Ausführungsskript von @ Roman hinzufügen wollte, um es zu entfernen.
Die Lösung bestand darin, dieses Skript aus der Erstellungsphase meiner Erweiterung zu löschen. Hier ist derjenige, der gehen musste ...
quelle
1.1.0.rc.2
das Problem für mich zu lösen.Entfernen Sie jede Build-Phase für Ihre Erweiterung
embed
deren Titel ein Wort enthält.Zusätzlich:
Yes
für das Erweiterungsziel festgelegt werden muss .quelle
Keine der oben genannten Antworten hat bei mir funktioniert. Dies lag daran, dass der Fehler nicht durch die übergeordnete App oder deren Erweiterung verursacht wurde. Vielmehr war eine der verknüpften Bibliotheken schuld.
Zur Bestätigung archivieren Sie zuerst mit Xcode und dann mit Organizer den Eintrag und suchen ihn mit Show in Finder. Dies zeigt die
.xcarchive
Datei.Wählen Sie diese Datei aus und wählen Sie "Paketinhalt anzeigen".
Wählen Sie die .app im Ordner Produkte / Anwendungen aus und wählen Sie erneut "Paketinhalt anzeigen".
Suchen Sie das fehlerhafte Modul im Ordner Frameworks. Zum Beispiel, wenn der Fehler ist:
Dann wird im
Frameworks/MyLib.framework
Folgenden wohl Folgendes sichtbar sein:Diese sind vorhanden, weil die verknüpfte Bibliothek - oder das Modul -, die die übergeordnete App enthält, die
EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
Suchen Sie das abhängige Modul in Xcode und aktualisieren Sie das Flag:
Beachten Sie, dass die App nach Behebung dieses Problems möglicherweise weiterhin mit einer erklärenden E-Mail aus dem iTunes Store abgelehnt wird:
Wieder kommt dies zur
EMBEDDED_CONTENT_CONTAINS_SWIFT
Flagge zurück. Stellen Sie sicher, dass dies nur für die übergeordnete App festgelegt istYES
. Sowohl für die WatchKit-App als auch für die Erweiterung muss dieses Flag gesetzt seinNO
. Dies ist wie in @ Mikes Antwort oben beschrieben.quelle
In meinem Fall gab es eine CocoaPod-Bibliothek "Blockly", die "Ja für Swift Always Standard Libraries immer einbetten" angab. Nachdem Sie für die Option NEIN gemacht hatten, funktionierte es.
quelle
In meinem Fall bestand die Lösung darin, mein Framework aus den eingebetteten Binärdateien meiner Erweiterung zu entfernen und es den verknüpften Frameworks und Bibliotheken meiner Erweiterung hinzuzufügen. (Beide finden Sie auf der Registerkarte Allgemein der Erweiterung.)
quelle
Wenn Embed Pods Frameworks- Skript und Roman-Skript beide im selben Ziel vorhanden sind.
Bitte überprüfen Sie, ob sich die Embed Pods Frameworks vor dem anderen befinden. Wenn nicht, verschieben Sie einfach Romans Skript zum letzten.
quelle
Ich konnte keine Einstellungen für finden,
Embedded Content Contains Swift Code
aber ich konnte eine Einstellung findenAlways Embed Swift Standard Libraries
und diese Einstellung auf NEIN für mein Framework hat dieses Problem behoben.quelle
cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /" if [[-d "Frameworks"]]; dann rm -fr Frameworks fi
quelle
Wenn Sie CocoaPods verwenden, würde ich in Betracht ziehen, die Erstellungsphase für eingebettete Frameworks auf dem problematischen Ziel (der Erweiterung) zu löschen. Dies hat das Problem für mich behoben.
quelle
Ich habe den gleichen Fehler erhalten, weil ich das Framework in das Erweiterungspaket kopiert habe. Wie sich herausstellt, sollten Frameworks, die von der Erweiterung verwendet werden, in das Haupt-App-Bundle kopiert und nur in den Einstellungen für die Erweiterungserstellung verknüpft werden (nicht kopiert). Stellen Sie sicher, dass der Erweiterungsbuild den Suchpfad '@executable_path /../../ Frameworks' enthält. Ich denke, dieser Pfad wurde automatisch von XCode 10 hinzugefügt.
quelle
Ich habe viele Fragen wie diese gefunden und keine hat mir geholfen, mein Problem zu beheben. Hoffentlich kann dies jemandem helfen.
Ich erstelle eine App mit einer Intent-Erweiterung (für Siri-Verknüpfungen) und verwende ein Framework für Code, der zwischen der Erweiterung und meiner App geteilt wird, wie von Apple empfohlen.
Ich hatte mein Framework zu meiner Erweiterung im Abschnitt "Frameworks und Bibliotheken" der "Allgemeinen" Einstellungen für das Ziel hinzugefügt. Wenn Sie hier ein Framework hinzufügen, gibt es zwei Spalten. Einer sagt den Namen des Frameworks und der andere trägt den Titel "Einbetten". In der Spalte "Einbetten" wurde nichts angezeigt, daher fand ich das in Ordnung, musste jedoch für mein Framework explizit die Option "Nicht einbetten" für diese Spalte auswählen. Als ich das tat und in Xcode archivierte, konnte ich während der Validierung feststellen, dass das Framework nicht mehr in meinem IPA-Inhalt unter jedem Ziel aufgeführt war, sondern nur noch einmal, und die Validierung war schließlich erfolgreich.
quelle
Ich hatte dieses Problem zum ersten Mal mit XCode 7.1.1 für meine App mit einer Today-Erweiterung (in meinem Projekt ist kein Swift vorhanden). Das Skript ( https://github.com/CocoaPods/CocoaPods/issues/4203 ) hat bei mir nicht funktioniert.
Das Herabstufen von Cocoapods auf Version 0.39.0.beta.3, Ausführen
pod install
und erneutes Archivieren löste das Problem.quelle
Ich bekam den gleichen Fehler zusammen mit einem
Mein Problem war
SquareReaderSDK.framework
speziell mit dem, aber ich musste ein neues Ausführungsskript gemäß ihren Anweisungen hinzufügen:quelle
Keine der hier aufgeführten Build-Einstellungen hat dieses Problem für mich behoben. Dies hat jedoch funktioniert, nachdem einige Frameworks von "Embedded Binaries" zu "Linked Frameworks and Libraries" verschoben wurden.
Es scheint, dass meine Haupt-App und eines meiner benutzerdefinierten Frameworks in beiden die gleiche Framework-Abhängigkeit hatten, und das scheint ein Nein Nein zu sein, aber durch Verschieben in meiner Haupt-App vom eingebetteten Bereich in den verknüpften Bereich konnte ich die App erfolgreich hochladen keine Fehler.
quelle