以下所说的是在cocos2d-x 2.2.2 或者 2.3 版本中。本文在Eclipse总用ndk编译cocos2d-x。
老生常谈cocos2d-x JSB不是简单的js代码,涉及到C++代码,如果是Android的话又涉及到Java代码,有点复杂,如果搞过Android下的Jni的话会熟悉些。可以看下这篇文章:《Android Jni 例子 Hello JNI,ndk》
Android为了提高开发者开发应用的速度,降低难度,选择了Java,但是也可以用c或者c++,在某个版本引入了ndk。cocos2d-x是用C++开发的,所以刚好也可以在Android中使用,但是就涉及到ndk了。其实如果有Linux环境,Android完整源码,ndk编译还是比较容易的。但是大部分cocos2d-x都用windows开发,而在windows下搞ndk就比较复杂。
JDK安装,弄好环境变量,略。
去www.android.com下载ADT
google搜索ndk下载最新ndk,设置环境变量
去www.cocos2d-x.org 下载2.3版本的cocos2d-x,解压。
google搜索python 27 ,设置环境变量 (老的cocos2d-x版本不是用python 来创建项目的,vs和xcode都有模版,刚开始比较好用,但是跨平台比较麻烦,后来改用python,只需要一次创建,跨平台比较好用)
把C:\Python27;加入到PATH中。
这里还是扯下环境变量的作用,很多人不熟悉环境变量,来看下Python这个例子,假设我是安装在C盘,打开C:\Python27, 是不是看到一个exe叫做python.exe,它可以解析python代码,但是每次都要弄完整路径来解析会很麻烦的,所以就把C:\Python27加入到PATH中,这样无论在哪个目录下都可以直接访问到phthon.exe了。
进入cocos2d-x/tools/project-creator 目录,win7的,可以按住Shift,右击鼠标"此处打开命令窗口",输入python create_project.py -project TestJs -package com.test.example -language javascript
基本可以。大家可以打开create_project.py查看下源码,里面就有创建的例子的。也可以把下面的代码保存到txt中,后缀改成bat,双击运行下,但本质还是执行create_project.py。
@echo off set /p projectName=请输入项目名称(例如:test): if "%projectName%"=="" goto inputError set /p packageName=请输入项目包名(例如:org.cocos2dx.test): if "%packageName%"=="" goto inputError set /p projectLanguage=请输入编程语言(例如:选填cpp ,lua ,javascript): if "%projectLanguage%"=="" goto inputError python create_project.py -project %projectName% -package %packageName% -language %projectLanguage% pause :inputError @echo 项目名称或者包标示名不能为空! pause
复制JS代码到assets目录。这里要扯下,Android开发一般把图片,xml等资源放在res目录下的,等打包成APK的时候,会打包成一个文件。Java代码中也很容易访问的。但是除了标准的资源,像js,音乐等只能放在assets下了,打包成APK也不会是一个文件,解压APK,assets里面的资源还是原来的,不会做任何处理。这些jsb开头的js好像要下载Cocos2d-JS才有。
注意到这里有一个文件叫cocos2d-jsb.js ,这个是启动js,要跟Classes/AppDelegate.cpp中的对应起来,applicationDidFinishLaunching中有个调用 ScriptingCore::getInstance()->runScript("cocos2d-jsb.js");
在左边,右击Import
位置是下面两个地方:
cocos2d-x-2.3\cocos2dx\platform\android\java
cocos2d-x-2.3\projects\TestJs\proj.android
打开菜单Window->Preferences->Android->NDK 编辑NDK路径到你NDK的路径,注意我这里修改了默认的ndk名字。一般是比较长。
右击TestJs项目,选择Properties->Builders->New->Program,
在Main标签下的Location,选择Browse File Systerm...,选择到android NDK下面的ndk-build.cmd文件 。
Working Directory,选择Browse Workspace...,选择本项目。
在Environment标签下,点击new,
Name:NDK_MODULE_PATH
Value:
C:\D4\cocos2d-x-2.3;C:\D4\cocos2d-x-2.3\cocos2dx\platform\third_party\android\prebuilt(注意自己的实际目录,这里定义了两个值,一个是cocos2d引擎的根目录,另外一个是....prebuilt)
选择Ok确认,返回Builders界面,去掉CDT Builder前面的勾选,并将你自己刚刚创建的Builder移动到最上面,全部配置好之后OK确认。
连接手机,运行应该就可以了。APK会生成在Bin目录下,全部的C++文件会打包成一个libcocos2djs.so放在libs/armeabi目录下。
1."bash" is not found in PATH,这个错误我也不知道怎么就解决了,用Eclipse编译有时候就是会抽风,多Project->Clean几次,或者删除项目重新Import试试,再或者只能下载cygwin了,把cygwin的bin目录加入到系统环境变量中。
2.Syntax and Semantic Errors
,这个错误是点击了jni目录下的main.cpp产生的,可以在Eclipse中对这个错误进行关闭:右击你的项目 Properties-> C/C++ General -> Code Analysis -> Syntax and Semantic Errors
,去掉勾。
3. unable to process assets while packaging xxx,这个错误是因为assets的权限不够,像我在Win7的C盘中建立项目,就会有这个问题,在proj.android目录中,按shift右击打开命令窗口,给assets较高权限即可: chmod 777 -R assets/
4.还有些错误,记得右击项目属性,打开Builder删除出错的Builder.
5。还有个错误关于模拟器不支持OpenglES2.0的,可以用BlueStacks软件,它比ADT中的模拟器强大很多。当然最好还是用真机。
http://www.waitingfy.com/archives/1126/testjs
参考: