申明:
1、此内容都是平时搜集和总结的一些经验,非我人之力所及,感谢互联网大神们的慷慨分享,向你们致敬。
2、以下内容和及方法适用于cocos2dx 2.1.4 至 cocos2dx 3.6 final 版本,如有疑问,欢迎留言大家共同探讨。
一、加载某些大图片时会出现“空”图片的情况:
需要在AppActivity.java中修改
即在public class AppActivity extends Cocos2dxActivity {} 中添加如下:
public class AppActivity extends Cocos2dxActivity
{
public Cocos2dxGLSurfaceView onCreateView()
{
Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
glSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 8);
return glSurfaceView;
}
}
二、NDK配置:
关于NDK_MODULE_PATH:
需要注意在Win32的Eclipse中的中的路径是以符号间隔”;”
在MAC中是以”:”间隔
如果出现NDK编译时,无法识别C++某些语句时,请尝试在Application.mk中设置NDK_TOOLCHAIN_VERSION的版本
一般在任意行添加 NDK_TOOLCHAIN_VERSION = 4.7 或者 4.8 设置其编译方式
三、关于assets文件夹
一般编译成功却出现黑屏或者闪退的现象都是由assets文件夹中含有中文或空格或者是直接缺少文件造成的。
打包之前确保res中的所有文件都复制到了assets文件夹内部,并且都是以英文命名。
四、最重要的Android.mk文件及其自动遍历的方法
先定义自动遍历目录及子目录的函数:
# 遍历目录及子目录的函数
define walk
$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
# 遍历Classes目录
ALLFILES := $(call walk, $(LOCAL_PATH)/../../Classes)
FILE_LIST := hellolua/main.cpp
# 从所有文件中提取出所有.cpp文件 和 .c文件
FILE_LIST += $(filter %.cpp, $(ALLFILES))
FILE_LIST += $(filter %.c, $(ALLFILES))
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
CLASSFILES := $(call walk, $(LOCAL_PATH)/../../Classes)
# 自动遍历include附加文件
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
# 在Linux的系统中可以用以下方式自动遍历
LOCAL_C_INCLUDES += $(shell ls -FR $(LOCAL_C_INCLUDES) | grep $(LOCAL_PATH)/$ | sed "s/:/ /g" )
# 注意:在win32系统中↑上面的方法会出现无法识别ls造成遍历失败,由于目前没有找到好的自动遍历方法,为了省事,可以直接使用之前自动遍历所有class目录的方式,如下:
# LOCAL_C_INCLUDES += $(shell ls -FR $(LOCAL_C_INCLUDES) | grep $(LOCAL_PATH)/$ | sed "s/:/ /g" )
LOCAL_C_INCLUDES += $(ALLFILES)
如遇其他问题,欢迎各位读者一起探讨分享。
再次向解决方案提供者致敬。