Cocos2d-x 3.2 学习笔记(四)学习打包Android平台APK!
从cocos2dx 3.2项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后,以后就会非常快捷!
(涉及到3.1.1版本的,请自动对应3.2版本,3.x版本的环境搭建都是一样的)
一、下载Android环境
搭建Android环境需要用到Android SDK、NDK、Ant和JDK;
Android SDK下载http://developer.android.com/sdk/index.html
Android NDk下载http://developer.android.com/tools/sdk/ndk/index.html
Android JDK下载http://www.oracle.com/technetwork/java/javase/downloads/index.html
Ant下载http://ant.apache.org/bindownload.cgi
其中JDK是需要安装的,其他的都直接解压即可。将SDK NDK 和ANT解压缩到同一个文件夹中,我解压后文件都放在了e:\Android文件夹下

SDK如果下载下来的adt文件那么把里面的SDK文件夹考出来,修改后

二、配置JDK
在JDK安装完毕之后,需要手动进行环境变量的配置
1、系统变量里新建JAVA_HOME变量,变量值为:C:\Program Files\Java\jdk1.8.0_05(根据自己的安装路径填写)
2、新建系统变量classpath变量,变量值为:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (注意前面的. 不要忘记了)
3、在系统变量path变量(已存在不用新建)添加变量值:
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin(注意变量值之间用“;”隔开)
环境变量的解析:
JAVA_HOME:jdk的安装路径
classpath:java加载类路径,只有类在classpath中java命令才能识别,在路径前加了个"."表示当前路径。
path:系统在任何路径下都可以识别java,javac命令。
在配置完成之后,我们打开cmd命令窗口,输入java或javac 回车,如果不是打印“java不是内部或外部命令”那就说明配置成功了。




三、配置Ant环境变量
把ant的存放路径加入系统Path变量。


四、配置cocos2dx 3.1 Android 环境关联
以上已做好准备工作,打开cocos2dx目录下的 setup.py。

输入ndk的路径。

输入sdk路径

最后输入的是 ant的路径
OK,三个路径都已经配置完毕

五、打包Apk
然后就可以在项目目录下使用 cocos compile -p android方式编译APK文件了。
注意:在打包apk之前需要修改proj.android/jni文件夹下的Android.mk文件 添加自己新增的CPP文件,这里的新增指的是非cocos2dx生成的项目文件(自己新增的文件)。一定要把自己新增的文件或文件夹包含进apk。
首先我们拿官方的 cpp-tests项目来试手吧!
按住shift键+鼠标右键 选择在此处打开命令窗口。

然后就可以使用 cocos compile -p android --ap 20方式编译APK文件了(--ap 20是指定android平台)

漫长的等待吧,当然这里要提醒一点3.1版本用的是 android-20,如果E:\Android\sdk\platforms目录下没有android-20 请创建一个空的。

等待完毕之后 看下这个文件夹下的 apk吧!可以安装到手机上试一下了。
六、异常处理:(我會不定時的更新遇到的問題,讓大家都不走彎路)
1、 Android platform not specified, searching a default one...
Can't find right android-platform for project :
"F:\cocos2d-x-3.1.1\tests\cpp-tests\proj.android".
The android-platform should be equal/larger than 20
如果你遇到这个问题,那么就要在

下创建一个空的android-20文件夹,这个问题坑了我很久!同时要查看命令是否是 –ap 20(双-)。
检查\proj.android目录下的project.properties是否是android-20

2、 编译时,提示找不到gcc工具链 (Couldn't find the gcc toolchain)。
这个问题也烦了我很久!去检查下ndk的配置路径!NDK_ROOT是否正确!然后3.1版本需要的NDK是最新的版本,
去安卓网站http://developer.android.com/tools/sdk/ndk/index.html#Installing下一个最新的版本r9d吧!
3、 如果遇到android api问题

找到运行进行更新,看缺哪个api就更新哪个,不过这个更新比较慢……原因google被禁……
4、Android NDK: Invalid APP_STL value: c++_static 這個要修改jni/Application.mk
APP_STL := c++_static
NDK_TOOLCHAIN_VERSION=clang
APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char
APP_LDFLAGS := -latomic
改成:
APP_STL := gnustl_static
# add -Wno-literal-suffix to avoid warning: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix]
# in NDK_ROOT/arch-arm/usr/include/sys/cdefs_elf.h:35:28: when using ndk-r9
APP_CPPFLAGS := -frtti -DCOCOS2D_DEBUG=1 -std=c++11 -Wno-literal-suffix -fsigned-char
5、Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 8
这是因为NDK指定的版本与minSdkVersion不一致的问题,修改AndroidManifest.xml文件 其中android:minSdkVersion修改為<uses-sdk android:minSdkVersion="20"/>
Cocos2d-x 3.2 学习笔记(四)学习打包Android平台APK!的更多相关文章
- Unity3D之移植学习笔记:移植到Android平台更好的方法
接上文,之前我们采用了直接将Unity项目导出为Eclipse项目来修改的方式,这种做法存在的一个最大的问题就是:每当Unity被修改之后,都需要重新导出,而每次导出的项目在Android平台方面的J ...
- Unity3D之移植学习笔记:移植到Android平台
首先,我们需要一台已经配置好可以开发Android应用的计算机,这里我使用的是Windows系统+Eclipse+ADT的开发环境,当然也可以使用Android Studio或者使用Mac系统都可以. ...
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- ES6学习笔记<四> default、rest、Multi-line Strings
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...
- muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制
目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...
随机推荐
- selenium 切换窗口 每次成功code
最近用了网络上别人的一段切换窗口的code每次成功了,不错,学习 // 根据Title切换新窗口 public boolean switchToWindow_Title(WebDriver drive ...
- <input type="file"> change事件异常处理办法
问题:最近发现一个奇怪的bug, 那就是在上传图片需要采用input type=file来进行文件选择.由于为了适应美工的UI图,所以是把选择文件的input框隐藏了.然后通过另外一个按钮的点击事件来 ...
- JavaWeb开发学习(二)-配置Tomcat服务器
1. 下载Tomcat服务器 Tomcat是一个免费.开源的JavaWeb服务器. Tomcat官网是http://tomcat.apache.org/ 我使用的是版本是Tomcat7.0,下载Zip ...
- wex5&.net开发
一.环境开发 1.baas.net:菜单“窗口”->“首选项” 确定后左侧生成bass.net目录,设置iis网站目录(因为.net网站必须在iis中部署) 2.sqlserver:根据项目可选 ...
- .NET跨平台实践:用C#开发Linux守护进程
Linux守护进程(Daemon)是Linux的后台服务进程,它脱离了与控制终端的关联,直接由Linux init进程管理其生命周期,即使你关闭了控制台,daemon也能在后台正常工作. 一句话,为L ...
- GEF: 图形拖拽处理
重写EditPart#getDragTracker 即可替换拖拽事件.
- 使用OAuth打造webapi认证服务供自己的客户端使用(二)
在上一篇”使用OAuth打造webapi认证服务供自己的客户端使用“的文章中我们实现了一个采用了OAuth流程3-密码模式(resource owner password credentials)的W ...
- [每日电路图] 1、基于AT89C52单片机最小系统接口电路【转】
come from:http://www.21ic.com/dianlu/basis/interface/2015-04-21/621607.htm AT89C52是美国Atmel ...
- 换个角度理解云计算之HDFS
学习云计算,必然得了解Hadoop,而Hadoop中的HDFS(分布式文件系统)是一个基础,接下来就写一下我所理解的HDFS. 有一个很有特别的村庄,村庄里面有一个很牛逼的人,叫做“大哥”,村民们都信 ...
- WAMPServer 默认安装启动后,图标显示橙黄色
说明:我是在家的电脑上面学习的WAMPServer的,而家的电脑很干净.这次来学校以后,实验室的电脑被我经常的折磨,今天在安装以后,启动后,发现图标有红色到黄色,就停止了.其实,问题的根源很简单,某个 ...