目的
- cocos2d-x アプリのビルドを速くしたい
-
cocos new
コマンドで作成した Xcode プロジェクトでは、クリーンビルドの度にライブラリ部分も再ビルドする
-
- Xcode が cocos2d-x ライブラリ部分に対して表示する警告を見たくない
- cocos2d-x-3.14.1 の libcocos2d iOS で 229 issues
環境
- Mac OS X 10.12.4 (英語)
- Xcode 8.3.1
- git-2.12.2 (brew)
方針
- iOS Deployment Target は 8.0
- iOS SDK は 10.3 (latest)
- アーキテクチャーは arm64 armv7 x86_64 i386
- アーキテクチャーとデバイスの関係
- armv7s は build/cocos2d_libs.xcodeproj のビルド対象に入ってないし armv7 とほとんど差がない模様
- bitcode をサポート
手順
cocos2d-x-3.14.1 ディレクトリから
$ cd build
$ xcodebuild -project cocos2d_libs.xcodeproj -scheme "libcocos2d iOS" -configuration Release -sdk iphoneos10.3 \
clean build ARCHS='arm64' VALID_ARCHS='arm64' IPHONEOS_DEPLOYMENT_TARGET=8.0 \
TARGET_BUILD_DIR=tmp/arm64 BUILT_PRODUCTS_DIR=tmp/arm64 OBJROOT=tmp/arm64 SYMROOT=tmp/arm64 \
OTHER_CFLAGS=-fembed-bitcode
$ xcodebuild -project cocos2d_libs.xcodeproj -scheme "libcocos2d iOS" -configuration Release -sdk iphoneos10.3 \
clean build ARCHS='armv7' VALID_ARCHS='armv7' IPHONEOS_DEPLOYMENT_TARGET=8.0 \
TARGET_BUILD_DIR=tmp/armv7 BUILT_PRODUCTS_DIR=tmp/armv7 OBJROOT=tmp/armv7 SYMROOT=tmp/armv7 \
OTHER_CFLAGS=-fembed-bitcode
$ xcodebuild -project cocos2d_libs.xcodeproj -scheme "libcocos2d iOS" -configuration Release -sdk iphonesimulator10.3 \
clean build ARCHS='x86_64' VALID_ARCHS='x86_64' IPHONEOS_DEPLOYMENT_TARGET=8.0 \
TARGET_BUILD_DIR=tmp/x86_64 BUILT_PRODUCTS_DIR=tmp/x86_64 OBJROOT=tmp/x86_64 SYMROOT=tmp/x86_64 \
OTHER_CFLAGS=-fembed-bitcode
$ xcodebuild -project cocos2d_libs.xcodeproj -scheme "libcocos2d iOS" -configuration Release -sdk iphonesimulator10.3 \
clean build ARCHS='i386' VALID_ARCHS='i386' IPHONEOS_DEPLOYMENT_TARGET=8.0 \
TARGET_BUILD_DIR=tmp/i386 BUILT_PRODUCTS_DIR=tmp/i386 OBJROOT=tmp/i386 SYMROOT=tmp/i386 \
OTHER_CFLAGS=-fembed-bitcode
$ lipo -create -output "libcocos2d iOS.a" \
"tmp/arm64/libcocos2d iOS.a" \
"tmp/armv7/libcocos2d iOS.a" \
"tmp/x86_64/libcocos2d iOS.a" \
"tmp/i386/libcocos2d iOS.a"
$ rm -rf tmp
- この段階で libcocos2d iOS.a は 236.0MB
確認
-
cocos new
コマンドで作成した Xcode プロジェクトからcocos2d_libs.xcodeproj
サブプロジェクトを Delete すると ビルド時にリンクエラーが起きる状態になる- 作成した libcocos2d iOS.a を Finder から Xcode で開いたプロジェクトの Frameworks へドラッグ&ドロップするとビルド成功する
- クリーンビルドが早くなった
- 作成した libcocos2d iOS.a を Finder から Xcode で開いたプロジェクトの Frameworks へドラッグ&ドロップするとビルド成功する
bitcode
-
これだけだと Build Settings / Build Options / Enable Bitcode を Yes にするとビルドエラーが起きる
ld: '.../Build/Products/Debug-iphoneos/libcocos2d iOS.a(CCEAGLView-ios.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
- これは cocos2d-x-3rd-party-libs-bin で bitcode が有効になっていないため
-
cocos2d-x-3rd-party-libs-src (v3-deps-116) を bitcode 有効にしてビルドしてから上記手順 (
xcodebuild
) を実施すると bitcode を有効にしてビルドできるようになる - libcocos2d iOS.a が 276.4MB になった
-
cocos2d-x-3rd-party-libs-src (v3-deps-116) を bitcode 有効にしてビルドしてから上記手順 (
- これは cocos2d-x-3rd-party-libs-bin で bitcode が有効になっていないため