Wie kann ich in einem benutzerdefinierten Cordova-Plugin eine spezifische .framework-Datei in plugin.xml so konfigurieren, dass sie zum Abschnitt "Embedded Binaries" in Xcode hinzugefügt wird? Wenn das momentan nicht direkt in plugin.xml möglich ist, bin ich offen für alternative Vorschläge.
Ich habe eine Problemumgehung implementiert, bis sie von Cordovas plugin.xml unterstützt wird, hoffentlich in der Zukunft, sobald eine embed
Eigenschaft in solchen Einträgen denselben Effekt hat: <framework embed="true" src="..." />
, Vorläufig hilft diese Eigenschaft nicht, daher die folgende Problemumgehung.
Die folgende Lösung funktionierte mit Cordova Version 5.3.3.
embed="true"
funktioniert momentan nicht, aber füge es trotzdem hinzu.
Als nächstes gibt es ein bestimmtes Node-Modul, das wir in unserem Hook-Code benötigen. Dieses Modul ist node-xcode .
Schließlich der Code für den Haken selbst -
LD_RUNPATH_SEARCH_PATHS
, um nach eingebetteten Frameworks in "@executable_path/Frameworks"
zu suchen (Dies ist der Fall, wenn das eingebettete Framework nach der "Copy Files" - & gt; "Frameworks" -Bauphase kopiert wird Geändert Hook-Skript nach Max Whaler Vorschlag, wie ich das gleiche Problem über Xcode 8 erfahren.
Sobald Sie Ihre App in den AppStore hochgeladen haben, versuchen Sie das folgende Cordova-Plugin (nur Hook, kein systemeigener Code), wenn die Validierung aufgrund nicht unterstützter Architekturen fehlschlägt (i386, etc ...): zcordova-plugin-architrim
Um mein Plugin mit einem Projekt auf XCode 8.0 und cordova-ios 4.2 zu erstellen, musste ich den Hook in der Phase after_build
ausführen. Stellen Sie außerdem sicher, dass die Knotenumgebung die letzte Version von xcode-node (^ 0.8.9) verwendet oder Sie Fehler in der Phase der Kopierdateien erhalten.
<framework src="lib/myCustom.framework" custom="true" embed="true" />
<hook type="after_build" src="hooks/add_embedded.js" />
Die Datei plugin.xml benötigt custom="true"
für Cordova, um die Framework-Datei zu kopieren, was zu Konflikten mit den Änderungen führte, die an der .pbxproj-Datei vorgenommen wurden, wenn dieser Hook nach_platform add oder sogar nach_prepare ausgeführt wurde.
@Alon Amir, danke fürs Teilen, es funktioniert wunderbar! Meine App lief zwar einwandfrei im Debug, aber nicht im Release-Modus. Ich fand heraus, dass der LD_RUNPATH_SEARCH_PATHS nur als Debug-Modus als proj.getBuildProperty hinzugefügt wurde, ohne dass ein Build-Parameter das erste Ergebnis nimmt. Ich habe Ihren Code ein wenig modifiziert, so dass er sowohl im Debug- als auch im Release-Modus funktioniert:
%Vor%Tags und Links cordova ios xcode cordova-plugins