当前位置:编程学习 > wap >>

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

距离上次玩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中增加环境变量
 
 
[cpp] 
export ANDROID_SDK_ROOT=~/workspace/android-sdk-macosx  
export ANDROID_NDK_ROOT=~/workspace/android-ndk-r8b  
export COCOS2DX_ROOT=~/workspace/cocos2d-x  
export NDK_ROOT=~/workspace/android-ndk-r8b  
export PATH=$PATH:$ANDROID_SDK_ROOT  
export PATH=$PATH:$ANDROID_NDK_ROOT  
 
export ANDROID_SDK_ROOT=~/workspace/android-sdk-macosx
export ANDROID_NDK_ROOT=~/workspace/android-ndk-r8b
export COCOS2DX_ROOT=~/workspace/cocos2d-x
export NDK_ROOT=~/workspace/android-ndk-r8b
export PATH=$PATH:$ANDROID_SDK_ROOT
export 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有惊喜
 
 
[cpp] 
HELLOWORLD_ROOT=$COCOS2DX_ROOT/samples/HelloCpp  
 
HELLOWORLD_ROOT=$COCOS2DX_ROOT/samples/HelloCpp这个是定义的HelloWorld的路径,这个路径不对,少个Cpp。所以这个需要改为如下:
 
 
[cpp]  
HELLOWORLD_ROOT=$COCOS2DX_ROOT/samples/Cpp/HelloCpp  
 
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中有一行
 
[cpp] 
$ANDROID_SDK_ROOT_LOCAL/tools/android update project -l ../../cocos2dx/platform/android/java -p $PROJECT_DIR/      proj.android  
 
$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()函数中加一行,如图
 
 

\

打完,收工。
 
补充:移动开发 , 其他 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,