`

android ndk cocos2dx 开发环境配置

 
阅读更多
cocos2dx 是目前出现在大众视野中主流的可移植框架. 可以把c++编写的程序移植到各个目标平台. 如果你想搭建一个 anroid ndk + coco2dx + eclipse 的开发环境, 相信下面的内容讲会帮到你

网络上很多在window下面配置c++ eclipse 开发环境的帖子, 基本是泛泛而谈, 一旦出错, 无法修复. 如果你人品不好, 配置的 cygwin 编译环境死活不能运行, 根本找不到错误. 而且即便在一台机器上配置好, 在另外的机器上如果需要搭建环境, 重复劳动不说, 错误还是有可能重复出现, 最终你面临的就是细节细节, 耗费你太多开发的热情.

下面我介绍一种靠谱的解决方法
1 下载 cocos2d-1.0.1-x-0.13.0-beta, cocos2dx 1.0 的两个版本区别不大
2 修改解压目录下的 create-android-project.bat 或者是 create-android-project.sh, 修改其中的 "%_ANDROIDTOOLS%" _CYGBIN, 这里我建议在使用 linux shell 来建立 android 项目.
3 运行 create-android-project.bat 按照提示输入包和项目名字后会在 cocos2d-1.0.1-x-0.13.0-beta 目录下产生新的eclipse项目.
4 打开 eclipse 导入新 android 项目.
5 下面和其他文章不同, 其他文章会建议你把刚才导入的 android 项目转化为 c++ 项目, 然后增加 NDK builder 来编译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 文件夹的那个目录) 中建立一个 eclipse c++ 项目来编辑 c++ 代码. 这里只是借用了 eclipse 良好的图形界面来编辑c++代码, 却并不指望 eclipse 可以正确的运行代码. c++ 文件编辑完成后调用 ant 可以把代码编译成 so 在手机上运行.

anroid ndk 项目调试比较繁琐, 一旦崩溃很难找到错误. 所以你还需要一个本地测试环境, 也就是 c++ application. coco2dx 提供了 linux 和 windows 下面建立桌面编译环境的方式. linux 操作系统下,  cocos2d-1.0.1-x-0.13.0-beta 中含有 proj.linux,按照官方的说明导入, 如果人品好就可以启动 linux 下的 cocos2dx 程序了. 如果不行失败, 那么还有一种解决方法就是 使用 visual studio 导入  cocos2d-1.0.1-x-0.13.0-beta 自带的 vs project, 很简单的几个步骤就能在 windows 下面启动桌面测试程序了. 我就是这样.

到这里, 你已经对怎样建立一个 cpp 项目, 在自己的桌面上运行, 然后在 android 上编译为 so 有了很多了解, 如果运气好, 应该跑通了.

下面附送一段扫描 java代码并且生成 android.mk 文件中src include路径的代码. 在你增删 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下面开发android ndk 项目. linux 下配置 eclipse c++ tool chain 非常容易, 只要点选一下即可. 另外 eclipse 4.2 中支持 c++ project -> makefile project -> android 这种类型, 使用它建立 c++ project 以后, 只要 ndk-build 可以运行, 那么 eclipse 可以自动识别你所有依赖的 android 或者是 cocos2dx modual 的inclue 路径, c++项目路径设置变得非常容易.

mac 上使用 xcode 来开发 c++ 然后移植到 android 上也是一个方案, mac 按照官方的文档很简单就能建立 cocos2dx 项目, 基本不需要拼人品. mac 对开发人员才是最靠谱的啊.

一切都建立在一个良好人品的基础上, Good Lock
分享到:
评论

相关推荐

    Android Cocos2d-x 环境配置

    Android Cocos2d-x 环境配置 1.开发环境 2.安装步骤 2.1.安装JDK 2.2.安装android sdk 2.3.安装NDK 2.4.项目转换 2.5.Eclipse导入生成的Hello World Android项目 2.6.Eclipse导入生成的TestCpp Android项目 2.7转换...

    64位win7配置eclipse+ndk+cocos2dx开发环境

    Eclipse: eclipse_4.3_x64 NDK:android-ndk-r9c-windows-x86_64 CDT: cdt-master-8.2.1 ...cocos2d :cocos2d-x-2.2.1 由于个版本更新很快,大家使用新版本配置的时候可能发生问题,写下自己的一点心得希望能帮到大家

    cocos2d-x3.x开发指南:Windows下Android环境搭建1

    NDK_ROOT: NDK根目录ANDROID_SDK_ROOT: SDK根目录ANT_ROOT: ANT根目录这几个环境变量是通过cocos2d-x根目录下的

    flyingACE:A Cocos2d-3.0 games about plane fighting, using Cocos2d-x-3.3 binding c++. Cocos2dx游戏《王牌飞行员》,使用Cocos2d-x-3.3开发

    开发环境 Dev Environment Linux OS (Ubuntu 14.04 LTS) Eclipse 4.4.1 Cocos2d-x-3.3 Android SDK 4.4.2 (API 19) Android NDK r10d gcc 4.8 配置方法 Configure mkdir MyGame && mkdir -p MyGame/cocos2dNew && cd...

    android-ndk-r9c-darwin-x86.tar.bz2安卓NDK Mac版

    Mac上配置Android开发环境并把Cocos2d-x项目编译到Android 提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。允许用户使用类似C ...

    安卓开发环境切换工具

    自己配置多个安卓 SDK NDK JAVA 环境路径。然后通过脚本批处理更换环境变量。以达到工作中快速切换环境的目的。附件里我放的两个 环境变量是我本机的 cocos2d-x android开发环境 和 react native 的安卓环境

    java版斗地主源码-ddz-client:DouDiZhuPokeGame

    java版斗地主源码 斗地主游戏客户端 斗地主客户端采用cocos2dx-lua ...编译环境配置: mkdir ~/develop cd ~/develop # 解压 cocos2d-x unzip ~/Downloads/cocos2d-x-3.7.1.zip ln -nfs cocos2d-x-3.7.1 cocos2d-x

    OPhone平台2D游戏引擎实现——物理引擎

    碰撞检测通常是游戏开发的难点,作为引擎必然少不了碰撞检测部分,这里我们还是按照cocos2d的构架,使用Box2d作为物理引擎,下面我们将通过在Ophone平台实现一个小游戏,来对Box2d物理引擎进行学习。  Box2d  ...

    网狐荣耀版开发使用常见问题解答

    三十一、网狐荣耀版棋牌教程之一开发环境搭建 一、安装JDK1.8,下载jdk1.8,然后双击安装,下一步直到安装完成,安装的时候记住安装目录,我的全部默认安装,目录为C:\Program Files\Java\Jdk1.8。安装完成后,进行...

    c2xa-osc-app

    引用自Cocos2d-x自述文件 Build Requirements Mac OS X 10.7+, Xcode 5.1+ or Ubuntu 12.10+, CMake 2.6+ or Windows 7+, VS 2013+ Python 2.7.5 NDK r10c+ is required to build Android games Windows Phone...

    AdStirCocos2dxPlugin:开发中的产品

    所需环境Android(Mac) Xcode的命令行工具高克Android SDK Android NDK 阿帕奇蚂蚁Android(Linux / Cygwin) 重击Python 高克Android SDK Android NDK 阿帕奇蚂蚁iOS(仅Mac) Xcode制作项目cocos new ProjectName...

Global site tag (gtag.js) - Google Analytics