Cocos2d学习笔记1——打包apk

转载自:http://www.cnblogs.com/Richard-Core/p/3855130.html  http://www.cnblogs.com/skysand/p/4063584.html

我的是3.5,作者的是3.1,基本步骤都差不多,反正都是3.x,用的都是一套api嘛,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文件夹下

Cocos2d学习笔记1——打包apk

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

Cocos2d学习笔记1——打包apk

二、配置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不是内部或外部命令”那就说明配置成功了。

Cocos2d学习笔记1——打包apk

Cocos2d学习笔记1——打包apk

Cocos2d学习笔记1——打包apk

Cocos2d学习笔记1——打包apk

三、配置Ant环境变量

把ant的存放路径加入系统Path变量。

Cocos2d学习笔记1——打包apk

Cocos2d学习笔记1——打包apk

四、配置cocos2dx 3.x Android 环境关联

以上已做好准备工作,打开cocos2dx目录下的 setup.py。

Cocos2d学习笔记1——打包apk

输入ndk的路径。

Cocos2d学习笔记1——打包apk

输入sdk路径

Cocos2d学习笔记1——打包apk

最后输入的是 ant的路径

OK,三个路径都已经配置完毕

Cocos2d学习笔记1——打包apk

五、打包Apk

然后就可以在项目目录下使用 cocos compile -p android方式编译APK文件了。

注意:

①在打包apk之前需要修改proj.android/jni文件夹下的Android.mk文件 添加自己新增的CPP文件,这里的新增指的是非cocos2dx生成的项目文件(自己新增的文件)。一定要把自己新增的文件或文件夹包含进apk。

②默认打包是横屏,若做的游戏是竖屏。则更改AndroidManifest.xml的参数:

  android:screenOrientation="landscape"(横屏),android:screenOrientation="portrait"(竖屏)

首先我们拿官方的 cpp-tests项目来试手吧!

按住shift键+鼠标右键 选择在此处打开命令窗口。

Cocos2d学习笔记1——打包apk

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

Cocos2d学习笔记1——打包apk

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

Cocos2d学习笔记1——打包apk

等待完毕之后 看下这个文件夹下的 apk吧!可以安装到手机上试一下了。

六、成功:

Cocos2d学习笔记1——打包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

如果你遇到这个问题,那么就要在

Cocos2d学习笔记1——打包apk

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

检查\proj.android目录下的project.properties是否是android-20

 Cocos2d学习笔记1——打包apk

 

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问题

Cocos2d学习笔记1——打包apk

 

找到运行进行更新,看缺哪个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"/>

6、我的使用cocos compile -p android --ap 20方式编译APK文件出错,后改用cocos compile -p android -ap 20后编译正常。

八、小提示

1、不用*,解决android sdk 更新问题

   最近祖国越来越强了,强得android开发工具都没法更新了,但是祖国再怎么强也阻挡不了我开发的脚步。下面给大家分享个更新android sdk 的方法。方法原理就是利用国内镜像源。

  • 以windows为例,下载好adt-bundle,解压后找到SDk manager.exe。右键使用管理员权限打开。(当然XP用户就无所谓管理员权限了)Cocos2d学习笔记1——打包apk  
如果你下载的sdk找不到SDk manager.exe。那么找到sdk\tools\android.bat。双击打开。
Cocos2d学习笔记1——打包apk

 

  • 点击tools菜单,选择options
Cocos2d学习笔记1——打包apk

 

  • 出现如下窗口,按照下面窗口设置好。关掉再重新打开sdk manager.exe就能正常更新了。
Cocos2d学习笔记1——打包apk

HTTP proxy server :那里输入mirrors.neusoft.edu.cn

Http proxy port :那里输入80

others 下面的第一个一定要勾上。

2、打包指令

打debug包:如果使用--ap 20报错,可以使用-ap 20。

cocos compile -p android --ap 20

cocos compile -p android -ap 20

打release包:

cocos compile -p android -m release

3、3.x版本编译release报错

value for keystore is not valid. it must resolve to a single path

找了一下,发现cocos会记录ant信息,记录信息到\frameworks\runtime-src\proj.android\ant.properties(使用cocosFrameworks方式的),或者记录信息到当前工程的\proj.android\ant.properties下,比如我的pp-empty-test工程,记录的路径是E:\Andriod\cocos2d-x-3.5\tests\cpp-empty-test\proj.android\ant.properties。

打开这个文件发现:

key.store=e:\cocos_projects\android.keystore

斜杠都少了一个,只需要改为

key.store=e:\\cocos_projects\\android.keystore

就ok了

4、ADT+Eclipse+SDK说明

ADT:安卓开发工具Android Development Tools
  在Eclipse编译IDE环境中,需安装ADT(Android Developer Tools)Plug-in,这是Android在Eclipse上的开发工具。
  目前Android开发所用的开发工具主要有Android Studio 、intellij idea、Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。
SDK(Software Development Kit):
  一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。在Android中,它为开发者提供了库文件以及其它开发所用到的工具。简单理解为开发工具包集合,是整体开发中所用到的工具包。
  如果你不用Eclipse作为你的开发工具,你就不需要下载ADT,只下载SDK即可开发。
  如果你使用Eclipse作为你的开发工具,那么就必须安装ADT。有的Eclipse已经内嵌了ADT,不需要另外下载安装ADT。
 
5、python打开cocos2dx目录下的 setup.py
  • 打开cocos2dx目录(E:\Andriod\cocos2d-x-3.5),在该目录下,按住shift键,同时点击右键,选择在此处打开命令窗口。

 Cocos2d学习笔记1——打包apk

 

  •  在打开的命令行窗口中,输入python setup.py

Cocos2d学习笔记1——打包apk

  按回车键后,在设置ndk、sdk、ant路径。