今天将cocos2d-x(2.1.3版)项目向android平台移植。因为恢复了下系统,重新配置了下环境变量。

1.先是Cygwin(2.819版)的安装。头疼了一把。大概装了好几次(我是之前有装过,保存了下载文件)。装到最后快结束时,突然报了个error。"Package: libpango1.0_0 pango1.0.sh exit code 1",还以为是少文件的问题。这样反复的试了几次。好痛苦,问题依然在。没办法。google了下,发现有论坛有人提过这个问题。

http://cygwin.com/ml/cygwin/2013-02/msg00196.html

大概意思是:在执行 /etc/postinstall/pango1.0.sh 时 要往/etc/pango 拷贝 pango.modules文件,却发现没有 pango 这个文件夹。报错。

于是,手动创建这个文件夹。回到安装向导的前一步。重新选了下,next。一路OK(好像是先unstall再install)。

然后配了下

153851754.jpg

154022875.jpg

移植时要用到。


2.*** Android NDK: Aborting 。 停止。

...

Android NDK: ERROR:/cygdrive/e/cocos2d-x/code/cocos2d-2.1rc0-x-2.1.3/HelloTest1/proj.android/../../cocos2dx/platform/third_party/android/prebuilt/libjpeg/Android.mk:cocos_jpeg_static: LOCAL_SRC_FILES points to a missing file
Android NDK: Check that /cygdrive/e/cocos2d-x/code/cocos2d-2.1rc0-x-2.1.3/HelloTest1/proj.android/../../cocos2dx/platform/third_party/android/prebuilt/libjpeg/libs/armeabi/libjpeg.a exists or that its path is correct
make: 进入目录“/cygdrive/e/cocos2d-x/code/cocos2d-2.1rc0-x-2.1.3/HelloTest1/proj.android”
/cygdrive/e/android/android-ndk-windows/android-ndk-r9/build/core/prebuilt-library.mk:45: *** Android NDK: Aborting 。 停止。
make: 离开目录“/cygdrive/e/cocos2d-x/code/cocos2d-2.1rc0-x-2.1.3/HelloTest1/proj.android”

154730587.jpg

这个是少文件。不过我从官网下的cocos2d-2.1rc0-x-2.1.3。然后build-win32.bat安装。都很顺利。最后发现时是 cocos2dx\platform\third_party 下少各个平台的第三方库文件。发现 CocosDenshion\third_party 也是少库文件。不知道为什么没解压出来。不过cocos2d-2.1rc0-x-2.1.3的压缩文件中是有这些库文件的。也不管了,解压出来覆盖过去就没有问题了。


3.编译 CCCommon.cpp 文件时报错。

Compile++ thumb : cocos2dx_static <= CCCommon.cpp
E:/cocos2d-x/code/cocos2d-2.1rc0-x-2.1.3/HelloTest1/proj.android/../../cocos2dx/platform/android/CCCommon.cpp: In function 'void cocos2d::CCLog(char const*, ...)':
E:/cocos2d-x/code/cocos2d-2.1rc0-x-2.1.3/HelloTest1/proj.android/../../cocos2dx/platform/android/CCCommon.cpp:44:72: error: format not a string literal and no format arguments [-Werror=format-security]
E:/cocos2d-x/code/cocos2d-2.1rc0-x-2.1.3/HelloTest1/proj.android/../../cocos2dx/platform/android/CCCommon.cpp: In function 'void cocos2d::CCLuaLog(char const*)':
E:/cocos2d-x/code/cocos2d-2.1rc0-x-2.1.3/HelloTest1/proj.android/../../cocos2dx/platform/android/CCCommon.cpp:54:77: error: format not a string literal and no format arguments [-Werror=format-security]
cc1plus.exe: some warnings being treated as errors

/cygdrive/e/android/android-ndk-windows/android-ndk-r9/build/core/build-binary.mk:348: recipe for target `obj/local/armeabi/objs/cocos2dx_static/platform/android/CCCommon.o' failed
make: *** [obj/local/armeabi/objs/cocos2dx_static/platform/android/CCCommon.o] Error 1
make: 离开目录“/cygdrive/e/cocos2d-x/code/cocos2d-2.1rc0-x-2.1.3/HelloTest1/proj.android”

google了下 国外论坛有人也出现了这样的问题。

因为我的ndk是r9,有人建议换回r8,我没试。最后发现有人这样解决。

修改你自己项目 proj.android\jni\Application.mk 文件,在最后加上

APP_CPPFLAGS += -Wno-error=format-security 就可以了。