cocos2d-x环境配置和常见问题

来源:互联网 发布:中企动力域名 编辑:程序博客网 时间:2024/05/18 04:02

转自:http://blog.csdn.net/ecjtuync/article/details/7171942


参考
http://www.cocos2d-x.org/projects/cocos2d-x/wiki/How_to_build_and_run_HelloWorld

脚本生成工程
http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Chapter_1_-_How_to_Create_a_New_cocos2d-x_project_on_multi-platforms
  • set _CYGBIN=C:\cygwin\bin 
    The path of cygwin bin
  • set _ANDROIDTOOLS=D:\anroid\android-sdk-windows\tools 
    The path of android sdk tools
  • set _NDKROOT=D:\anroid\android-ndk-r5b
    The root of ndk

安装目录:
C:\android-ndk-r7
C:\cocos2d-1.0.1-x-0.10.0
C:\cygwin   
cygwin至少需要安装gcc和make工具,最好把vim也装起。

环境变量:
leoyangnc@leoyangnc-PC ~
$ cat env.sh
export NDK_ROOT=/cygdrive/c/android-ndk-r7
export COCOS2DX_ROOT=/cygdrive/c/cocos2d-1.0.1-x-0.10.0
alias ndk-build=/cygdrive/c/android-ndk-r7/ndk-build

leoyangnc@leoyangnc-PC /cygdrive/c/cocos2d-1.0.1-x-0.10.0/HelloWorld/android
$ cat build_native.sh
# set params
#ANDROID_NDK_ROOT=/cygdrive/d/programe/android/ndk/android-ndk-r6b
#COCOS2DX_ROOT=/cygdrive/e/cocos2d-x
ANDROID_NDK_ROOT=/cygdrive/c/android-ndk-r7
COCOS2DX_ROOT=/cygdrive/c/cocos2d-1.0.1-x-0.10.0

编译
leoyangnc@leoyangnc-PC /cygdrive/c/cocos2d-1.0.1-x-0.10.0/HelloWorld/android
$ ./build_native.sh
/cygdrive/c/android-ndk-r7 /cygdrive/c/cocos2d-1.0.1-x-0.10.0/HelloWorld/android
make: Entering directory `/cygdrive/c/cocos2d-1.0.1-x-0.10.0/HelloWorld/android'
Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi-v7a/gdbserver
Gdbsetup       : libs/armeabi-v7a/gdb.setup
Install        : libcocos2d.so => libs/armeabi/libcocos2d.so
Install        : libcocosdenshion.so => libs/armeabi/libcocosdenshion.so
Install        : libgame_logic.so => libs/armeabi/libgame_logic.so
Install        : libhelloworld.so => libs/armeabi/libhelloworld.so
Install        : libcocos2d.so => libs/armeabi-v7a/libcocos2d.so
Install        : libcocosdenshion.so => libs/armeabi-v7a/libcocosdenshion.so
Install        : libgame_logic.so => libs/armeabi-v7a/libgame_logic.so
Install        : libhelloworld.so => libs/armeabi-v7a/libhelloworld.so
make: Leaving directory `/cygdrive/c/cocos2d-1.0.1-x-0.10.0/HelloWorld/android'
/cygdrive/c/cocos2d-1.0.1-x-0.10.0/HelloWorld/android
------------------------------------------------------------------------------

cocos2d-x 0.10.0 android 编译后出现错误

android sdk 15,ndk 7,cocos2d-x  0.10.0。创建的项目何helloworld都出现这个错误,请教问题原因及解决方案。

Compile++ thumb  : cocos2d <= CCGrabber.cpp
jni/../../../cocos2dx/effects/CCGrabber.cpp: In constructor 'cocos2d::CCGrabber::CCGrabber()':
jni/../../../cocos2dx/effects/CCGrabber.cpp:46: error: 'glGenFramebuffersOES' was not declared in this scope
jni/../../../cocos2dx/effects/CCGrabber.cpp: In member function 'void cocos2d::CCGrabber::grab(cocos2d::CCTexture2D*)':
jni/../../../cocos2dx/effects/CCGrabber.cpp:61: error: 'glBindFramebufferOES' was not declared in this scope
jni/../../../cocos2dx/effects/CCGrabber.cpp:65: error: 'glFramebufferTexture2DOES' was not declared in this scope
jni/../../../cocos2dx/effects/CCGrabber.cpp:68: error: 'glCheckFramebufferStatusOES' was not declared in this scope
jni/../../../cocos2dx/effects/CCGrabber.cpp: In member function 'void cocos2d::CCGrabber::beforeRender(cocos2d::CCTexture2D*)':
jni/../../../cocos2dx/effects/CCGrabber.cpp:88: error: 'glBindFramebufferOES' was not declared in this scope
jni/../../../cocos2dx/effects/CCGrabber.cpp: In member function 'void cocos2d::CCGrabber::afterRender(cocos2d::CCTexture2D*)':
jni/../../../cocos2dx/effects/CCGrabber.cpp:113: error: 'glBindFramebufferOES' was not declared in this scope
jni/../../../cocos2dx/effects/CCGrabber.cpp: In destructor 'virtual cocos2d::CCGrabber::~CCGrabber()':
jni/../../../cocos2dx/effects/CCGrabber.cpp:127: error: 'glDeleteFramebuffersOES' was not declared in this scope
make: *** [obj/local/armeabi/objs-debug/cocos2d/effects/CCGrabber.o] Error 1

解决方案
打开 cocos2dx/Android.mk
把下面这行
LOCAL_CFLAGS := -DUSE_FILE32API
改成
LOCAL_CFLAGS := -DUSE_FILE32API -DGL_GLEXT_PROTOTYPES=1
----------------------------------------------------
在使用Android NDK进行编译的时候可能会出现 
Android NDK: Host 'awk' tool is outdated. Please define HOST_AWK to point to Gawk or Nawk ! 
解决方案
Linxu 平台:cd /cygdrive/c/android-ndk-r7/prebuilt/linux-x86/bin/awk
Windows 平台:cd /cygdrive/c/android-ndk-r7/prebuilt/windows/bin/awk
到相关目录下查看,发现真有一个awk执行文件,也就是说ndk默认自带了一个过期的awk工具,删掉它即可(为保险起见可mv重命名),重新ndk-build,成功!
-----------------------------------------------------
创建android工程
参考:
http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Chapter_1_-
_How_to_Create_a_New_cocos2d-x_project_on_multi-platforms#4-Start-with-Android
添加到工程之后,包org.cocos2dx.lib中的某些java文件会出现编译错误。
解决方案
到工程属性->Java Compiler->Compiler compliance level: 默认是1.5,把它改为1.6

原创粉丝点击