最近のUniversal Static Libraryのビルド方法を見かけなかったので、書いておきます。
“最近の”と言っても変更点はarmv6がなくなってarmv7sが追加されただけです。

概要

何も難しいことはありません。

  • 実機用にビルド(armv7, armv7s)
  • シミュレーター用にビルド(i386)
  • lipoでくっつける
  • 必要なヘッダーもコピーする

実行例

JSONKitのUniversal Static Libraryを作る例です。

xcodebuild -sdk iphoneos -arch armv7 -arch armv7s clean build
xcodebuild -sdk iphonesimulator -arch i386 clean build

rm -R Product
mkdir Product/

xcrun lipo -create build/Release-iphonesimulator/libJSONKit.a build/Release-iphoneos/libJSONKit.a -output Product/libJSONKit.a
cp JSONKit/*.h Product/

できたものを確認します。

xcrun -sdk iphoneos lipo -info Product/libJSONKit.a
Architectures in the fat file: build/Release-universal/libJSONKit.a are: i386 armv7 armv7s

できてますね。

補足

/usr/bin/lipoはarmv7sのことを知らないらしく、lipo -info ...としてもarmv7sとして表示してくれません。 Xcodeのxcrun -sdk iphoneos lipoではarmv7sと表示されます。

参考