Kuwapp's Blog

Android と Flutter やってます

cocos2d-xでプロジェクト作成時にいつも自分が行っている作業

プロジェクトの作成

cocos new MyGame -p com.kuwapp.mygame -l cpp -d ~/Projects
  • MyGame プロジェクト名
  • -p com.kuwapp.mygame パッケージ名
  • -l cpp 言語
  • -d ~/Projects ディレクトリ

gitignoreを追加

# Mac
.DS_Store

#Java
*.class

# XCode
*.moved-aside
build/*
*.xcworkspace
*.mode1v3
*.mode2v3
*.pbxuser
!default.xcworkspace
!default.mode1v3
!default.mode2v3
!default.pbxuser
*.perspectivev3
profile
xcuserdata
.idea/*

#Cocoa pods
*.old
Pods/*

#cocos2d-x
libs/
bin/
obj/
assets/
gen/
out/
.classpath
.project
.cproject

# backup files
*.bak
*.bak[0-9][0-9]
*.orig
*.orig[0-9][0-9]

# source packages - anywhere
*.tar.bz2
*.tar.gz
*.tar
*.tgz
*.gtgz

local.properties

project.propertiesのtargetを最新のAndroidSDKのapi levelに変更

target=android-22

cppファイルをコンパイル時に全て読み込めるようAndroid.mkを変更する

cppファイルを追加するごとにAndroid.mkに記述していくのは面倒なので自動で読めるようにする

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

CPP_FILES := $(shell find $(LOCAL_PATH)/../../Classes -name *.cpp)

LOCAL_SRC_FILES := hellocpp/main.cpp
LOCAL_SRC_FILES += $(CPP_FILES:$(LOCAL_PATH)/%=%)

LOCAL_C_INCLUDES := $(shell find $(LOCAL_PATH)/../../Classes -type d)

# _COCOS_HEADER_ANDROID_BEGIN
# _COCOS_HEADER_ANDROID_END


LOCAL_STATIC_LIBRARIES := cocos2dx_static

# _COCOS_LIB_ANDROID_BEGIN
# _COCOS_LIB_ANDROID_END

include $(BUILD_SHARED_LIBRARY)

$(call import-module,.)

# _COCOS_LIB_IMPORT_ANDROID_BEGIN
# _COCOS_LIB_IMPORT_ANDROID_END

参考:http://ichiokumanyen.hatenablog.jp/entry/2013/10/05/220232

std::to_stringなどを使用できるようApplication.mkを変更する

std::to_stringやstd::stoiはそのままでは使用できないのでApplication.mkを改良する

APP_STL := c++_static
NDK_TOOLCHAIN_VERSION=clang
APP_PLATFORM := android-9

APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char
APP_LDFLAGS := -latomic


ifeq ($(NDK_DEBUG),1)
  APP_CPPFLAGS += -DCOCOS2D_DEBUG=1
  APP_OPTIM := debug
else
  APP_CPPFLAGS += -DNDEBUG
  APP_OPTIM := release
endif

参考:http://discuss.cocos2d-x.org/t/i-cannot-call-stdlib-functions-like-to-string-stoi-etc/19405/3