创建项目
目录:cocos2d-x/tools/project-creator
命令:./create_project.py -project path_test -package com.yiwanzu.test -language cpp
拷贝:cocos2d-x/tools/lua_project_generator/template/android/src的org文件夹
设置:见下文
右键Package Explorer里的SimpleGame->Properties->C/C++ Build->Tool Chain Editor
Display compatible toolchains only:不选
Current toolchain:Android GCC
Current builder:Android Builer
点击C/C++ Build
Build command:添加 NDK_DEBUG=1
Generate MakeFiles automatically:不勾选
Bulid directory:${ProjDirPath}
tolua++
目录:cocos2d-x/tools/tolua++/tolua++.Mac.zip
命令:./tolua++ -n tolua_test -o ltolua_test.cpp tolua_test.pkg
填坑
析构函数不能调用任何cocos2d-x里面的东西。
播放空字符串的声音会导致句柄泄漏。
修改项目名称:Bulid Settings->Product Name
修改项目名称:build.xml <projectname="test"default="help">
安卓只认扩展名为小写ttf的字体文件。
void AppDelegate::applicationWillEnterForeground()里面不能创建对象。
安卓某些机型创建size为0的ttf label会导致下一次创建label崩溃。
安卓某些情况下直接在touchend里面卸载场景会崩溃。
// 修正android字体位置和ios一致
// final int h = (int) Math.ceil(fm.bottom - fm.top);
final int h = (int) Math.ceil(fm.descent - fm.ascent);
安卓自动添加cpp文件(属于坑)
define walk
$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes)
FILE_LIST := hellocpp/main.cpp
FILE_LIST += $(filter %.cpp, $(ALLFILES))
FILE_LIST += $(filter %.c, $(ALLFILES))
$(info $(ALLFILES))
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
安卓class文件夹下的所有头文件都能被找到(又一个坑)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_C_INCLUDES += $(shell ls -FR $(LOCAL_C_INCLUDES) | grep $(LOCAL_PATH)/$ )
LOCAL_C_INCLUDES := $(LOCAL_C_INCLUDES:$(LOCAL_PATH)/%:=$(LOCAL_PATH)/%)
define walk
$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
define walkDir
$(1) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
ALL_DIR = $(call walkDir, $(LOCAL_PATH)/../../Classes)
LOCAL_C_INCLUDES := $(filter-out %.c %.cc %.cpp %.mm %.m %.h %.pkg, $(ALL_DIR))
glGetError 0x0502(坑王啊)
第一从出现是因为把CCLabelBMFont强转成CCSprite调用setOpacity后,在之后加载文件的时候出现这个错误。
第二次出现在使用CCClippingNode后,在之后加载文件的时候出现这个错误。