Ich versuche, eine App mit dem Xcode6 GM einzureichen, und ich bekomme diesen Fehler bei der Validierung. 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 mit dem Namen 'Frameworks', daher bin ich mir nicht wirklich sicher, was das bedeuten soll. Hat jemand diese Ausgabe oder irgendwelche Ideen?
Es stellt sich heraus, dass der Fehler mit Swift zusammenhängt (sowohl die App als auch die Erweiterung verwenden Swift).
Für die App musste ich einstellen:
Embedded Content Contains Swift Code: YES
und für die Erweiterung:
Embedded Content Contains Swift Code: NO
Xcode 8 und 9
Anscheinend wurde dies in Xcode 8 und 9 in Always Embed Swift Standard Libraries
umbenannt. Also für die App:
Always Embed Swift Standard Libraries: YES
und für die Erweiterung:
Always Embed Swift Standard Libraries: NO
Die einzige Lösung, die für mich funktionierte, bestand darin, dieses Run-Skript zum Ziel der App-Erweiterung hinzuzufügen:
cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then
rm -fr Frameworks
fi
Also 3 Schritte, um dies von den Build-Einstellungen zu beheben
Embedded Content Contains Swift Code: YES
Embedded Content Contains Swift Code: NO
@executable_path/../../Frameworks
In meinem Fall habe ich gerade ein Upgrade auf CocoaPods 1.0.1 durchgeführt. Dies scheint ein neuer Fehler zu sein.
Das Pod-Update fügt dem Ziel meiner Erweiterung ein Ausführungsskript hinzu, das den Ordner "Frameworks" erstellt. Ich habe es gefunden, als ich gerade das Laufskript 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 der, der gehen musste ...
Entfernen Sie alle Build-Phasen für Ihre Erweiterung, die embed
Word im Titel hat.
Zusätzlich:
Yes
gesetzt sein.Keine der obigen Antworten funktionierte für mich. Dies lag daran, dass der Fehler nicht von der übergeordneten App oder ihrer Erweiterung verursacht wurde. Vielmehr war eine der verknüpften Bibliotheken schuld.
Zur Bestätigung archivieren Sie zunächst mit Xcode, dann mit Organizer den Eintrag und suchen Sie mit In Finder anzeigen. Dadurch wird die .xcarchive
-Datei angezeigt.
Wählen Sie diese Datei aus und wählen Sie "Paketinhalt anzeigen".
Wählen Sie im Ordner "Produkte/Anwendungen" die .app-Datei aus und wählen Sie erneut "Paketinhalt anzeigen".
Suchen Sie das fehlerhafte Modul im Ordner "Frameworks". Zum Beispiel, wenn der Fehler lautet:
ERROR ITMS-90206: "Invalid Bundle. The bundle at 'MyApp.app/Frameworks/MyLib.framework' contains disallowed file 'Frameworks'."
In Frameworks/MyLib.framework
wird dann wahrscheinlich Folgendes sichtbar sein:
../Frameworks/libswiftContacts.dylib
../Frameworks/libswiftCore.dylib
../Frameworks/libswiftCoreData.dylib
../Frameworks/libswiftCoreGraphics.dylib
../Frameworks/libswiftCoreImage.dylib
../Frameworks/libswiftCoreLocation.dylib
../Frameworks/libswiftDarwin.dylib
../Frameworks/libswiftDispatch.dylib
../Frameworks/libswiftFoundation.dylib
../Frameworks/libswiftLocalAuthentication.dylib
../Frameworks/libswiftObjectiveC.dylib
../Frameworks/libswiftPassKit.dylib
../Frameworks/libswiftUIKit.dylib
../Frameworks/libswiftWebKit.dylib
Diese sind vorhanden, weil die verknüpfte Bibliothek - oder das Modul -, die die übergeordnete App enthält, den EMBEDDED_CONTENT_CONTAINS_Swift = YES;
hat.
Suchen Sie das abhängige Modul in Xcode und aktualisieren Sie das Flag:
Beachten Sie, dass die App nach Behebung dieses Problems immer noch mit einer erläuternden E-Mail aus dem iTunes Store abgelehnt werden kann:
Invalid Swift Support - The Watch OS application has Swift libraries at both...
Dies kommt wieder auf das Flag EMBEDDED_CONTENT_CONTAINS_Swift
zurück. Stellen Sie sicher, dass nur für die übergeordnete App YES
festgelegt ist. Für die WatchKit-App und die Erweiterung muss dieses Flag auf NO
gesetzt sein. Dies ist wie in @ Mikes Antwort oben beschrieben.
Wenn Embed Pods Frameworks -Skript und Römers Skript beide in demselben Ziel vorhanden sind
Bitte überprüfen Sie, ob die Embed Pods Frameworks vor den anderen liegen. Wenn nicht, verschieben Sie einfach Roman's Skript zum letzten.
In meinem Fall bestand die Lösung darin, mein Framework aus den Embedded Binaries meiner Erweiterung zu entfernen und es den Linked Frameworks und Bibliotheken meiner Erweiterung hinzuzufügen. (Beide befinden sich auf der Registerkarte "Allgemein" der Erweiterung.)
Ich konnte keine Einstellungen für Embedded Content Contains Swift Code
finden, aber ich konnte eine Einstellung Always Embed Swift Standard Libraries
finden. Wenn Sie dies für mein Framework auf NO setzen, wurde dieses Problem behoben.
cd "$ {CONFIGURATION_BUILD_DIR}/$ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /" if [[-d "Frameworks"]]; dann rm -fr Frameworksfi
Wenn Sie CocoaPods verwenden, würde ich in Betracht ziehen, die Build-Phase des Embed-Frameworks für das problematische Ziel (die Erweiterung) zu löschen. Dies hat das Problem für mich behoben.
Keine der hier aufgelisteten Build-Einstellungen hat dieses Problem für mich gelöst. Nachdem ich einige Frameworks von "Embedded Binaries" zu "Linked Frameworks and Libraries" verschoben hatte, funktionierte dies jedoch.
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 das Verschieben in meiner Haupt-App aus dem Bereich Eingebettet in den Bereich Verknüpft hat es mir ermöglicht, die App erfolgreich mit hochzuladen keine Fehler.
Ich habe den gleichen Fehler erhalten, und zwar, weil ich das Framework in das Erweiterungspaket kopiert habe. Wie sich herausstellt, sollten Frameworks, die von der Erweiterung verwendet werden, in das Hauptanwendungspaket kopiert und nur in den Einstellungen für die Erweiterungserstellung verknüpft (nicht kopiert) werden. Stellen Sie sicher, dass der Suchpfad '@executable_path /../../ Frameworks' in der Erweiterungserstellung enthalten ist. Ich denke, dieser Pfad wurde von XCode 10 automatisch hinzugefügt.
Ich bekam diesen Fehler zusammen mit einem
Fehler bei geschachtelten Bundles nicht zulässig
Mein Problem war spezifisch mit dem SquareReaderSDK.framework
, aber ich musste ein neues Run-Skript gemäß den Anweisungen hinzufügen:
FRAMEWORKS="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
"${FRAMEWORKS}/SquareReaderSDK.framework/setup"
Ich hatte dieses Problem zum ersten Mal mit XCode 7.1.1 für meine App, die eine Today-Erweiterung hat (in meinem Projekt gibt es keine Swift-Funktion) ... Das Skript ( https://github.com/CocoaPods/CocoaPods/ Ausgaben/4203 ) hat bei mir nicht funktioniert.
Durch das Downgrade von cocoapods auf Version 0.39.0.beta.3, Ausführen von pod install
und anschließendes erneutes Archivieren wurde das Problem behoben.