如果对命令行望而生畏,我们可以借助于安装有ADT插件的Eclipse工具实现交叉编译。
使用Eclipse进行交叉编译,首先需要将要编译的工程导入到Eclipse的Workspace中,Workspace是多个工程的集合。具体步骤是启动Eclipse后,选择菜单File→New→Project,弹出如图21-18所示的新建工程对话框,选择Android→Android Project from Existing Code。

 新建工程对话框

在新建工程对话框中点击Next按钮,弹出如下图所示的导入工程对话框,点击Browse按钮,弹出后面所示的选择目录对话框,注意选择目录是:“<游戏工程路径>\proj.android”,在这个目录下有创建Eclipse的Android工程所需要的文件。

导入工程对话框
选择目录对话框

选择好目录后,点击确定按钮关闭对话框,回到导入工程对话框,如下图所示,在Root Directory已经有内容了。如果没有报错说明选择工程成功了。注意我们不要选中Copy projects into workspace选项。选择完成后点击Finish按钮。

选择工程成功

然而点击Finish后,Eclipse导入并编译工程,编译完成时候会发现有很多错误,如下图所示。经过研究不难发现引起这些错误的原因是,找不到Cocos2d-x在Android平台的Java类,这些类位于:<游戏工程路径>\cocos2d\cocos\2d\platform\android\java目录下,我们要么把这个目录下的Java文件拷贝到当前工程的src目录,要么导入Cocos2d-x Android Java类库工程。

编译错误

导入Cocos2d-x Android Java类库工程的操作步骤与前面导入游戏工程是类似的,选择的路径是:<游戏工程路径>\cocos2d\cocos\2d\platform\android\java。如下图所示是成功导入的libcocos2dx工程。

成功导入libcocos2dx工程

提示 很多读者会问,只是导入libcocos2dx工程,游戏工程MyGame就可以找到需要的Java类文件吗!这是因为在MyGame工程中有一个project.properties文件,在这个文件中的android.library.reference.1=../cocos2d/cocos/2d/platform/android/java设置项描述了两个工程之间的依赖关系。
两个工程在Eclipse里编译成功,并不代表这游戏工程已经进行了交叉编译,我们需要执行<游戏工程路径>\proj.android\build_native.py进行交叉编译生成.so文件。执行build_native.py可以通过DOS终端进入所在目录build_native.py执行,可以在Eclipse里双击build_native.py执行,执行过程如下图所示。

执行build_native.py交叉编译

如果执行build_native.py交叉编译成功后,我们还需要在Eclipse中选择MyGame工程,按F5键刷新工程,否则在工程中看不到如下图所示libcocos2dcpp.so文件。

libcocos2dcpp.so文件

交叉编译成功就可以打包运行了,选择MyGame工程,右键菜单Run as → Android Application,然后选择要打包和运行的模拟器或Android设备就可以了。

更多内容请关注最新Cocos图书《Cocos2d-x实战 C++卷》

本书交流讨论网站:http://www.cocoagame.net

更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com
欢迎加入Cocos2d-x技术讨论群:257760386

《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:

京东:http://item.jd.com/11584534.html

亚马逊:http://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU

当当:http://product.dangdang.com/23606265.html

互动出版网:http://product.china-pub.com/3770734

《Cocos2d-x实战 C++卷》源码及样章下载地址:

源码下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1

样章下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1

欢迎关注智捷iOS课堂微信公共平台

Cocos移植到Android-使用Eclipse交叉编译打包的更多相关文章

  1. Cocos移植到Android的一些问题-中文乱码问题

    Android平台版本和设备碎片化很严重,因此从Win32平台移植到Android平台会有很多问题,下面是我们归纳的从Win32平台移植到Android平台遇到的一些问题.在Android平台中文乱码 ...

  2. Cocos移植到Android的一些问题-SQLite3数据库移植问题

    首选我们讨论一下SQLite3数据库移植问题.我们在第14章节介绍了在Win32平台使用SQLite3数据库,我们介绍了两种配置环境的方法:一种是使用Cocos2d-x提供的SQLite3库配置,另一 ...

  3. android在eclipse中打包(签名包)方法及常见问题解决

    打包成apk 右键单击项目名称,选择"Android Tools".再选择"Export Signed Application Package-",例如以下图所 ...

  4. Cocos移植到Android-通过命令行交叉编译打包

    当我们在Windows下使用Visual Studio开发好Win32平台的游戏程序后,我们需要把它们移植到不同的平台上.Cocos2d-x支持很多个平台,然而,我们不可能介绍全部平台的移植.我们总结 ...

  5. cocos2dx 3.1.1移植安卓apk (lua项目交叉编译 mac环境下)

    cocos2dx 3.1.1 lua项目安卓交叉编译 mac环境下 本文基于ant,sdk,ndk,adt等软件和环境已经事前设置好 1\新建项目 在mac的终端下输入命令: cocos new te ...

  6. Windows下将ImageMagick移植到Android平台

    Windows下将ImageMagick移植到Android平台 原文链接  http://www.pedant.cn/2014/06/18/imagemagick-ported-android/ I ...

  7. cocos2d-x 3.0游戏实例学习笔记 《跑酷》移植到android手机

    说明:这里是借鉴:晓风残月前辈的博客.他是将泰然网的跑酷教程.用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  8. cocos2d-x 3.2 移植到android

    前人栽树,后人乘凉,这句话有点过了,只是想感谢一下为了移植cocos2d-x到android的"大婶"们所做出的贡献.          首先android环境需要配置好,需要的文 ...

  9. 将Unity3D游戏移植到Android平台上

    将Unity3D游戏移植到Android平台是一件很容易的事情,只需要在File->Build Settings中选择Android平台,然后点击Switch Platform并Build出ap ...

随机推荐

  1. Codeforces Round #331 (Div. 2)C. Wilbur and Points 贪心

    C. Wilbur and Points Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/596/ ...

  2. Codeforces Gym 100513F F. Ilya Muromets 线段树

    F. Ilya Muromets Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513/probl ...

  3. iOS开发——语法篇OC篇&静态方法与实例方法

    静态方法与实例方法 方法是类的行为,写在接口和实现两个文件中.在接口部分声明方法,在实现部分实现方法. 1.类方法与实例方法 Objective-C中的类可以声明两种类型的方法:实例方法和类方法.实例 ...

  4. PHP概率算法(适用于抽奖、随机广告)

    做网站类的有时会弄个活动什么的,来让用户参加,既吸引用户注册,又提高网站的用户活跃度.同时参加的用户会获得一定的奖品,有100%中奖的,也有按一定概率中奖的,大的比如中个ipad.iphone5,小的 ...

  5. oc-12-NSString 类简单介绍及用法

    // 11-[掌握]NSString 类简单介绍及用法 #import <Foundation/Foundation.h> int main(int argc, const char * ...

  6. 用count(*)还是count(列名) || Mysql中的count()与sum()区别

    Mysql中的count()与sum()区别   首先创建个表说明问题 CREATE TABLE `result` (   `name` varchar(20) default NULL,   `su ...

  7. Android基本控件之ListView(一)

    我们在使用手机的时候,通常看到,像通讯录,QQ列表样式的东西,这里来解释一下,其实那些都是一个ListView 今天,我们就来详细的讲解一下ListView这个控件 ListView中每条显示的数据都 ...

  8. 小白日记25:kali渗透测试之提权(五)--利用配置不当提权

    利用配置不当提权 与漏洞提权相比,更常见的方法.在大部分企业环境下,会有相应的补丁更新策略,因此难以通过相应漏洞进行入侵.当入侵一台服务器后,无法照当相应的补丁进行提权,可通过寻找是否存在配置不当进行 ...

  9. hive-通过Java API操作

    通过Java API操作hive,算是测试hive第三种对外接口 测试hive 服务启动 package org.admln.hive; import java.sql.SQLException; i ...

  10. jq宽高 详解

    alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(document).height()); //浏览器时下窗口文档的高度 alert($(docum ...