目标:在visual studio 2012下用cocos2dx 3.0beta2引擎(用lua脚本语言也行)进行游戏开发,然后将做好的游戏进行编译打包,最终生成.apk可在手机上安装的文件
采用的软件列表:(自己下载对应的新版本,64bit or 32 bit)
1.python:(用于脚本的执行),这里最好选择2.7的版本,因为在cocos2dx的projectname\proj.android\build_native.py文件中的有很多print函数调用采用print "hello"这种方式,对于python3.0以上版本会报语法错误
2.NDK:帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。
3.ANT:Ant是一种基于Java的build工具。理论上来说,它有些类似于(Unix)C中的make ,是一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试
4.SDK:google提供的用于android开发的API
5 Cocos2dx:我们自己写好的项目文件等
6.JDK:eclipse,android等开发需要的java API和运行环境等
7.cygwin:模拟linux环境的软件
实现的步骤:
1.首先用cocos2dx实现我们的功能项目文件
2.配置好上面这些软件的环境变量信息
我自己配置的环境是
a.Python:PY_HOME C:\Python27
b.NDK: NDK_ROOT D:\android-ndk-r9d
c.ANT:ANT_HOME C:\ant
d.SDK: :ANDROID_SDK_ROOT D:\adt-bundle-windows-x86_64\sdk
e.Java的classpath:classpath C:\Program Files\Java\jdk1.8.0\jre\lib
f.JDK(java): JAVA_HOME C:\Program Files\Java\jdk1.8.0
3.在目录projectname\proj.android\中,即你cocos项目帮我们生成的一个android项目下
a.执行android update project -p . -t android-10(这个android调用的命令是使用了SDK自带的android.bat工具,在目录<sdk>tools\android.bat下)
这个命令会帮我们生成文件local.properties、ant.properties、build.xml等项目生成需要的配置信息,其中我的local.properties内容是:sdk.dir=D:\\adt-bundle-windows-x86_64\\sdk,指定了自己SDK的位置,在build.xml文件中最后一行有<import file="${sdk.dir}/tools/ant/build.xml" />,这样会调用google为我们提供android开发API:SDK下带有的工具ANT,在目录D:\adt-bundle-windows-x86_64\sdk\tools'ant下的文件build.xml,这个文件定义了大量的基础构建方法和打包策略。(当然我们也可以不调用android update...这个命令,直接将文件<sdk.dir>/tools/ant/build.xml拷贝到项目proj.android下面,不用像这样生成自己的build,xml然后引用google的build.xml)
b.执行proj.android目录下的build_native.py,这个文件中首先定义了num_of_cpu、SDK、NDK、toolchain_version的环境变量信息,然后调用一个do_build函数来执行NDK编译这个cocos的C++项目,使它能被java环境下开发识别(生成的动态库结果保存在当前项目的libs\armeabi文件夹下)
c.打开软件cygwin,cd d:进入到D盘,这是个模拟linux的环境的软件,我们cd目录转到自己proj.android目录下,执行ant debug(通过调用C盘下载好的ant软件和在该proj.android目录下的build文件内提供的打包策略信息-之前我们update生成的,来编译和打包之前NDK编译好的so动态库等文件-在当前项目的libs\armeabi文件夹下),这样在我们项目的proj.android的bin目录下就能找到对应打包生成的apk文件,其中有个debug-unaligned是个内存未对齐的打包版本。《具体的ant怎么打包编译的可以去C盘下ant目录的bin文件夹查看》
此时出现问题:
BUILD FAILED
D:\adt-bundle-windows-x86_64\sdk\tools\ant\build.xml:601: The following error occurred while executing this line:
D:\cocos2d-x-3.0beta2\project\NTESGame2048\cocos2d\cocos\2d\platform\android\java\build.xml:46: sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var
解决方法:将D:\cocos2d-x-3.0beta2\project\NTESGame2048\proj.android 目录下的文件project.properties(之前执行android_update.bat生成的文件)最后一行
android.library.reference.1=../cocos2d/cocos/2d/platform/android/java用"#"符号注释掉
d.最后,将这个.apk文件拷贝入手机,安装执行就OK 了
最后补充下,在eclipse软件下打开proj.android整个文件夹下的项目文件,插上自己的手机,能够模拟查看生成的.apk文件的执行过程
自己碰到的奇葩问题:安装上apk,直接闪退,没有效果,然后我就自己用ecplise来进行一个打包的工作:
1.导入项目:eclipse添加入当前的android项目:cocos项目位置\proj.android
2.添加src文件
把cocos2d-x-3.0beta/cocos/2d/platform/android/java/src/org/cocos2d-x/lib整个文件夹拷贝到你的项目下proj.Android/src/org/cocos2d-x下
//右键工程名->Properties->Java Build Path->Source->Link Source->Linked Folder Location(添加目录:cocos2d-x3.0\cocos\2d\platform\android\java\src)
->Fold Name(输入cocossrc等,不能用src,包会重名)
//把cocos2d-x-3.0beta/cocos/2d/platform/android/java/src/org/cocos2d-x/lib整个文件夹拷贝到你的项目下proj.Android/src/org/cocos2d-x下->保存(finish)
3.直接右键工程,run as->android application(这里自己的手机插上了电脑的USB接口并且被eclipse识别)这是自己的手机就能模拟执行apk的展示效果
More:自己的酷派手机9070开始手机驱动一直都连不上,不能被识别(在cmd中键入adb devices命令可以查看当前连接上电脑的设备),后来就下载了一个豌豆荚软件帮我安装一个手机驱动软件,最后就OK了!不是打广告,大家别拍我 =。=
Leonjhan At NTES 4/2/2014