cocos2d-x-2.2.4 (四) 将MyGame在Android上跑起来

2023-11-06

继续上一篇,我接着在MyGame工程干活,这次要将MyGame运行在Android设备上。


要将cocos2dx的项目在Android上跑起来需要NDK和eclipse

NDK用来编译cocos2dx的cpp文件,将其打包成动态库文件,例如libgame.so;

由于google被封了,NDK的下载页面是打不开的,不过我们可以直接通过链接下载NDK:

dl.google.com/android/ndk/android-ndk-r8e-darwin-x86.tar.bz2

我用的是mac版本的NDK r8e版本,需要其他版本可以手动修改上面的链接,也有人整理出来下载链接了:

http://www.cnblogs.com/yaotong/archive/2011/01/25/1943615.html


eclipse用来读取cocos2dx建立的工程,打包出apk或者直接运行。但是使用eclipse配置出Android环境是非常折腾的事情,尤其是在大陆连接google特别费力的情况(ˇˍˇ)

现在很多人使用的都是adt-bundle,这个其实就是继承了ADT的eclipse,链接如下:

http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/android-platform-sdk-download-mirror.html


下载好了NDK和adb-bundle以后就可以开始干活了~

首先我们还是假设MyGame的路径是/Users/zf/MyGame/,NDK的路径是/Users/zf/android-ndk-r8e。

可以注意到,在MyGame目录下面,有个proj.android文件夹,这个就是cocos2dx给我们生成的android工程,我们接下来的任务就是在这个目录进行了~


要将MyGame在Android平台运行起来,主要有两步:

1.使用NDK编译生成动态库;

2.使用eclipse建立Android工程,将MyGame运行起来;


其实对于很多总是使用IDE的程序员来说,使用NDK编译是一件非常难的事情,这里需要修改Android.mk文件和build_native.sh脚本。我对这两个其实不是很熟悉,尤其是shell脚本,这个我是很陌生的。

使用NDK编译这一过程中,我们主要要涉及到的文件我先列出来:

1. /Users/zf/MyGame/proj.android/build_native.sh:这个shell脚本主要是设置工程路径,cocos2d库的路径,复制游戏使用的资源文件,然后使用NDK编译出动态库;


2. /Users/zf/MyGame/proj.android/jni/Android.mk:

关于Android.mk文件,在NDK的帮助文档是这么描述的:

An Android.mk file is a small build script that you write to describe yoursources to the NDK build system. Its syntax is described in details inthe file docs/ANDROID-MK.html.

简单来说,Android.mk文件就是一个小脚本,用来告诉NDK你的源文件该怎么去编译,关于他的语法可以去看ANDROID-MK.html。


3. /Users/zf/MyGame/proj.android/jni/Application.mk:

Application.mk是这么说的:

TheApplication.mk file describes your application itself. See thedocs/APPLICATION-MK.html document to understand what this file allows youto do.

Application.mk是描述你的程序本身的。


上面两个文件都是NDK编译是需要的文件,关于他们在NDK目录下都有详细的帮助文档,不过是英文的,目录是/Users/zf/android-ndk-r8e/docs/。


------------------------------------------------------------------------------------------------------------------------------------------------

下面先看Application.mk:

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1


我们一个个开始看,看明白这个就行,至于Application.mk文件里面没有的语法,大家就自行参阅帮助文档,不过基本上来说,Application.mk是不用做什么改动的~

APP_STL:
By default, the NDK build system provides C++ headers for the minimal C++ runtime library (/system/lib/libstdc++.so) provided by the Android system.
However, the NDK comes with alternative C++ implementations that you can use or link to in your own applications.

Define APP_STL to select one of them. Examples are:
APP_STL := stlport_static --> static STLport library
APP_STL := stlport_shared --> shared STLport library
APP_STL := system --> default C++ runtime library

APP_STL就是用来告诉NDK使用哪一套stl的库来编译你的程序的,默认ndk使用最简化的c++库。
gnustl和stlport是不同的c++ stl的实现,stlport是完全免费的小巧的实现;
gnu也是免费的,但是gnu似乎不允许对其代码的修改。
一般是使用gnu,官方提供的stlport是不支持rtti和exception的,所以不能使用-frtti和-fexception这两个编译选项的。

APP_CPPFLAGS
    A set of C++ compiler flags passed when building C++ sou
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cocos2d-x-2.2.4 (四) 将MyGame在Android上跑起来 的相关文章

  • Box2D C++教程6-定制器(Fixtures)

    Box2D C 教程6 定制器 Fixtures 时间 2012 09 01 17 10 24 CSDN博客 原文 http blog csdn net wen294299195 article details 7932770 Box2D
  • fvf采用另外一种方式渲染

    if FAILED hr getActiveD3D9Device gt SetVertexDeclaration d3ddecl gt getD3DVertexDeclaration getGlobalInstanceVertexBuffe
  • Cocos2d-x Js Binding 的手动绑定实现

    http www ityran com archives 4902 Cocos2d x Js Binding 的手动绑定实现 一叶 cocos2d x 08 13 2304 4条评论 随着 Cocos2d x 的发展 Cocos2d htm
  • cocos2d中的anchorPoint

    cocos2d中的anchorPoint 将该图片放置到屏幕左下方 CCSprite sprite CCSprite sprite Default png addChild sprite 生成的精灵放置在 0 0 也就是屏幕左下角 但是精灵
  • Android获取IMEI和MEID

    在破解微信数据库时 需要获取手机的DeviceId 但是有时会出现打不开的情况 报出file is not a database while compiling select count from sqlite master的异常 这时发现
  • CCMoveBy和CCMoveTo有什么区别?

    CCMoveBy和CCMoveTo有什么区别 cocos2d里面的CCMoveBy 和CCMoveTo有什么区别 含义不同的地方在那块 那位高人给解释一下 谢谢 insul 2010 09 14 18 52 by是相对于当前位置 to是到该
  • Cocos2dx中文乱码问题

    最开始在网上找的一个方法 结果在wp8上报错 在windows环境下使用visual studio 开发cocos2d x 由于visual studio 默认编码为GBK 格式 而cocos2d x引擎默认编码为UTF 8 如果有用到中文
  • 题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值

    题目 输入一个链表的头结点 从尾到头反过来输出每个结点的值 链表结点定义如下 struct ListNode int m nKey ListNode m pNext 分析 这是一道很有意思的面试题 该题以及它的变体经常出现在各大公司的面试
  • static函数与普通函数

    全局变量 外部变量 的说明之前再冠以static 就构成了静态的全局变量 全局变量本身就是静态存储方式 静态全局变量当然也是静态存储方式 这两者在存储方式上并无不同 这两者的区别虽在于非静态全局变量的作用域是整个源程序 当一个源程序由多个源
  • 在 cocos2d 里面如何使用 Texture Packer 和像素格式来优化 spritesheet

    原文链接 http www cnblogs com andyque archive 2011 03 18 1988097 html 免责申明 必读 本博客提供的所有教程的翻译原稿均来自于互联网 仅供学习交流之用 切勿进行商业传播 同时 转载
  • COCOS2DX学习之Box2D物理引擎-------物体和相互作用

    1 创建一个静态物体 创建一个静态物体应该很简单 在头文件生命一下要创建新物体的函数 然后在cpp文件中实现它即可 具体的时候先过程 首先要用createbody函数创建一个物体 然后定义一个b2bodydef变量 指定一下这个变量的typ
  • 暂停时快速高斯模糊[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 In cocos2d x我需要实现快速高斯模糊 它应该是这样的 我刚刚在 App Store 上发现了一些游戏 已经统一完成了这样的模糊 所以 这很好fadeIn fadeOut当用户暂停
  • 序列化 CDT 项目设置时遇到了

    当我构建项目时 我收到此错误 Serializing CDT Project settings has encountered a problem Null Pointer Exception 我正在使用最新的 eclipse 并尝试为 A
  • Cocos2D-x 3.0 中图元和精灵的 Z 索引不一致?

    我有两层 每个图层都有一个使用 OpenGL 进行的原始绘图 如下所示 void Layer1 drawPolygon glLineWidth 1 DrawPrimitives setDrawColor4B 255 255 255 255
  • 在 Cocos2d-x 中创建 InAppPurchase [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是 Cocos2d x 的新手 我需要为 Cocos2d x iOS 游戏 CPP 创建 InAppPurchase 任何人都可以帮助我
  • 如何制作双向平台box2d主体?

    我使用 box2d 创建了平台 我想要 box2d 身体检测而不是动态检测 Box2d 形状将执行以下操作 在某些条件下检测碰撞 在某些情况下不检测碰撞 两种条件都适用于同一 box2d 对象中的不同条件 任何想法都会有很大帮助 提前致谢
  • 由于资源文件权限被拒绝,Cocos2D-x HelloCpp for Android 无法从 Windows 构建 apk

    我试图在 Android 上运行 cocos2dx HelloCpp 示例项目 从 Windows 7 64 位和 Cygwin 64 位构建 但是 每次我尝试构建和运行时 它都会抱怨资产中的 Marker Felt fnt 文件的权限被拒
  • 如何在cocos2dx 3.0中调用callfunc函数

    我必须将 Objective C 转换为 C 11 我坚持使用以下语法 我已在 testcpp 中引用并尝试以下语法 这是我尝试过的代码 this gt runAction Sequence create blink CallFunc cr
  • [cocos2d-x]当我尝试在 Windows 10 中运行“python android-build.py -p 19 cpp-tests”时出现错误

    当我尝试运行命令时python android build p cpp tests 我收到如图所示的错误 在此之前 我收到了另一条关于 Android SDK Tools 版本兼容性的错误消息 所以 我只是将 sdk 版本从 26 0 0
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失

随机推荐

  • 开关电源环路稳定性分析(07)——电压型补偿网络

    大家好 这里是大话硬件 在前面的文章中 已经分析了控制级和功率级的传递函数 这一节咱们来分析反馈级的传递函数 在分析反馈网络的传递函数之前 我想 应该有几个问题需要做一下介绍 1 功率级和控制级传递函数说明了什么 根据前面的传递函数的表达式
  • uniapp base64转为本地图片

    新建一个js文件 兼容多个平台 const fsm uni getFileSystemManager const FILE BASE NAME tmp base64src 自定义文件名 function base64src base64da
  • vue+element 导入excel数据并转化为json存入el-table

    项目开发过程中有个需求 仓库系统入库的时候需求是把填好的入库单excel表格直接导入到vue前端页面上 并展示出来 没有问题的话以表单的形式存入数据库 将excel表格内容展示到页面中 经过不懈的学习 特意总结一下子 学习前辈经验 自我总结
  • 超详细的计算机网络基础知识总结 第三章:数据链路层

    本文基于 王道计算机考研 计算机网络 其他文章 超详细的计算机网络基础知识 第一章 概述 超详细的计算机网络基础知识 第二章 物理层 超详细的计算机网络基础知识 第四章 数据链路层 超详细的计算机网络基础知识 第五章 传输层 超详细的计算机
  • redis文件中的dump.rdb文件

    dump rdb是由Redis服务器自动生成的 默认情况下 每隔一段时间redis服务器程序会自动对数据库做一次遍历 把内存快照写在一个叫做 dump rdb 的文件里 这个持久化机制叫做SNAPSHOT 有了SNAPSHOT后 如果服务器
  • Vue开发中的表格分页和常见bug

    Vue中的分页组件 组件自取 实际开发中处理数据时 这种分页功能时刚需技能 下面就聊一聊基本操作和常见bug 首先看一下两个重要的属性 current change 当前页发生改变时触发 size change 每页多少条发生改变时触发 先
  • 手把手教你制作Jlink-OB调试器(含原理图、PCB、外壳、固件)

    前言 好久没更新博客和公众号了 感谢大家还没取关哈 好吧 我承认是我太懒了 今天分享一个福利 趁着前段时间嘉立创和捷配打价格战 一天之内 多次降价 看着真是热闹 捷配降到最低3元一款 而嘉立创降到最低5元一款 都是顺丰包邮 不过嘉立创免颜色
  • springboot之事务aop

    项目结构 实现 pom
  • JAVA中Scanner类中,next()与nextLine()的异同

    在运用Scanner做语句解析的时候在next 与nextLine 之间小小的困惑了一下 下面是我的调试分享 next public static void main String args Scanner scanner new Scan
  • 抖音新秒注销,无需等7天的方法,机不可失马上和谐

    抖音注销账号新方法 快速安全 不再需要等待7天 立即与谐同步 随着社交媒体的普及和用户需求的变化 有些人可能希望注销自己在抖音上的账号 然而 传统的注销流程通常需要等待7天的冷静期 让很多用户感到不便和焦虑 今天 我将为大家介绍一种全新的方
  • 升级到Android Studio 3.2.1 ,报 org.gradle.internal.exceptions.LocationAwareException

    最近收到AS版本的推送就果断更新了 更新以后 打开自己最近的项目 报如下错误 No route to host connect failed Caused by org gradle internal exceptions Location
  • Python 我编码遇到的错误

    ValueError invalid literal for int with base 10 0 000 Traceback most recent call last File
  • Hadoop环境搭建(主机名、Ip地址、映射及网络配置)

    一 在安装的虚拟机上修改主机名地址 1 显示当前主机名命令 hostname 2 修改主机名命令 方法 输入 vi etc hostname 方法 输入 hostnamectl set hostname 进入后在编辑模式下 删除原来的主机名
  • java操作excel获取每列的信息并按照学号-姓名格式创建文件夹

    1 导入Maven依赖
  • 数据库连接工具类

    数据库连接 概述 一 jdbc 实验环境搭建 二 Druid连接数据库 实验环境搭建 三 Maven连接数据库 实验环境搭建 四 mybatis连接数据库 实验环境搭建 五 Spring连接数据库 六 SSM 概述 什么是JDBC Java
  • 前端实现Jest单元测试

    介绍 最近在学一些关于工程化的内容 里面正好提到了jest单元测试 首先简单理解一下什么是单元测试 举个例子 小明同学偶然发现海海同学做的组件库不错 想学习一下 于是就拉了代码 不过在看代码的过程中发现有的代码有更优性能的方法 但是呢他自己
  • ctf.show web web1-web10

    ctf show web web1 web10笔记 记录一些web的知识点 本人刚开始学习web很多资料都是借鉴大佬的 许多复现的过程都是大同小异的 写的菜了请大佬们下手轻点 web1 一道简单的入门题 打开环境发现只有一串英文 flag在
  • 唯一索引比普通索引快吗?运行原理是什么?

    推荐阅读 项目实战 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画 AI讲话 翻译 GPU点亮AI想象空间 资源分享 史上最全文档AI绘画stab
  • 从源码角度深入分析iScroll中的scrollToElement方法

    问题1 官方解释 scrollToElement el time offsetX offsetY easing You re gonna like this Sit tight The only mandatory parameter is
  • cocos2d-x-2.2.4 (四) 将MyGame在Android上跑起来

    继续上一篇 我接着在MyGame工程干活 这次要将MyGame运行在Android设备上 要将cocos2dx的项目在Android上跑起来需要NDK和eclipse NDK用来编译cocos2dx的cpp文件 将其打包成动态库文件 例如l