配置

  • 相关工具:Cocos2d-x 3.2 + Ant 1.9.4 + Android NDK r9d + Android SDK
  • 运行平台:OS X 10.9.4+ Xcode 6

前言:笔者使用 Xcode 开发完成 Cocos2d-x 项目后,想要把项目移植到 Android 平台,打包成 apk 文件。但是笔者并未安装 Eclipse,因此采用命令行方式进行编译打包。

一、编译为 debug 版本

首先介绍如何生成 debug 版本的 apk 文件。

编译前配置

1、完成代码文件的编写,在其他平台上运行成功

给自己:Xcode 开发时相对路径只需要写文件名即可,而 Android 开发时要从项目路径开始写。因此要把 Resource 文件夹下的所有子文件夹的资源文件都放到 Resource 目录下。

2、编辑%ProjectFolder%/proj.android/jni/Android.mk

在 LOCAL_SRC_FILES 中加入程序涉及的所有 .cpp 文件(也就是 Classes 文件夹下的所有 .cpp 文件)

例如

LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/ShapeModel.cpp \
../../Classes/RoundCircle.cpp \
../../Classes/RectDrawNode.cpp \
../../Classes/PrepareLayer.cpp \
../../Classes/MenuLayer.cpp \
../../Classes/LifeCircle.cpp \
../../Classes/HUDLayer.cpp \
../../Classes/HomeScene.cpp \
../../Classes/GameWorldController.cpp \
../../Classes/GameScene.cpp \
../../Classes/GameEndScene.cpp \
../../Classes/GameData.cpp \
../../Classes/BackGroundLayer.cpp

3、添加 NDK、Android SDK、Ant 的路径 (仅在第一次使用 cocos 命令时需要此步骤)

$ cd cocos2d-x //进入coco2d-x-3.2源文件的文件夹
$ ./setup.py //打开设置文件//运行后会需要进行三个路径的设置
$ source FILE_TO_SAVE_SYSTEM_VARIABLE // 把路径添加到系统变量

FILE_TO_SAVE_SYSTEM_VARIABLE 默认是 /Users/apple/.bash_profile

需要设置的路径均为解压后的根目录文件夹路径。Ant 的路径可能需要延长到 bin 文件夹。

注意 Android SDK 文件夹无法直接使用,需要通过 SDK Manager 下载所需要的API以及相关文件,SDK Manager 可以通过%SDK_ROOT%\tools\android打开。

4、更改%ProjectFolder%/proj.android/AndroidManifest.xml相关配置,例如设置横屏竖屏

5、运行 Android 模拟器(AVD),模拟器需要开启 GPU 加速。

编译并运行

6、转到项目路径,进行编译

$ cd PROJECT_PATH
$ cocos run -p android -j 4

可以添加--ap XX指定编译的目标版本(--ap 16编译为 SDK 版本号16的应用,需要用 Android SDK 安装 API 16 的相关文件)

注意添加的条件 ap 前面有两条 短横杠,不是一条,笔者第二次使用的时候由于只加了一条,导致总是报错Android platform not specified, searching a default one...

7、编译成功后,使用adb logcat查看 log 信息

8、生成的 apk 文件可以在%ProjectFolder%/proj.android/bin路径下找到。

二、编译为 release 版本

上述过程得到的 apk 文件是 debug 版本,如果要编译 release 版本,还需要有一个签名文件,步骤如下:

生成签名文件

1、生成 .keystore 文件

在终端输入如下命令:

$ keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000 -keystore /Users/apple/android.keystore

-genkey 产生证书文件

-keystore 指定生成密钥库的.keystore文件位置和名称

-keyalg 指定密钥的算法

-alias 产生别名

-validity 有限时间

编译运行

编译过程基本与 debug 版本的编译方式相同,只需要在编译命令上多加一个可选属性。执行过程中会要求提供 keystore 文件的信息,填上去就 OK 了。

2、编译 cocos2d-x 项目时加上 -m release命令

3、输入 keystore 文件地址,填入密码、别名、密码(两个密码都是自己在创建 keystore 时的密码,可以设置为一致)。

4、完成,生成的 apk 文件同样可以在%ProjectFolder%/proj.android/bin路径下找到。

可能遇到的问题:提示找不到 Android sdk 下 tools 中的 zipalign 可执行文件,从网上下载一个即可,这是一个打包优化程序。

三、参考链接

  1. 官方: Cocos2d-x README(介绍了 cocos 命令的使用)
  2. Cocos2d-x游戏打包成Android应用程序(介绍了用eclipse打包的过程)
  3. 搭建 cocos2d-x Android 常见问题

    (解决一个编译时的错误,Can't find right android-platform for project :"%ProjectFolder%\proj.android".The android-platform should be equal/larger than 20
  4. android的logcat详细用法
  5. How to Build an Android Project with Eclipse
  6. cocos2d-x3.0rc打包apk遇到的一些问题记录

    (解决一个关于命令行方式创建keystore签名的问题)
  7. Android 打包签名 从生成keystore到完成签名
  8. 官方:Cocos2d Console使用手册(关于 cocos-console 的使用)
  9. 官方:Cocos2d-console(完整 cocos-console 使用手册,英文版)

总结

在经过一次发布后,再次使用只需要:

1、在 jni\Android.mk文件中添加需要编译的 cpp 文件

2、终端输入如下命令

$ cd PROJECT_PATH
$ cocos run -p android -j 4 --ap 20 -m release

Cocos2d-x项目编译为Android应用——命令行方式的更多相关文章

  1. [原]详解如何将cocos2dx项目编译到Android平台上的(方式一:Cywin+NDK)

    链接地址:http://m.blog.csdn.net/blog/yhc13429826359/29357815 2014-6-8阅读578 评论0 前言:cocos2dx作为一个开源的移动2D游戏框 ...

  2. [转]Windows中使用命令行方式编译打包Android项目

    http://my.oschina.net/liux/blog/37875 网上很多用Ant来编译打包Android应用的文章,毕竟Ant是纯Java语言编写的,具有很好的跨平台性.今天想写个纯win ...

  3. delphi DCC32命令行方式编译delphi工程源码

    本文链接地址:http://blog.csdn.net/sushengmiyan/article/details/10284879 作者:苏生米沿 Borland出品的Delphi,在TIOBE公布的 ...

  4. I.MX6 Android CAN 命令行测试

    /********************************************************************* * I.MX6 Android CAN 命令行测试 * 说 ...

  5. 解决cordova命令行方式下build或者run的时候报错问题

    phonegap3.0之后就将项目的生成方式做了很大的更改,原来是在eclipse里面修改生成并编译运行,但是3.0之后它的目录结构发生了很大变化,只修改主目录下面的index.html如果不buil ...

  6. 记录一次通过命令行方式来使用svn碰到的一系列问题

    由于使用Xcode自带的svn管理碰到很多问题,搞得头昏脑胀,找资料时看到小码哥这方面的视频,看完就开始折腾了. 准备:1.远程仓库地址及授权账号(用户名和密码) 2.一份项目代码,之所以要有这份代码 ...

  7. VS使用WinRAR软件以命令行方式打包软件至一个exe

    由于项目需要,需要将一个绿色版软件(即无需在C盘写入文件)发给客户使用,要求是只有一个exe文件,双击即可执行.​ 网上说WinRAR软件创建自解压文件可以实现,链接http://blog.csdn. ...

  8. iOS:命令行方式使用OSChina托管私有代码

    一.介绍 在项目开发中,使用版本控制工具是必不可少的开发工具,它可以帮助我们程序员写完代码后及时提交备份,防止因个人操作导致代码被误删除了或者丢失了,安全可靠.同时,使用版本控制器工具也可以很方便的进 ...

  9. JAVA基础学习之命令行方式、配置环境变量、进制的基本转换、排序法、JAVA文档生成等(1)

    1.命令行方式 dos命令行,常见的命令: dir:列出当前目录下的文件以及文件夹 md:创建目录 rd:删除目录 cd:进入指定目录 cd..:退回到上一级目录 cd/:退回到根目录 del:删除文 ...

随机推荐

  1. linux-touch 、mkdir、rm、pwd、which、locate、whatis

    1.touch: 创建空文件,修改文件时间戳信息 atime(access time):最近访问文件内容时间 mtime(modify time):最近修改文件内容时间 ctime(change ti ...

  2. LNMP-Nginx配置SSL

    SLL工作流程: 浏览器发送一个https的请求给服务器: 服务器要有一套数字证书,可以自己制作(后面的操作就是阿铭自己制作的证书),也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以 ...

  3. verilog设计加法器

    概述 本文利用了硬件行为描述.数据流描述.结构描述三种方法分别写了几个加法器 一位半加法器 即两个一位的二进制数相加,得到其正常相加的结果的最后一位. 仿真波形图 硬件行为描述 设计文件 123456 ...

  4. python基础入门while循环 格式化 编码初识

    一.while循环 1.格式 while+空格+条件+英文冒号: ​ 缩进+结果(循环体) ​ #若条件为真则一直执行,条件为假则不执行 while True: print('痒') print('. ...

  5. vue-cli3配置webpack generate-asset-plugin

    最近尝试将vue项目中的后台URL抽离到打包后的配置文件中,看到有使用generate-asset-plugin在build时生成配置文件的做法,倒腾了一下午使该webpack plugin在vue- ...

  6. hdu 6318 Swaps and Inversions (线段树求逆序对数)

    Swaps and Inversions Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  7. 多线程之美5一 AbstractQueuedSynchronizer源码分析<一>

    AQS的源码分析 目录结构 1.什么是CAS ? 2.同步器类结构 3.CLH同步队列 4.AQS中静态内部类Node 5.方法分析 ​ 5.1.acquire(int arg ) ​ 5.2.rel ...

  8. js中正则表达式的易错点

    文章目录 1. 匹配符部分匹配规则 2. 分组匹配规则: 3. 注意^的不同用法 4. 不要忘记转义 5. 正则表达式对象中lastIndex属性 6. exec VS match 1. 匹配符部分匹 ...

  9. CentOS7 安装 Redis 并设置开机启动

    1.下载 https://redis.io/download cd /usr/local/src wget -c http://download.redis.io/releases/redis-3.2 ...

  10. C# 几种常见数据结构

    一.内存上连续存储,节约空间,可以索引访问,读取快,增删慢 Array:在内存上连续分配的,而且元素类型是一样的,可以坐标访问;读取快--增删慢,长度不变 { //Array:在内存上连续分配的,而且 ...