cocos2d-x最新2.1.0版本若干问题

来源:互联网 发布:销售出库单软件 编辑:程序博客网 时间:2024/05/17 12:20

距离上次玩cocos2dx,已经是几个月以前的事情。今天去官网一看,已经有2.0.3的稳定版,且2.1.0的beta版也出来了。于是在github上clone了一份2.1.0的代码,升级到最新版本。


首先说一下升级Xcode的模板。就是把~/Library/Developer/Xcode/Templates的cocos2d-x删掉,然后运行cocos2d-x根目录下的install-templates-xcode.sh


然后说一下android的环境(Mac/Linux)。主要看下一几个脚本文件。

1. cocos2d-x根目录下的create-android-project.sh脚本

     这个脚本需要sdk和ndk的路径。但是可以不改这个脚本,因为它会去取全局环境变量,所以只需要在bash_profile中增加环境变量

export ANDROID_SDK_ROOT=~/workspace/android-sdk-macosxexport ANDROID_NDK_ROOT=~/workspace/android-ndk-r8bexport COCOS2DX_ROOT=~/workspace/cocos2d-xexport NDK_ROOT=~/workspace/android-ndk-r8bexport PATH=$PATH:$ANDROID_SDK_ROOTexport PATH=$PATH:$ANDROID_NDK_ROOT
设为自己的路径即可

这个脚本主要做了两件事

1. 创建一个android工程 就是调的android.sdk/tools/下的android命令,具体可以自己看谷歌文档

2. 调用template/android/下的copy_files.sh脚本来拷贝文件,并对工程进行一些修改,比如小改AndroidManifest.xml。


好了 ,看一下copy_files.sh这个脚本,就是一系列的copy,比如拷贝资源文件,java文件,修改AndoirdManifest.xml。


主要工作的脚本就是这两个。问题来了

之前用的2.0.1的版本,在根目录下有个HelloWorld。运行create-android-project.sh脚本创建一个新工程,它的初始java文件 jni文件,资源文件都是拷贝自这个HelloWorld工程。

然后2.1.0的版本有一些改动。2.1.0版将helloworld 和tests及一些Lua,javascript的demo都放在了samples目录下。\

在2.1.0版的根目录下运行create-android-project.sh生成新工程会出现问题,AndoridManifest.xml是个空文件,不能用ant编译。

我通过查看它的脚本,发现copy_files.sh有惊喜

HELLOWORLD_ROOT=$COCOS2DX_ROOT/samples/HelloCpp
这个是定义的HelloWorld的路径,这个路径不对,少个Cpp。所以这个需要改为如下:

HELLOWORLD_ROOT=$COCOS2DX_ROOT/samples/Cpp/HelloCpp
所以拷贝的时候根本找不到helloworld的目录,嘿嘿。

再看copy_src_and_jni()函数,它拷贝了HellWorld目录的src和jni文件。这个脚本和2.0.1版本有一点区别。2.0.1是先调用copy_src_and_jni()函数拷贝src和jni目录,然后调用copy_library_src()拷贝cocos2dx/platform/android/java/src_common/下的java文件。而2.1.0没有copy_library_src()函数,就是没有拷贝platform下的java文件。它是怎么做的呢。

在create-android-project.sh中有一行

$ANDROID_SDK_ROOT_LOCAL/tools/android update project -l ../../cocos2dx/platform/android/java -p $PROJECT_DIR/      proj.android
它是把platform下的java文件作为新工程的库来搞的。所以如果用eclipse的话同样可以把platform下的java做成一个库工程。但我试过在命令行,用ant编译不过。我不知道是不是它updata project后生成的build.xml问题,个人比较菜,没搞定,求高手指教。

于是我还是把他改成跟2.0.1一样的方式了。如下

1.注释掉上面那句,即在行首加一个#

2.修改copy_files.sh脚本的HELLOWORLD_ROOT路径,如下


3.修改copy_files.sh脚本。

   在cop_src_and_jni()函数中加一行,如图

打完,收工。

原创粉丝点击