关于cocos2d-x 编译到android 的问题与步骤
2014-04-14 17:18
323 查看
原文 http://www.cocoachina.com/bbs/read.php?tid=195182
本人这几天一直都没有跟新自己的网站内容,问我干什么去了,当然是做这篇文章做的事了,说起这个移植来真是麻烦啊,网上试验了各种方法,都不知道谁对谁错啊。不过经过本人这三天的研究最后终于成功了,为了让大家少走一些歪路,我决定一定要写下这篇文章,新手们,好好看,不要浪费时间了!现在我就把我遇到的问题和一种简单的方法(方法绝对靠谱,安卓部分适用于3.0)教给大家,还有就是我用到的所有资源。先说资源的问题,大家先去下载我给的资源,一边下载我们一边学教程。
关于移植的问题网上的版本大致分为使用Cygwin和不使用的,建议大家不要使用Cygwin了,你下载东西不说,下载下来能不能用更是问题了,很多人就是因为这个东西没了信心的,最关键的是NDK7以后就不需要使用它了,我们新手现在用的版本绝对是NDK7以后的了。还有就是利用create-android-project.bat这个东西来创建工程也不适用了,从cocos2.2版本开始官方就建议使用python创建工程,不过即使你想用这个东西,在cocos2.2的主目录下也没有了,既然没了我们就更不用了。那么我说一下整体的思路。首先利用python生成项目工程,在android工程下拷贝一些我们写好的win32工程下的文件,利用已经配置好的开发android的eclipse打开android工程,在工程的属性中配置一些环境变量,然后生成.apk的包,真机运行!下面就开始吧。
1、安装python2.7.5。下载软件后安装就可以了,路径就选择默认的吧,反正也不大,然后都是选择下一步。
2、设置环境变量path,将python的安装路径添加到环境变量中。所有的操作按图中的进行。
注意路径后边有个分号,一定要写上啊。3、解压cocos2d-x,当然如果你有的话就不用了。但最好放到盘的根目录下,我的在E盘的根目录下。将python.bat复制到E:\cocos2d-x-2.2\cocos2d-x-2.2\tools\project-creator文件夹下。运行这个批处理,接着就输入项目名称和包标识名,我现在把我写的那个忍者飞镖移植一下,所有的操作如图所示。
我们来看看成功了没有,在E:\cocos2d-x-2.2\cocos2d-x-2.2\projects是不是多了你刚才创建的项目文件夹,主要文件夹下的内容如图所示。
4、我们来说几个重要的文件夹和文件,都是我们将要用到的。Classes文件夹下将要放我们的源代码,你写的源代码都要放到这里,也就是.cpp和.h文件,不过这里有俩个需要注意的文件就是main.cpp和main.h,等一会你复制的时候不要把main.cpp和main.h复制到这里来,那复制到什么地方呢,其实你根本就不用复制,main是程序的入口,想想win32下的main怎么能放到android平台呢,android平台当然有它自己的main了呀,那android的main在什么位置呢,我等等再说。好了,现在就把你写好的东西复制到这个文件夹吧,记住删除Classes文件夹下你没用到的那四个文件(否则的话你的工程不是变大了吗),对我而言HelloWorld的那俩个文件就删掉了,AppDelegate被我替换了,main.cpp和main.h记住不要复制啊!Resource下就是我们程序用到的资源,不过也不要把我们用到的资源复制到这个位置。在proj.android工程下,我们看到三个文件夹,现在我们都点进去,看看有什么,我们需要做些什么工作!
我们先修改jni文件夹下的Android.mk,主要是改我们用到的Classes文件夹下的文件的路径,修改的地方和修改之后的文件如图所示,大家照着我的改就行了,其实就是让程序知道我们的那些.cpp文件在什么地方。
接着打开jni下的hellocpp,看看你看到了什么,main.cpp,我们打开看一下。
这个main.cpp是不是完全不同于win32下的那个cpp文件,前几次我在移植的工程中就是把我的那个win32下的main复制到了这里,结果编译的时候老是有错误,后来才发现的,这个是拿python生成的,我估计不同平台下的这个main写的都不会相同吧。接着打开工程下的res文件夹,进去看看都有什么,是不是有一张图片啊,那张图片就是我们平时玩手机应用的时候在手机上显示的icon图标,这里我们可以替换成我们自己的文件。但是名字要和原来的一样啊。
接着我们来看项目工程下的另一个文件夹src,这个文件夹里边缺少了org文件夹,我们来拷贝一份到这里,路径什么的如图所示。
好做完了这几步基本上就差不多了,现在我们还差资源文件没有拷贝了,不着急,我们先来搭建一个android开发平台eclipse。5、现在来安装jdk和jre,安装我给的这俩个软件,默认都选择下一步。
6、解压android-ndk-r9和Android_SDK,在Android_SDK下有我们要用到的eclipse和sdk。运行eclipse。
按下如图所示的图标。下载你手机所用到的API版本,我的android手机版本是2.3的,这里我下载了API8和API10,大家看看自己的手机都是多少的版本,下载自己的对应API。这个过程需要一段时间。大家耐心等待。
接着新建一个虚拟设备。步骤如图,目的是为了在win32上运行我们的程序,不过我们一般在真机上运行,这一步其实不是必须的,如果你想让自己的程序在虚拟机上测试的话就按如下的步骤进行吧,建议在真机上测试,所以可以跳过这一步骤。
接着导入我们的android工程,操作如图,在选择android工程的时候选择好了,我的目录是E:\cocos2d-x-2.2\cocos2d-x-2.2\projects\FirstGame\proj.android。
7、接着看一下我们工程的目录,是不是多了好几个文件夹,其中有一个是assets文件夹,这里边是空的,我们把我们程序的资源文件放进去。
8、这一步很重要,我们来配置一下环境变量,大家看好自己的安装路径添加。
以上第一幅图是添加了资源文件以后刷新了一下我们的项目,第三幅图填入NDK的ndk-build.cmd,剩下的是添加了三个环境变量,这三个环境变量分别是:添加COCOS2DX,也就是cocos2dx解压缩的根目录;添加NDK_ROOT,也就是NDK解压缩的根目录;添加NDK_MODULE_PATH
,是cocos2dx的解压缩的根目录和这样一个目录,中间有分号的。
E:\cocos2d-x-2.2\cocos2d-x-2.2;E:\cocos2d-x-2.2\cocos2d-x-2.2\cocos2dx\platform\third_party\android\prebuilt。
大家按照上边的三幅图添加就可以了,第二幅图是cocos2d的解压根目录。以上配置需要大家仔细配置,配置完成以后点击确定,然后接着以下操作,我们离成功不远了!
9、因为不同的人手机版本可能不同,我们这里先说一下怎么打包出适合你自己的apk,一边看图一边说话吧。
打开工程目录下的AndroidManifest.xml文件,在图示划线的地方的那个数字就是你要打包的API版本,不同的数字代表不同的android版本,大家可以改成自己的android版本对应的API。这个改好了以后我们回到eclipse中。按图中的进行操作。
如果你看到了上图中的第二张图片,证明你成功了,而且这个时间会有点漫长,如果之前出现了错误,就和我一样,一般是API比较低,这么解决。
编译好了以后我们就需要打包了。在打包之前附上一篇文章的链接,大家先去准备Andriod程序的数字签名。之后按图中的进行操作。
之后按图中的进行操作。
看到了上边的这幅图,大家等待片刻就可以在你设置的路径下看到打包好的apk文件了,这样的话我们就移植成功了,这个工程如果还存在什么问题,就是配置了项目的变量以后出现的问题,比如程序中有错误,但是明明win32下正常啊,你就删除项目以后重新导入一遍,然后不要去看那个错误,重新构建工程,基本上问题就解决了。我在手机上运行,最后的效果没法展示给大家了,如果大家有什么问题,欢迎留言,我们一块讨论。
最后的最后本文转自:http://www.zaojiahua.com/android-platform.html皂荚花,由小塔原创,更多cocos2dx的文章可以访问皂荚花!
LZ我已经解决了,
Android.mk
在$(call import-module,cocos2dx)之前加上:
$(call import-add-path, D:/cocos2d-x-2.2.3)
$(call import-add-path, D:/cocos2d-x-2.2.3/cocos2dx/platform/third_party/android/prebuilt)
Application.mk
在最后面加上
NDK_MODULE_PATH:=D:/cocos2d-x-2.2.3;D:/cocos2d-x-2.2.3/cocos2dx/platform/third_party/android/prebuilt
本人这几天一直都没有跟新自己的网站内容,问我干什么去了,当然是做这篇文章做的事了,说起这个移植来真是麻烦啊,网上试验了各种方法,都不知道谁对谁错啊。不过经过本人这三天的研究最后终于成功了,为了让大家少走一些歪路,我决定一定要写下这篇文章,新手们,好好看,不要浪费时间了!现在我就把我遇到的问题和一种简单的方法(方法绝对靠谱,安卓部分适用于3.0)教给大家,还有就是我用到的所有资源。先说资源的问题,大家先去下载我给的资源,一边下载我们一边学教程。
关于移植的问题网上的版本大致分为使用Cygwin和不使用的,建议大家不要使用Cygwin了,你下载东西不说,下载下来能不能用更是问题了,很多人就是因为这个东西没了信心的,最关键的是NDK7以后就不需要使用它了,我们新手现在用的版本绝对是NDK7以后的了。还有就是利用create-android-project.bat这个东西来创建工程也不适用了,从cocos2.2版本开始官方就建议使用python创建工程,不过即使你想用这个东西,在cocos2.2的主目录下也没有了,既然没了我们就更不用了。那么我说一下整体的思路。首先利用python生成项目工程,在android工程下拷贝一些我们写好的win32工程下的文件,利用已经配置好的开发android的eclipse打开android工程,在工程的属性中配置一些环境变量,然后生成.apk的包,真机运行!下面就开始吧。
1、安装python2.7.5。下载软件后安装就可以了,路径就选择默认的吧,反正也不大,然后都是选择下一步。
2、设置环境变量path,将python的安装路径添加到环境变量中。所有的操作按图中的进行。
注意路径后边有个分号,一定要写上啊。3、解压cocos2d-x,当然如果你有的话就不用了。但最好放到盘的根目录下,我的在E盘的根目录下。将python.bat复制到E:\cocos2d-x-2.2\cocos2d-x-2.2\tools\project-creator文件夹下。运行这个批处理,接着就输入项目名称和包标识名,我现在把我写的那个忍者飞镖移植一下,所有的操作如图所示。
我们来看看成功了没有,在E:\cocos2d-x-2.2\cocos2d-x-2.2\projects是不是多了你刚才创建的项目文件夹,主要文件夹下的内容如图所示。
4、我们来说几个重要的文件夹和文件,都是我们将要用到的。Classes文件夹下将要放我们的源代码,你写的源代码都要放到这里,也就是.cpp和.h文件,不过这里有俩个需要注意的文件就是main.cpp和main.h,等一会你复制的时候不要把main.cpp和main.h复制到这里来,那复制到什么地方呢,其实你根本就不用复制,main是程序的入口,想想win32下的main怎么能放到android平台呢,android平台当然有它自己的main了呀,那android的main在什么位置呢,我等等再说。好了,现在就把你写好的东西复制到这个文件夹吧,记住删除Classes文件夹下你没用到的那四个文件(否则的话你的工程不是变大了吗),对我而言HelloWorld的那俩个文件就删掉了,AppDelegate被我替换了,main.cpp和main.h记住不要复制啊!Resource下就是我们程序用到的资源,不过也不要把我们用到的资源复制到这个位置。在proj.android工程下,我们看到三个文件夹,现在我们都点进去,看看有什么,我们需要做些什么工作!
我们先修改jni文件夹下的Android.mk,主要是改我们用到的Classes文件夹下的文件的路径,修改的地方和修改之后的文件如图所示,大家照着我的改就行了,其实就是让程序知道我们的那些.cpp文件在什么地方。
接着打开jni下的hellocpp,看看你看到了什么,main.cpp,我们打开看一下。
这个main.cpp是不是完全不同于win32下的那个cpp文件,前几次我在移植的工程中就是把我的那个win32下的main复制到了这里,结果编译的时候老是有错误,后来才发现的,这个是拿python生成的,我估计不同平台下的这个main写的都不会相同吧。接着打开工程下的res文件夹,进去看看都有什么,是不是有一张图片啊,那张图片就是我们平时玩手机应用的时候在手机上显示的icon图标,这里我们可以替换成我们自己的文件。但是名字要和原来的一样啊。
接着我们来看项目工程下的另一个文件夹src,这个文件夹里边缺少了org文件夹,我们来拷贝一份到这里,路径什么的如图所示。
好做完了这几步基本上就差不多了,现在我们还差资源文件没有拷贝了,不着急,我们先来搭建一个android开发平台eclipse。5、现在来安装jdk和jre,安装我给的这俩个软件,默认都选择下一步。
6、解压android-ndk-r9和Android_SDK,在Android_SDK下有我们要用到的eclipse和sdk。运行eclipse。
按下如图所示的图标。下载你手机所用到的API版本,我的android手机版本是2.3的,这里我下载了API8和API10,大家看看自己的手机都是多少的版本,下载自己的对应API。这个过程需要一段时间。大家耐心等待。
接着新建一个虚拟设备。步骤如图,目的是为了在win32上运行我们的程序,不过我们一般在真机上运行,这一步其实不是必须的,如果你想让自己的程序在虚拟机上测试的话就按如下的步骤进行吧,建议在真机上测试,所以可以跳过这一步骤。
接着导入我们的android工程,操作如图,在选择android工程的时候选择好了,我的目录是E:\cocos2d-x-2.2\cocos2d-x-2.2\projects\FirstGame\proj.android。
7、接着看一下我们工程的目录,是不是多了好几个文件夹,其中有一个是assets文件夹,这里边是空的,我们把我们程序的资源文件放进去。
8、这一步很重要,我们来配置一下环境变量,大家看好自己的安装路径添加。
以上第一幅图是添加了资源文件以后刷新了一下我们的项目,第三幅图填入NDK的ndk-build.cmd,剩下的是添加了三个环境变量,这三个环境变量分别是:添加COCOS2DX,也就是cocos2dx解压缩的根目录;添加NDK_ROOT,也就是NDK解压缩的根目录;添加NDK_MODULE_PATH
,是cocos2dx的解压缩的根目录和这样一个目录,中间有分号的。
E:\cocos2d-x-2.2\cocos2d-x-2.2;E:\cocos2d-x-2.2\cocos2d-x-2.2\cocos2dx\platform\third_party\android\prebuilt。
大家按照上边的三幅图添加就可以了,第二幅图是cocos2d的解压根目录。以上配置需要大家仔细配置,配置完成以后点击确定,然后接着以下操作,我们离成功不远了!
9、因为不同的人手机版本可能不同,我们这里先说一下怎么打包出适合你自己的apk,一边看图一边说话吧。
打开工程目录下的AndroidManifest.xml文件,在图示划线的地方的那个数字就是你要打包的API版本,不同的数字代表不同的android版本,大家可以改成自己的android版本对应的API。这个改好了以后我们回到eclipse中。按图中的进行操作。
如果你看到了上图中的第二张图片,证明你成功了,而且这个时间会有点漫长,如果之前出现了错误,就和我一样,一般是API比较低,这么解决。
编译好了以后我们就需要打包了。在打包之前附上一篇文章的链接,大家先去准备Andriod程序的数字签名。之后按图中的进行操作。
之后按图中的进行操作。
看到了上边的这幅图,大家等待片刻就可以在你设置的路径下看到打包好的apk文件了,这样的话我们就移植成功了,这个工程如果还存在什么问题,就是配置了项目的变量以后出现的问题,比如程序中有错误,但是明明win32下正常啊,你就删除项目以后重新导入一遍,然后不要去看那个错误,重新构建工程,基本上问题就解决了。我在手机上运行,最后的效果没法展示给大家了,如果大家有什么问题,欢迎留言,我们一块讨论。
最后的最后本文转自:http://www.zaojiahua.com/android-platform.html皂荚花,由小塔原创,更多cocos2dx的文章可以访问皂荚花!
LZ,我按照你的方法一步一步做了,可是却出现了这样的错误,这是怎么回事啊?我的cocos2d-x是2.2.3版本的,ndk是9的 图片:360截图20140403185613124.jpg |
Android.mk
在$(call import-module,cocos2dx)之前加上:
$(call import-add-path, D:/cocos2d-x-2.2.3)
$(call import-add-path, D:/cocos2d-x-2.2.3/cocos2dx/platform/third_party/android/prebuilt)
Application.mk
在最后面加上
NDK_MODULE_PATH:=D:/cocos2d-x-2.2.3;D:/cocos2d-x-2.2.3/cocos2dx/platform/third_party/android/prebuilt
相关文章推荐
- 关于cocos2d移植到Android上Android.mk需要手动增加cpp文件的问题
- 关于Android 出现65536,导致项目无法正常编译问题的解决
- 关于Android AIDL 编译报错问题
- 关于android源码中的APP编译时引用隐藏的API出现的问题
- 【游戏开发备注之一】关于Cocos2dx_v1.x版本iphone与Android运行出现图片白块、添加GameCenter报错问题及编译Android闪退的解决办法&&CCLOG与CClog的区别
- 关于cocos2d-x(Android)集成广告点击广告后再点击back键退出桌面并出现黑屏问题
- cocos2d-x 移植到android中编译的一些问题:fatal error: Box2D/Box2D.h: No such file or directory"
- cocos引擎v2.1版本android 编译问题解决办法 (cocos2d-x-3.4rc1)
- 64bits Ubuntu下编译Android的步骤,所遇到的问题和解决方法
- 编译用于Android的busybox---步骤,问题和解决
- 关于Android的硬件抽象层添加进Android系统默认编译的问题
- cocos2d-x 3.0rc版编译到android平台缺少cocos-ext.h头文件的问题解决
- 填一个坑。关于把ruby编译到android上的一个遗留问题。
- 关于win32移植android(最新的cocos2d-x安装错误和cygwin编译错误的解决)
- 关于一个android工程同时使用多个工程库,在编译时出现的问题
- 关于在Cocos下面配置开发环境、编译移植到android上面的奇葩问题小结
- 编译cocos2d-x for android 项目遇到的问题
- 关于编译android程序,期待模拟器,中文路径的问题【转载】
- 关于cocos2d-x项目移植到android平台的时候明明已经将资源复制到assets还是出现的assets is nullptr的问题
- cocos2d 3.11.1 关于Android包第一次打开按Home键挂起再进入的问题 too much recursion