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

相关推荐