1.从http://www.cocos2d-x.org/download下载稳定版 比如cocos2d-x-2.2

2.解压cocos2d-x-2.2.zip,比如本文将其解压到 /opt 目录下

3.运行 android-buildsetup.sh,运行之前需要先设置3个环境变量,如将以下变量写到文件 /etc/profile中

export ANDROID_SDK_ROOT=/opt/android-sdk-linux
export ANDROID_NDK_ROOT=/opt/android-ndk-r9b
export COCOS2DX_ROOT=/opt/cocos2d-x-2.2
export PATH=$COCOS2DX_ROOT:$ANDROID_NDK_ROOT:$ANDROID_SDK_ROOT:$PATH

然后:

$ cd /opt/cocos2d-x-2.2/tools
$ ./android-buildsetup.sh

2.2.3版本需要采用如下的方式运行:(如果按照上面的运行话,脚本还给出了提示,赞,这个比较人性化)

$ cd ./tools/android-buildsetup.sh
lbq:/opt/cocos2d-x-2.2..$ ./tools/android-buildsetup.sh

即改成需要在根目录下运行

android-buildsetup.sh的主要目的是将android sdk与ndk的目录路径写到各个sample工程的local.properties文件中.

成功运行,如下图所示:

4.接着编译JNI,与普通的Andorid工程不同的是,不是进入android工程中的JNI目录,然后运行ndk-build,如果这样运行,会出现如下的错误:

$ cd /opt/cocos2d-x-2.2/samples/Cpp/HelloCpp/proj.android/jni
$ ndk-build
Android NDK: /opt/cocos2d-x-2.2/samples/Cpp/HelloCpp/proj.android/jni/Android.mk: Cannot find module with tag 'cocos2dx' in import path
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?
Android NDK: The following directories were searched:
Android NDK:
/opt/cocos2d-x-2.2/samples/Cpp/HelloCpp/proj.android/jni/Android.mk:: *** Android NDK: Aborting. . Stop.

而应该是:

$ cd /opt/cocos2d-x-2.2/samples/Cpp/HelloCpp/proj.android
$ ./build_native.sh

如果正确的话,就会产生.so文件

5.但是如果您的NDK版本不是最新或者不购新的话(至少是r6以上,不包括r6版本),则会出现如下的错误:

/opt/cocos2d-x-2.2/cocos2dx/platform/android/CCGL.h:: error: 'PFNGLGENVERTEXARRAYSOESPROC' does not name a type
/opt/cocos2d-x-2.2/cocos2dx/platform/android/CCGL.h:: error: 'PFNGLBINDVERTEXARRAYOESPROC' does not name a type
/opt/cocos2d-x-2.2/cocos2dx/platform/android/CCGL.h:: error: 'PFNGLDELETEVERTEXARRAYSOESPROC' does not name a type

网上也能查到很多这样的错误,也都是说NDK版本低的原因。

刚开始我更新了NDK版本并且重新执行了步骤3,但是还会出现以上的错误,

后来发现,是因为build_native.sh这个Shell脚本写的有问题:

# write local.properties if it doesn't already exist
if [ -f "$_LOCAL_PROPERTIES_FILE" ]
then
echo "$_LOCAL_PROPERTIES_FILE exists. skipping overwrite"
else
echo "writing $_LOCAL_PROPERTIES_FILE"
echo -e "$_CONTENTS" > "$_LOCAL_PROPERTIES_FILE"
fi

看到了没,写local.properties当且仅当local.properties文件不存在的时候,所以只要一开始运行过一次android-buildsetup.sh,那么那些android工程下local.properties就不会被更新,所以需要修改下android-buildsetup.sh这个脚本,每次运行都强制写local.properties文件:

# write local.properties wether if is exist
# if [ -f "$_LOCAL_PROPERTIES_FILE" ]
# then
# echo "$_LOCAL_PROPERTIES_FILE exists. skipping overwrite"
# else
echo "writing $_LOCAL_PROPERTIES_FILE"
echo -e "$_CONTENTS" > "$_LOCAL_PROPERTIES_FILE"
# fi

这样,就彻底搞定了。

6./opt/cocos2d-x-2.2/cocos2dx/platform/android这个是cocos2dx引擎的代码,很多sample工程都要引用这个lib

7.HelloCpp的“梦书”(原来是"Hello World"修改了下)二字来自 /opt/cocos2d-x-2.2/samples/Cpp/HelloCpp/Classes 下的HelloWorldScene.cpp文件

CCLabelTTF* pLabel = CCLabelTTF::create("梦书", "Arial", TITLE_FONT_SIZE);

代码很像Object C不是。--- 不过目前每次clean都会连cocos2d-x的引擎代码C++部分一起重新编译,很慢哦

参考:

1. https://github.com/cocos2d/cocos2d-x

2.How to setup Cocos2d-x (Windows and Android)

cocos2d-x for android配置 & 运行 Sample on Linux OS的更多相关文章

  1. 【Mac + Android】之Android Studio 环境搭建,AVD模拟器运行(包括:命令行运行AVD,并且Genymotion模拟器插件配置运行)

    目录: 前提.Mac环境下手动配置Android SDK 一. Android Studio下载及配置 二.AVD模拟器配置运行 扩展:命令行运行AVD模拟器 三.在Android Studio 中配 ...

  2. Cocos2d-x的Android配置以及相关参考文档

    关于Win7下配置Coco2d-x的Android开发环境,可以参考子龙山人的博客:Setting Up Cocos2d-x Android Development on Win7,这篇文章写得很详细 ...

  3. Xamarin Android项目运行失败

    Xamarin Android项目运行失败 错误信息:Build Failed: MonoDroid does not support running the previous version.  P ...

  4. Android应用运行过程(转)

    源:Android应用运行过程 首先,ActivityThread从main()函数开始执行,调用prepareMainLooper()为UI线程创建一个消息队列(MessageQueue). 然后创 ...

  5. 【转】实践最有效的提高Android Studio运行、编译速度方案

    原文:https://blog.csdn.net/xwh_1230/article/details/60961723 实践最有效的提高Android Studio运行.编译速度方案 最有效提升Andr ...

  6. centos8安装fastdfs6.06集群方式三之:storage的安装/配置/运行

    一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...

  7. centos8安装fastdfs6.06集群方式二之:tracker的安装/配置/运行

    一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...

  8. 编译可在Android上运行的qemu user mode

    前言 本文在Ubuntu 64位系统上对qemu项目进行交叉编译,并且只编译与qemu user mode有关的代码. 下文中的”NDK”若无特殊说明均指”Android NDK”. 下文中”$NDK ...

  9. 系列篇|编译可在Android上运行的依赖库(一):glib库

    前言 这是系列文章,它们由<编译可在Android上运行的glib库>及其他4篇文章组成,这4篇文章在“编译依赖库”一节中列出.由于glib库依赖于其他第三方库,所以需要先将依赖的第三方库 ...

随机推荐

  1. SQL基础语法(二)

    SQL SELECT 语句 本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL ...

  2. css 使图片水平垂直居中

    1.利用display:table-cell,具体代码如下: html代码如下: <div class="img_wrap"> <img src="wg ...

  3. html5定位getLocation()

    HTML5 Geolocation API 用于获得用户的地理位置. 如果用户不允许定位,那么用户信息是不可用的. 获取用户的位置:getCurrentPosition() 返回数据如下 返回用户当前 ...

  4. BZOJ1303 [CQOI2009]中位数图

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  5. iOS 开发总结(上)

    来源:蝴蝶之梦天使 链接:http://www.jianshu.com/p/d333cf6ae4b0 在iOS开发中经常需要使用的或不常用的知识点的总结,几年的收藏和积累(踩过的坑). 一. iPho ...

  6. win7里边使用telnet命令为什么提示telnet不是内部或外部命令,也不是可运行的程序或批处理文件

    Win7默认没有安装telnet功能,所以你直接用telnet命令是用不了的:你可以去“控制面板”-->“程序”(在左下角)--->“打开或关闭Windows功能”,勾上“telnet客户 ...

  7. HD3033I love sneakers!(分组背包+不懂)

    I love sneakers! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  8. new bird in github

    首次使用先要建立本地github信息: git config - -global user.name  newbird git config - -global user.email   newbir ...

  9. pgsql 建数据库注意事项

    在用navacat建好表之后,需要主键自增的时候,把字段建好之后,可以使用下面的sql来建立主键自增. ALTER TABLE "public"."chart_sql&q ...

  10. Java 抓取网页中的内容【持续更新】

    背景:前几天复习Java的时候看到URL类,当时就想写个小程序试试,迫于考试没有动手,今天写了下,感觉还不错 内容1. 抓取网页中的URL 知识点:Java URL+ 正则表达式 import jav ...