LoginSignup
3
3

More than 5 years have passed since last update.

cocos2d-x-3.14.1 の iOS static ライブラリをビルド

Last updated at Posted at 2017-04-10

目的

  1. cocos2d-x アプリのビルドを速くしたい
    1. cocos new コマンドで作成した Xcode プロジェクトでは、クリーンビルドの度にライブラリ部分も再ビルドする
  2. Xcode が cocos2d-x ライブラリ部分に対して表示する警告を見たくない
    1. cocos2d-x-3.14.1 の libcocos2d iOS で 229 issues

環境

  1. Mac OS X 10.12.4 (英語)
  2. Xcode 8.3.1
  3. git-2.12.2 (brew)

方針

  1. iOS Deployment Target は 8.0
  2. iOS SDK は 10.3 (latest)
  3. アーキテクチャーは arm64 armv7 x86_64 i386
    1. アーキテクチャーとデバイスの関係
    2. armv7s は build/cocos2d_libs.xcodeproj のビルド対象に入ってないし armv7 とほとんど差がない模様
  4. 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
  1. この段階で libcocos2d iOS.a は 236.0MB

確認

  1. cocos new コマンドで作成した Xcode プロジェクトから cocos2d_libs.xcodeproj サブプロジェクトを Delete すると ビルド時にリンクエラーが起きる状態になる
    1. 作成した libcocos2d iOS.a を Finder から Xcode で開いたプロジェクトの Frameworks へドラッグ&ドロップするとビルド成功する
      1. クリーンビルドが早くなった

bitcode

  1. これだけだと 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
    
    1. これは cocos2d-x-3rd-party-libs-bin で bitcode が有効になっていないため
      1. cocos2d-x-3rd-party-libs-src (v3-deps-116) を bitcode 有効にしてビルドしてから上記手順 (xcodebuild) を実施すると bitcode を有効にしてビルドできるようになる
      2. libcocos2d iOS.a が 276.4MB になった
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3