Cocos2d入门问题总结

第一次学习Cocos2d,在VS2012下跑helloworld没有什么问题,但是移植到Android上时确出现了一大堆的问题,经过一天半的不懈努力,终于让helloworld在我的手机上跑起来了。下面我总结下我的helloworld 之旅中遇到的问题,与大家一起学习交流。

首先说下我的工作环境
PC:WIN7
NDK:android-ndk-r8b
Cocos2d-x V2.2.3

一、新工程的创建时报错
打开cmd终端,进入F:\Cocos2d\Cocos2d-x\cocos2d-x-2.2.3\tools\project-creator 目录下,这里说下如果不在这个下执行create_project.py脚本会有问题,因为里面用到了相对路径的操作。我之前就为了方便把F:\Cocos2d\Cocos2d-x\cocos2d-x-2.2.3\tools\project-creator 这个目录设置到环境变量里面去了,然后就报错了。

创建命令
create_project.py -project helloworld -package com.skooo.game -language cpp
具体意思不解释

二、NDK_ROOT的配置
我在D:\cygwin\home\Administrator中的.bash_profile配置了NDK_ROOT的环境变量,但是在Eclipse里面编译的时候还是提示没有定义NDK_ROOT,是因为Cygwin与WIN7的环境变量是隔离的,所有还需要到WIN 7下的我的电脑-》属性里面去设置NDK_ROOT的环境变量,然后重启电脑。

三、Eclipse中的main.cpp许多的方法提示could not be resolved,导致无法启动运行
其实把第二部陪好了后,clean工程的时候,jni是可以生成so库的,说明代码没有问题,但是运行的时候它提示工程中还有错误,让我们先解决。其实这些cpp中的错误我们在编译时忽略它的错误就可以了。具体设置如图1:

然后再运行一遍,apk可以生成了, 但是运行时报了一个错:
E/AndroidRuntime(21949): Caused by: java.lang.ClassNotFoundException: Didn’t find class “com.skooo.game.hello” on path:
DexPathList,nativeLibraryDirectories=[/data/app-lib/com.skooo.game-1, /vendo
说找不到那个类。这是由于我们在编译的时候没有把jni生成的so库没有编译进去,正常情况下运行NDK里面的hello-jni是可以自动把so库打包到apk里面去的,我不确定是不是由于上面我们把jni里面的错误给忽略而导致的。
解决方法是在build path中把jni的so库加入就行了。方法如图2:

再次点击运行,手机上终于可以正常运行了。
经过一天多的折腾,终于可以进行下一步学习了,希望跟我一样新入门的朋友在遇到问题时不要气馁,多百度,相信最后肯定是可以调通的,只不过是时间问题,调试的过程中遇到的问题,去解决了,这对自己对环境搭建的理解更加深刻。

欢迎交流~