Живые библиотеки в XCode 5

Я пытаюсь создать статическую библиотеку, а затем создаю в ней проект привязки в Xamarin. Все работало нормально, пока iOS 7 не ударил. Мне пришлось захватить последнюю версию родной библиотеки и попытаться построить ее в XCode 5, но она давала мне всевозможные проблемы. Я думаю, что это может быть связано с процессом сборки или, возможно, с некоторыми изменениями в XCode 5 (против 4), но я не уверен.

Я использовал this script для создания универсального двоичного файла, который основан на работе в этом вопросе:

Создайте живую статическую библиотеку (устройство + симулятор) с помощью Xcode и SDK 4+

Одна вещь, которую я заметил, это то, что предыдущая, в старой версии iOS 6.1 моего двоичного кода (встроенная в XCode 4), мой двоичный файл был около 24 Мб, теперь с XCode 5 он взлетел почти до 50 Мб! Что побуждает меня думать, что что-то не так с процессом компиляции и компоновки.

Любые идеи? Кто-нибудь еще сталкивался с проблемами с универсальными двоичными файлами в XCode 5 (vs 4)?

Ответы

Ответ 1

Я использую makefile ниже для своей библиотеки, и он работает безупречно даже с XCode 5 и 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

Ответ 2

Здесь ссылка на Makefile с вкладками, и я сделал небольшое изменение, чтобы отделить имя цели от имени библиотеки. Большое спасибо за это! Это решило мою проблему!