android ndk cocos2dx 开发环境配置
cocos2dx是目前出现在大众视野中主流的可移植框架.可以把c++编写的程序移植到各个目标平台.如果你想搭建一个anroidndk+coco2dx+eclipse的开发环境,相信下面的内容讲会帮到你
网络上很多在window下面配置c++eclipse开发环境的帖子,基本是泛泛而谈,一旦出错,无法修复.如果你人品不好,配置的cygwin编译环境死活不能运行,根本找不到错误.而且即便在一台机器上配置好,在另外的机器上如果需要搭建环境,重复劳动不说,错误还是有可能重复出现,最终你面临的就是细节细节,耗费你太多开发的热情.
下面我介绍一种靠谱的解决方法
1下载cocos2d-1.0.1-x-0.13.0-beta,cocos2dx1.0的两个版本区别不大
2修改解压目录下的create-android-project.bat或者是create-android-project.sh,修改其中的"%_ANDROIDTOOLS%"_CYGBIN,这里我建议在使用linuxshell来建立android项目.
3运行create-android-project.bat按照提示输入包和项目名字后会在cocos2d-1.0.1-x-0.13.0-beta目录下产生新的eclipse项目.
4打开eclipse导入新android项目.
5下面和其他文章不同,其他文章会建议你把刚才导入的android项目转化为c++项目,然后增加NDKbuilder来编译c++代码.
也就是其他帖子是建议你使用使用一个项目来进行ndk的开发,这个项目是c++项目,同时也是android项目.
我对这样的方式不太认同,我推荐通过文件夹共享的方式来进行开发,建立一个c++项目来开发android的c++部分,然后再建立一个android项目,里面只有一个main.cpp,c++项目修改时,通过运行下面的脚本来更新android项目下面的so文件.这样android项目就相对独立,不会因为c++include的一点语法错误而不能编译了.另外的一个好处是c++项目可以使用其他的开发工具开发,而android项目不受影响.例如你可以使用vs来写c++,通过脚本更新android中的so文件,这样android项目永远都是好的,不需要考虑eclipse编译c++的各种问题.
<project name="precompile" default="build"> <property name="projectdir" value="D:/your/android/project/root/dir" /> <property name="ndk_root" value="D:/android-ndk-r8b" /> <property name="cocos2dx_root" value="D:/cocos2d-1.0.1-x-0.13.0-beta" /> <property name="sep" value=";" /> <property name="NDK_MODULE_PATH" value="${ndk_root}${sep}${cocos2dx_root}${sep}${cocos2dx_root}/cocos2dx/platform/third_party/android/prebuilt" /> <target name="build"> <exec command="${ndk_root}/ndk-build.cmd"> <arg line="-C ${projectdir}" /> <arg line="NDK_MODULE_PATH=${NDK_MODULE_PATH}" /> <arg line="NDK_LOG=1" /> <arg line="V=1" /> </exec> </target> </project>
运行这个脚本就可以调用ndk来编译c++代码为so了.无需外部编译环境.
6在android项目的的父文件夹(里面还有Classes文件夹的那个目录)中建立一个eclipsec++项目来编辑c++代码.这里只是借用了eclipse良好的图形界面来编辑c++代码,却并不指望eclipse可以正确的运行代码.c++文件编辑完成后调用ant可以把代码编译成so在手机上运行.
anroidndk项目调试比较繁琐,一旦崩溃很难找到错误.所以你还需要一个本地测试环境,也就是c++application.coco2dx提供了linux和windows下面建立桌面编译环境的方式.linux操作系统下,cocos2d-1.0.1-x-0.13.0-beta中含有proj.linux,按照官方的说明导入,如果人品好就可以启动linux下的cocos2dx程序了.如果不行失败,那么还有一种解决方法就是使用visualstudio导入cocos2d-1.0.1-x-0.13.0-beta自带的vsproject,很简单的几个步骤就能在windows下面启动桌面测试程序了.我就是这样.
到这里,你已经对怎样建立一个cpp项目,在自己的桌面上运行,然后在android上编译为so有了很多了解,如果运气好,应该跑通了.
下面附送一段扫描java代码并且生成android.mk文件中srcinclude路径的代码.在你增删cpp文件后常需要修改Android.mk,这个过程很是痛苦.
package com.hurry07.includecpp; import java.io.File; public class CppIncludePathPrint { static int filecount; public static void main(String[] args) { StringBuffer sb = new StringBuffer("LOCAL_SRC_FILES := youprojectname/main.cpp\\\n"); output(new File("D:/cocos2d-1.0.1-x-0.13.0-beta/youprojectname/Classes"), "\t../../", sb); System.out.println(sb); } private static void output(File file, String prefix, StringBuffer sb) { if (file.isFile()) { if (file.getName().endsWith(".h")) { return; } if (filecount > 0) { sb.append('\\'); sb.append('\n'); } filecount++; sb.append(prefix); sb.append(file.getName()); } else if (file.isDirectory()) { prefix += file.getName() + "/"; File[] subfile = file.listFiles(); for (int i = 0; i < subfile.length; i++) { output(subfile[i], prefix, sb); } } } }
如果可以使用linux,我建议在linux下面开发androidndk项目.linux下配置eclipsec++toolchain非常容易,只要点选一下即可.另外eclipse4.2中支持c++project->makefileproject->android这种类型,使用它建立c++project以后,只要ndk-build可以运行,那么eclipse可以自动识别你所有依赖的android或者是cocos2dxmodual的inclue路径,c++项目路径设置变得非常容易.
mac上使用xcode来开发c++然后移植到android上也是一个方案,mac按照官方的文档很简单就能建立cocos2dx项目,基本不需要拼人品.mac对开发人员才是最靠谱的啊.
一切都建立在一个良好人品的基础上,GoodLock