2013-09-25 17 views
15

Ho cercato di creare una libreria statica e quindi creare un progetto di associazione da esso in Xamarin. Tutto andava bene fino a quando iOS 7 non ha funzionato. Ho dovuto prendere l'ultima versione della libreria nativa e provare a crearla in XCode 5, ma mi ha dato tutti i tipi di problemi. I penso che potrebbe essere correlato al processo di compilazione o forse qualche impostazione modificata in XCode 5 (vs. 4), ma non ne sono sicuro.Grassi librerie in XCode 5

usavo this script per compilare un binario universale che si basa di lavoro in questa domanda:

Build fat static library (device + simulator) using Xcode and SDK 4+

Una cosa che ho notato è che precedente, nella vecchia versione iOS 6.1 del mio binario (costruito in XCode 4), il mio binario era di circa 24 Mb, ora con XCode 5 è arrivato a quasi 50 Mb! Il che mi porta a pensare che ci sia qualcosa di sbagliato nella fase di compilazione e di collegamento.

Qualche idea? Qualcun altro ha riscontrato problemi con i binari universali in XCode 5 (vs 4)?

risposta

23

Sto utilizzando il makefile qui sotto per la mia libreria e funziona perfettamente anche con XCode 5 e iOS7 SDK.

XBUILD=/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild 
PROJECT_ROOT=. 
PROJECT=$(PROJECT_ROOT)/GIFLibFrontEnd.xcodeproj 
TARGET=GIFLibFrontEnd 

all: libUniversal.a 

libi386.a: 
    $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphonesimulator -configuration Release clean build 
    -mv $(PROJECT_ROOT)/build/Release-iphonesimulator/lib$(TARGET).a [email protected] 

libArmv7.a: 
    $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch armv7 -configuration Release clean build 
    -mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a [email protected] 

libArmv7s.a: 
    $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch armv7s -configuration Release clean build 
    -mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a [email protected] 

libArm64.a: 
    $(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch arm64 -configuration Release clean build 
    -mv $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a [email protected] 

libUniversal.a: libi386.a libArmv7.a libArmv7s.a libArm64.a 
    lipo -create -output lib$(TARGET)Universal.a $^ 

clean: 
    -rm -f *.a *.dll 
    -rm -rf build 
+1

Si prega di perdonare la mia ignoranza di XCode (che è il motivo per cui io uso Xamarin) ma come faccio a impostare un file make? Lo script che stavo usando mi aveva appena aggiunto a "costruire fasi" nel mio progetto XCode. È simile? O c'è qualche altro trucco per usare questo? –

+0

Dovresti essere in grado di rilasciare il mio makefile direttamente nella cartella del tuo progetto di libreria e regolare le variabili PROGETTO e TARGET per abbinare il tuo progetto ed essere pronto. Voglio dire basta creare un file "makefile" e incollare il contenuto del mio makefile e regolare. –

+0

E non dimenticare di eseguire "make" in seguito :) –

1

Ecco un link ad un Makefile with the tabs, e ho fatto un piccolo cambiamento per separare il nome di destinazione dal nome della libreria. Grazie mille per questo! Questo ha risolto il mio problema!