LoginSignup
10
10

More than 5 years have passed since last update.

cocos2d-xのビルドを早くする (Android版)

Last updated at Posted at 2014-01-23

殴り書きで初投稿!

とりあえず備忘録として書き留めておきます。

「Ecipseでcocos2d-xのビルドが遅い!」って思ったことありませんか?
chipmunkもBox2dも今回は使ってないのになぁ〜、ビルド対象に含まれてる。
ちょっとだけでもビルド時間を減らしたい、バイナリのサイズを減らしたい方は読んでみてください。

前提条件

  • CCPhysicsSpriteクラスを使用していないこと
  • chipmunk, Box2dを使用していないこと

ビルドから除外する方法

cocos2d-2.1rc0-x-2.1.3/extensionsのAndroid.mkを変更する。

  1. CCPhysicsDebugNode.cpp,CCPhysicsSprite.cppをビルド対象からはずす。
  2. Box2d, chipmunkをビルド対象からはずす。

ただしApplication.mkのAPP_CPPFLAGSの内容次第ではビルド対象にするようにしています。
(GNU makeの書き方はよくわからないので、引数の値に関係なく定義されていたらビルド対象にしています)

Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE    := cocos_extension_static

LOCAL_MODULE_FILENAME := libextension

LOCAL_SRC_FILES := AssetsManager/AssetsManager.cpp \
CCBReader/CCBFileLoader.cpp \
CCBReader/CCBReader.cpp \
CCBReader/CCControlButtonLoader.cpp \
CCBReader/CCControlLoader.cpp \
CCBReader/CCLabelBMFontLoader.cpp \
CCBReader/CCLabelTTFLoader.cpp \
CCBReader/CCLayerColorLoader.cpp \
CCBReader/CCLayerGradientLoader.cpp \
CCBReader/CCLayerLoader.cpp \
CCBReader/CCMenuItemImageLoader.cpp \
CCBReader/CCMenuItemLoader.cpp \
CCBReader/CCNodeLoader.cpp \
CCBReader/CCNodeLoaderLibrary.cpp \
CCBReader/CCParticleSystemQuadLoader.cpp \
CCBReader/CCScale9SpriteLoader.cpp \
CCBReader/CCScrollViewLoader.cpp \
CCBReader/CCSpriteLoader.cpp \
CCBReader/CCBAnimationManager.cpp \
CCBReader/CCBKeyframe.cpp \
CCBReader/CCBSequence.cpp \
CCBReader/CCBSequenceProperty.cpp \
CCBReader/CCBValue.cpp \
CCBReader/CCData.cpp \
CCBReader/CCNode+CCBRelativePositioning.cpp \
GUI/CCControlExtension/CCControl.cpp \
GUI/CCControlExtension/CCControlButton.cpp \
GUI/CCControlExtension/CCControlColourPicker.cpp \
GUI/CCControlExtension/CCControlHuePicker.cpp \
GUI/CCControlExtension/CCControlSaturationBrightnessPicker.cpp \
GUI/CCControlExtension/CCControlSlider.cpp \
GUI/CCControlExtension/CCControlSwitch.cpp \
GUI/CCControlExtension/CCControlUtils.cpp \
GUI/CCControlExtension/CCInvocation.cpp \
GUI/CCControlExtension/CCScale9Sprite.cpp \
GUI/CCControlExtension/CCControlPotentiometer.cpp \
GUI/CCControlExtension/CCControlStepper.cpp \
GUI/CCScrollView/CCScrollView.cpp \
GUI/CCScrollView/CCTableView.cpp \
GUI/CCScrollView/CCTableViewCell.cpp \
GUI/CCScrollView/CCSorting.cpp \
GUI/CCEditBox/CCEditBox.cpp \
GUI/CCEditBox/CCEditBoxImplAndroid.cpp \
network/HttpClient.cpp \
LocalStorage/LocalStorageAndroid.cpp \
spine/Animation.cpp \
spine/AnimationState.cpp \
spine/AnimationStateData.cpp \
spine/Atlas.cpp \
spine/AtlasAttachmentLoader.cpp \
spine/Attachment.cpp \
spine/AttachmentLoader.cpp \
spine/Bone.cpp \
spine/BoneData.cpp \
spine/Json.cpp \
spine/RegionAttachment.cpp \
spine/Skeleton.cpp \
spine/SkeletonData.cpp \
spine/SkeletonJson.cpp \
spine/Skin.cpp \
spine/Slot.cpp \
spine/SlotData.cpp \
spine/extension.cpp \
spine/spine-cocos2dx.cpp

ifneq (,$(findstring CC_ENABLE_CHIPMUNK_INTEGRATION,$(APP_CPPFLAGS)))
$(info ENABLE Chipmunk Physics)
LOCAL_SRC_FILES += physics_nodes/CCPhysicsDebugNode.cpp
LOCAL_SRC_FILES += physics_nodes/CCPhysicsSprite.cpp
else
$(info DISABLE Chipmunk Physics)
endif

ifneq (,$(findstring CC_ENABLE_BOX2D_INTEGRATION,$(APP_CPPFLAGS)))
$(info ENABLE Box2d Physics)
LOCAL_SRC_FILES += physics_nodes/CCPhysicsDebugNode.cpp
LOCAL_SRC_FILES += physics_nodes/CCPhysicsSprite.cpp
else
$(info DISABLE Box2d Physics)
endif

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_curl_static

ifneq (,$(findstring CC_ENABLE_BOX2D_INTEGRATION,$(APP_CPPFLAGS)))
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
endif

ifneq (,$(findstring CC_ENABLE_CHIPMUNK_INTEGRATION,$(APP_CPPFLAGS)))
LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static
endif

#LOCAL_CFLAGS += -DCC_ENABLE_CHIPMUNK_INTEGRATION=1
#LOCAL_EXPORT_CFLAGS += -DCC_ENABLE_CHIPMUNK_INTEGRATION=1

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) \
                           $(LOCAL_PATH)/CCBReader \
                           $(LOCAL_PATH)/GUI/CCControlExtension \
                           $(LOCAL_PATH)/GUI/CCScrollView \
                           $(LOCAL_PATH)/network \
                           $(LOCAL_PATH)/LocalStorage 

include $(BUILD_STATIC_LIBRARY)

$(call import-module,cocos2dx)
$(call import-module,CocosDenshion/android)
$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)

ifneq (,$(findstring CC_ENABLE_BOX2D_INTEGRATION,$(APP_CPPFLAGS)))
$(call import-module,external/Box2D)
endif

ifneq (,$(findstring CC_ENABLE_CHIPMUNK_INTEGRATION,$(APP_CPPFLAGS)))
$(call import-module,external/chipmunk)
endif

もしchipmunkもしくはBox2dを有効にしたいときは、自分のプロジェクトのApplication.mkを以下のように追記します。

Application.mk
# chipmunk使うときは
APP_CPPFLAGS += -DCC_ENABLE_CHIPMUNK_INTEGRATION=1

# Box2d使うときは
APP_CPPFLAGS += -DCC_ENABLE_BOX2D_INTEGRATION=1

条件文ではAPP_CPPFLAGSしか見ていないので、他の箇所に設定するとうまくうごきません。

さらに自分のアプリプロジェクトのAndroid.mkからBox2dとchipmunkの設定をコメント化する。
(jniフォルダにあるAndroid.mk)

Android.mk
#LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
#LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static

#$(call import-module,external/Box2D)
#$(call import-module,external/chipmunk)

殴り書きですが誰かの役にでも立てば。。。

課題

GNU makeの条件文はよく分かりません。
このあたり詳しい人がいれば、もっとうまくかける方法を教えてください。

10
10
1

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
10
10