2015-09-01 8 views
10

Ich habe ein benutzerdefiniertes iOS-Framework mit Xcode 6 erstellt. Und ich habe viele Skripts ausprobiert, um das Framework universell (für Simulator und Gerät) zu machen. Aber keiner von ihnen hat für mich funktioniert Art und Weise einen benutzerdefinierten universellen Rahmen für iOS in Xcode 6.Universelles benutzerdefiniertes iOS-Framework mit Xcode 6.4

+0

jemand bitte geben Sie mir eine Lösung – haritha

Antwort

6

um zwei Binärdateien in eine universal binary durch das Terminal zu erstellen:

Erstes das Gerät binäre kompilieren, dann kompilieren den Simulator binär getrennt.

Suchen Sie beide Binärdateien. Wenn Sie überprüfen möchten, welche Architekturen in jeder kompiliert sind, können Sie diesen Befehl im Terminal ausführen:

lipo -info /path/to/binary

Beispiel Ausgabe:

Architekturen in der Fett-Datei:/path/to/binary sind: ARMv7 arm64

Jetzt können Sie beide binari fusionieren es in einem:

lipo -create /path/to/simulator/binary /path/to/device/binary -output /path/to/output/binary

Der Ausgang binär wird beide Simulator und Gerätearchitekturen haben.

3

Zum Erstellen und verteilen Frameworks:

Im Rahmen Projekt:

  1. die Build-Set für die Ziel-Einstellung (und für das Projekt, nur um sicher zu sein) ‚nur Aktive Architekturen bauen 'zu NEIN. Wir möchten alle Architekturen so aufbauen, dass die Binärdatei in allen unterstützten Geräten verwendet werden kann, nicht nur in dem, für das wir gerade arbeiten. Abhängig von Ihrem Implementierungsziel (und folglich von den unterstützten Geräten) müssen Sie möglicherweise die Architektur ARMv7s
  2. Build für Simulator und Build für Gerät hinzufügen. Dadurch werden zwei Frameworks im abgeleiteten Datenordner erstellt.

Im Terminal:

  1. Finden Sie den abgeleiteten Datenpfad für das Projekt. Suchen Sie nach dem Ordner 'Build-> Products'. Im Inneren sollte es '-iphoneos' und '-iphonsimulator' sein. In jedem befindet sich ein .framework-Ordner. Kopieren Sie eines dieser in einen netten Ordner. Kopieren Sie aus jedem dieser .frawework-Ordner die darin enthaltene Binärdatei in einen Ordner.
  2. In Terminal den Befehl 'lipo -create -Ausgang <output> <binaryFromiphoneos> <binaryFromiphonesimulator>'. Dadurch wird eine fette Binärdatei mit allen Architekturen für Simulator und Geräte erstellt. Ersetzen Sie das im kopierten .framework-Verzeichnis durch das neu erzeugte .

Um den Rahmen in einer anderen App verwenden:

  1. Wählen Sie das Projekt im Projekt-Navigator, das Ziel auszuwählen, und wählen Sie die Registerkarte 'General'.
  2. Ziehen Sie den .framework-Ordner auf die Stelle, an der die Nachricht steht: "Fügen Sie hier eingebettete Binärdateien hinzu".
  3. Fügen Sie in den Build-Einstellungen des Ziels den Pfad zum .framework-Ordner zu 'Framework Search Paths' hinzu.
  4. Importieren von Dateien im Quellcode mit # Import <frameworkName/frameworkName.h>
3

wie pro Ihre Frage individuelle Universal-Rahmen zu machen, müssen Sie diese Schritte folgen oder „http://www.raywenderlich.com/65964/create-a-framework-for-ios“ besuchen, wie gemacht Rahmen haben, die sich raywendlich.

1.) Erstellen Sie ein Projekt.

2.) Fügen Sie neues Ziel zu einem Projekt von Cocoa Touch Static Library auswählen. (Für weitere Referenz besuchen Sie: http://www.raywenderlich.com/65964/create-a-framework-for-ios)

3.) Jetzt müssen Sie Ihre statische Bibliothek als aktives Schema festlegen. Stellen Sie sicher, dass Sie "arm64" in den Build-Einstellungen in der tragets-Bibliothek hinzugefügt haben.

4.) Wählen Sie iOS-Gerät und Build machen. Aber dafür müssen Sie unten das Skript hinzufügen, um es für alle Geräte universell zu machen.

Script:

# define output folder environment variable 
 
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal 
 
UNIVERSAL_OUTPUTFOLDERx64=${BUILD_DIR}/${CONFIGURATION}-universalx64 
 

 
# Step 1. Build Device and Simulator versions 
 
xcodebuild -target DKHelperLib ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" 
 
xcodebuild -target DKHelperLib -configuration ${CONFIGURATION} -sdk iphonesimulator -arch i386 BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" 
 
xcodebuild -target DKHelperLib -configuration ${CONFIGURATION} -sdk iphonesimulator -arch x86_64 BUILD_DIR="${UNIVERSAL_OUTPUTFOLDERx64}" BUILD_ROOT="${BUILD_ROOT}" 
 

 
# make sure the output directory exists 
 
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}" 
 

 
# Step 2. Create universal binary file using lipo 
 
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a" "${UNIVERSAL_OUTPUTFOLDERx64}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a" 
 

 
# Last touch. copy the header files. Just for convenience 
 
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/include" "${UNIVERSAL_OUTPUTFOLDER}/"
enter image description here Hoffen, dass dieses Skript wird Ihnen helfen.

Verwandte Themen