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()函数中加一行,如图
打完,收工。
补充:移动开发 , 其他 ,