一、编译并运行HelloWorld项目
1.为了方便,在D:\Android\cocos2d-x-2.1.4\cocos2d-x-2.1.4下建立workspace文件夹进行存放eclipse工程目录。(注意:该目录位置可任意)
2.eclipse打开该目录,选择File-New-project,在弹出的界面中选择Android Project from Existing Code,如图:
3.选择项目路径下的proj.android 路径(之前的版本是android 文件夹D:\Android\cocos2d-x-2.1.4\cocos2d-x-2.1.4\projects\HelloWorld),选中并新建文件,如图:
4.单击鼠标右键选中项目后,选择properties-Builder-New,添加NDK 路径,如图:
5.分别选择Browse File System 和Browse Workspace,选择ndkbuild.cmd 和项目的路径,如图:
6.Refresh标签,选中下图红色。
7.Cocos2D-x 2.0 以上版本还要设置NDK_MODULE_PATH 环境变量,如图2-19 所示,填
写Cocos2D-x 的库的路径和第三方库的路径,中间用分号相隔,如例:......\cocos2d-2.0-rc0ax-
2.0; .....\cocos2d-2.0-rc0a-x-2.0\ cocos2dx\platform\ third_party\android\prebuilt。
8.Build Options标签,选中下图红色。
8.Build Options标签,点击Specify Resource之后,选中jnni,Finish、应用、确定、确定。
9.之后日志会出现错误:error: format not a string literal and no format arguments [-Werror=format-security]。在Application.mk(在eclipse工程下的jni)里面添加下面代码:APP_CPPFLAGS += -Wno-error=format-security
10.src还有错误提示,是因为缺少cocos2D-x安卓包,把D:\Android\cocos2d-x-2.1.4\cocos2d-x-2.1.4\cocos2dx\platform\android\java\src下的文件复制到eclipse工程的src下(即:D:\Android\cocos2d-x-2.1.4\cocos2d-x-2.1.4\projects\HelloWorld\proj.android\src)。
11.点击eclipse工程,右键“刷新”;点击菜单project-》clean。重新编译工程,需要等待几分钟。至此,直接在真机上可以运行,如下图。
四、一些问题的解决方案(以下来自网络)
-
1. Library错误
导入HelloCpp项目后,在 “项目属性-Java Build Path-source” 中加入
cocos2d-x-2.1.4\cocos2dx\platform\android\java
路径。然后进入 “项目属性-Android-Library”,删除这里的“Reference Project”,否则怎么编译都会报错。cygwin环境和ndk only环境均会出现。切记切记!2. NDK_MODULE_PATH 环境变量配置
具体的路径可以查看
cocos2d-x-2.1.4\samples\Cpp\HelloCpp\proj.android\build_native.sh
的最后几行。cygwin环境不需要设置这个变量,直接执行build_native.sh
即可。这个环境变量可以配置在Windows系统环境变量中,也可以配置在Eclipse项目的builder属性中,还可以直接配置在
project/jni/Application.mk
文件中。若配置在
Application.mk
文件中,可以这样写:NDK_MODULE_PATH:=cocos2d-x-2.1.4;cocos2d-x-2.1.4\cocos2dx\platform\third_party\android\prebuilt
3. Fatal signal 11 (SIGSEGV) at 0×00000000 (code=1)
apk打包成功,安装执行后出现这个错误退出。这一般是由于C++编译失败造成。对于cygwin环境,再执行
build_native.sh
编译一次即可成功;对于ndk only环境,也需要重新执行一次编译(如果没有配置自动刷新,那么可以手动选择Run-build project)。4. 建立自定义builder的问题
网上其他文章都提到为了不依赖cygwin,需要在 “项目属性-Builders” 中建立一个新的buildr,调用NDK提供的
ndk-build.cmd
来编译。这样做有2个问题:- 没有强调 Builder 的编译顺序。默认新建的Builder是处于所有已有Builder的末尾,这可能会导致Android Package Builder等Builder依赖错误;
- 默认存在的 “CDT Builder” 依然是调用
bash build_native.sh
来编译,若没有安装cygwin,可能会出现下面的错误:
bash D:/cocos2d-x/cocos2d-x-2.1.4/samples/Cpp/HelloCpp/proj.android/build_native.sh clean
Cannot run program "bash": Launching failed
Error: Program "bash" not found in PATH
调整现有的Builder的属性:
- 调整 “项目属性-C/C++ Builder” 选项,将 “Build command” 的值从原来的
bash ${ProjDirPath}/build_native.sh
设置为x:\android-ndk-r8e\ndk-build.cmd
; - 调整 “项目属性-C/C++ builder-Environment” 选项,加入 NDK_MODULE_PATH 环境变量,其值与上面介绍的相同。
-