《一》 将cocos2dx2.0.4 的sample工程移植到android 并真机调试

来源:互联网 发布:福富软件待遇 编辑:程序博客网 时间:2024/06/05 17:52

菜鸟一枚 第一次弄cocos2dx 自己捣鼓了一番,看了许多高手的文章 依样画葫芦。总算是完成了我的要求,这里写下心得

第一步 当然是搭建android开发环境

个人参考文章:http://blog.csdn.net/aa4790139/article/details/8086635

写得相当的详细 一路走来,遇到一点小问题 但是都能解决。我们来从这篇文章开始

首先说明一点,我用的是mac mini安装的win7系统 32位 

下面是对参考文章内容的引用和我自己的一点修改

一.android环境的搭建 ----简易步骤,至于详细的 网上还是有很多教程。这里不是重点

1.下载jdk (最新的就行了)

2.下载eclipse 

注:我用的是myeclipse 10 X版的 有很多东西和eclipse不一样,特别是下载ADT的时候 我只能在myeclipse里面下载,但是网站被墙了 会导致下载不成功, 自己下载的都不能识别,我的解决方法,那就是

修改hosts文件:C:\Windows\System32\drivers\etc\hosts  

在最后一行加上 74.125.237.1       dl-ssl.google.com

这样在myeclipse 就能在线下载了

3.下载android SDK

二.下载android NDK  

(http://developer.android.com/tools/sdk/ndk/index.html 最新的 r8)

三.3、下载安装cygwin
     

这里可以不用安装cygwin 下面有说明

由于NDK编译代码时必须要用到make和gcc,所以你必须先搭建一个linux环境, cygwin是一个在windows平台上运行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,非常有用。通过它,你就可以在不安装linux的情况下使用NDK来编译C、C++代码了。下面我们一步一步的安装cygwin吧。
(安装的时候忘记截图了)
首先,你得先跑到http://www.cygwin.com下载setup.exe

1、 然后双击运行吧,运行后你将看到安装向导界面:

2、  点击下一步
     此时让你选择安装方式:

           1)Install from Internet:直接从Internet上下载并立即安装(安装完成后,下载好的安装文件并不会被删除,而是仍然被保留,以便下次再安装)。

           2)Download Without Installing:只是将安装文件下载到本地,但暂时不安装。

           3)Install from Local Directory:不下载安装文件,直接从本地某个含有安装文件的目录进行安装。

3、选择第一项,然后点击下一步:

4、选择要安装的目录,注意,最好不要放到有中文和空格的目录里,似乎会造成安装出问题,其它选项不用变,之后点下一步:

5、上一步是选择安装cygwin的目录,这个是选择你下载的安装包所在的目录,默认是你运行setup.exe的目录,直接点下一步就可以:

6、此时你共有三种连接方式选择:

     1) Direct Connection:直接连接。

     2) Use IE5 Settings:使用IE的连接参数设置进行连接。

     3) Use HTTP/FTP Proxy:使用HTTP或FTP代理服务器进行连接(需要输入服务器地址、端口号)。

          用户可根据自己的网络连接的实情情况进行选择,一般正常情况下,均选择第一种,也就是直接连接方式。然后再点击“下一步”,

7、 这是选择要下载的站点,我用的是http://mirrors.kernel.org,速度感觉还挺快,选择后点下一步

8、 此时会下载加载安装包列表

9、Search是可以输入你要下载的包的名称,能够快速筛选出你要下载的包。那四个单选按钮是选择下边树的样式,默认就行,不用动。View默认是Category,建议改成full显示全部包再查,省的一些包被隐藏掉。左下角那个复选框是是否隐藏过期包,默认打钩,不用管它就行,下边开始下载我们要安装的包吧,为了避免全部下载,这里列出了后面开发NDK用得着的包:autoconf2.1、automake1.10、binutils、gcc-core、gcc- g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make共12个包

10、  然后开始选择安装这些包吧,点skip,把它变成数字版本格式,要确保Bin项变成叉号,而Src项是源码,这个就没必要选了。

11、  下面测试一下cygwin是不是已经安装好了。

      运行cygwin,在弹出的命令行窗口输入:cygcheck -c cygwin命令,会打印出当前cygwin的版本和运行状态,如果status是ok的话,则cygwin运行正常。

      然后依次输入gcc –v,g++ -v,make –v,gdb –v进行测试,如果都打印出版本信息和一些描述信息,非常高兴的告诉你,你的cygwin安装完成了!

注:这里按照作者的顺序来是可以的 当时我安装cygwin的时候没注意第9步 所以全部下载了但是没安装导致 g++ version 之类的命名 not found 于是我有重新运行setup.exe,按照原来的顺序,注意下载服务器不变,然后再按照作者的第9步来的

4、配置NDK环境变量
为了不让大家步入我的后尘,在这里得注意:最好不要用记事本打开.bash_profile文件,用UltraEdit打开时会有个提示“你想转换C:\cygwin\home\Administrator\.bash_profile为DOS格式吗?”呵呵!!这里千万不要点是,否则编码格式就被你改了,用cygwin运行NDK的时候就显示如下错误了:


“-bash: $'\r': command not found
-bash: $'\r': command not found
-bash: $'\r': command not found
-bash: /home/lenovo/.bash_profile: line 47: syntax error: unexpected end of file
”如果真要是这样了,解决办法:cygwin下etc\skel和etc\defaolts\etc\skel中有这个文件,重新copy此文件出来一份,然后将你改坏了的那个.bash_profile内容copy覆盖这个文件的内容,然后在此文件Copy到C:\cygwin\home\Administrator下,然后再运行就可以了。

1、  首先找到cygwin的安装目录,找到一个home\<你的用户名>\.bash_profile文件,我的是:E:\cygwin\home\Administrator\.bash_profile,(注意:我安装的时候我的home文件夹下面神马都没有,解决 的办法:首先打开环境变量,把里面的用户变量中的HOME变量删掉,在E:\cygwin\home文件夹下建立名为Administrator的文件夹(是用户名),然后把E:\cygwin\etc\skel\.bash_profile拷贝到该文件夹下)。

2、  打开bash_profile文件,添加NDK=/cygdrive/<你的盘符>/<android ndk 目录> 例如:
NDK=/cygdrive/e/android-ndk-r5
export NDK
NDK这个名字是随便取的,为了方面以后使用方便,选个简短的名字,然后保存

3、打开cygwin,输入cd $NDK,如果输出上面配置的/cygdrive/e/android-ndk-r5信息,则表明环境变量设置成功了。


注:作者到这里都是正确的 我跟着也能达到效果 但是到后面会出现问题 因为少了一步,我这里会有这样的情况 我们先继续往下看

5、用NDK来编译程序 
1、  现在我们用安装好的NDK来编译一个简单的程序吧,我们选择ndk自带的例子hello-jni,我的位于E:\android-ndk-r7\samples\hello-jni(根据你具体的安装位置而定),

2、 运行cygwin,输入命令cd /cygdrive/e/android-ndk-r7/samples/hello-jni,进入到E:\android-ndk-r7\samples\hello-jni目录。

3、 输入$NDK/ndk-build,执行成功后,它会自动生成一个libs目录,把编译生成的.so文件放在里面。($NDK是调用我们之前配置好的环境变量,ndk-build是调用ndk的编译程序)

4、  此时去hello-jni的libs目录下看有没有生成的.so文件,如果有,你的ndk就运行正常啦!

特别说明:

cocos2d-2.0.3:运行create-android-project.bat,然后用cygwin编译后,cocos2dx-2.0创建的helloworld不生成org.cocos2dx.lib,估计新版本又有改动(解决办法:cocos2d-2.0-x-2.0.4\cocos2dx\platform\android\java\src去copy)

cocos2d-2.0.2:运行ok,产生了lib包,但是没有自带win32的HelloWorld,由于之初不会创建win32的HelloWorld

cocos2d-2.0.1:利用create-android-project.bat,然后用cygwin编译后,导入eclipse中ok,win32创建的HelloWorld也ok,推荐大家使用2.0.1的这个版本,会减少很多麻烦。

注:这里cocos2d-x2.0.4出来了  我用的就是2.0.4 没啥问题,唯一的问题就是不能跑myeclipse模拟器 ,一运行就crash ,我之前不知道,傻傻的找不到原因,其实也不知道是不是如我所想,搞不好是没配置好也不一定,因为有时候没配好 跑真机也会crash ,根本连程序界面都没看到就崩溃了

6、下载cocos2d-x-2.0.1解压 (我下载的是2.0.4 当时 最新版)


我先说第一种:创建android版的cocos2dx的HelloWorld

1、用代码阅读工具打开create-android-project.bat(千万不用将它设置成默认程序打开,不然你就打不开了,倒是后就需要修改去注册表中修改,默认启动方式了。我是用UtralEdit打开的,用它打开的时候,千万不要转换其格式了噢)

2、设置环境变量路径:

set _CYGBIN=C:\cygwin\bin(这是我的路径,请设置成自己对应的安装路径)

set _ANDROIDTOOLS=C:\Users\Potter\Documents\work\Android\android-sdk-windows\tools(同理)

set _NDKROOT=C:\Users\Potter\Documents\work\Android\android-ndk-r8(同理)

记得保存,设置好这3个环境变量就ok了.

3、重新打开create-android-project.bat,(注意:如果是win7,请以管理员的身份运行,否则又会出现问题)下图所示:

输入包名,然后再输入工程名,

输入android版本id:注意的选2.2以上的版本才支持GLES2.0,不然导入eclipse会提示不支持GLES2.0的,那就是没有选2.2以上的原因,不过此时自己改成2.2的包就可以了

4、用cygwin编译我们产生的工程

如下图所示:


然后回车 显示如下结果



注:我这里因为是用的是cocos2dx里面的sample工程 用的TestCpp做例子 出现的结果就不一样了 这就是前面说的配置NDK环境那里少了一步,可能是我机器的原因,我这里会出现这样的情况

Are you sure your NDK_MODULE_PATH variable is properly defined ?

会在控制台有这个提示,我之前的解决办法就是 在windows的高级 环境变量里面 把这个NDK_MODULE_PATH 环境变量添加进去

NDK_MODULE_PATH

C:\Users\ccboby\cocos2d-2.0-x-2.0.4\cocos2d-2.0-x-2.0.4;C:\Users\ccboby\cocos2d-2.0-x-2.0.4\cocos2d-2.0-x-2.0.4\cocos2dx\platform\third_party\android\prebuilt


注意这里是分号隔开 不是冒号。路径因人而异

ok 添加了这个以后 就能build了,但是我刚刚想吧这个情况截图,又把这个环境变量删掉了 但是还是能照样build 不会出现 那个XXX提示,搞不懂,既然好了 就不管啦,有这个错误的注意一下。

再补充一点,我之前想在像这样添加环境变量

“2、  打开bash_profile文件,添加NDK=/cygdrive/<你的盘符>/<android ndk 目录> 例如:
NDK=/cygdrive/e/android-ndk-r5
export NDK”

NDK_MODULE_PATH=/cygdrive/C/Users/ccboby/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4:/cygdrive/C/Users/ccboby/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/cocos2dx/platform/third_party/android/prebuilt

export NDK_MODULE_PATH

但是没有用,我又看别人的文章 说是在XX\TestCpp\proj.android\jni下面的Android.mk文件里面将如下

$(call import-add-path, C:\Users\ccboby\cocos2d-2.0-x-2.0.4\cocos2d-2.0-x-2.0.4)\

/*这里有人说是 $(call import-add-path, C:\Users\ccboby\cocos2d-2.0-x-2.0.4\cocos2d-2.0-x-2.0.4\cocos2dxt)\  试过了 也不顶用 */

$(call import-add-path, C:\Users\ccboby\cocos2d-2.0-x-2.0.4\cocos2d-2.0-x-2.0.4\cocos2dx\platform\third_party\android\prebuilt)\

添加到$(call XXX)的前面,也不顶用 Android.mk有什么用呢??具体不知道 一致的时候要把用到的.cpp文件都要添加进去才行 具体网上查

弄了许久,实在是搞不定 能力有限所以放弃了~

但是有人说可以再eclipse里面添加环境变量

参考文章:http://helpbs.iteye.com/blog/1496041 原来的文章我找不到了 里面有关于在eclipse里面添加NDK_MODULE_PATH环境变量,找不到了我就自己来吧,过程都一样的

1.首先

 右键点击项目-->properties-->buliders 如图


点击 new 选择Program


点击OK 然后按照下面的配置 先是main


然后配Refresh


然后配environment 


再配置 build options


然后完成 保存 import  再顶上去~~~~~


再clean项目 就可以了 这个环境变量就好了

ok讲了很多题外的 现在回归正题 我喜欢用cygwin 简单不用每次都配置。不过好像builder 配置一次就能多次多项目导入 哈哈 我不懂~。

成功后会出现这个


哈哈 但是我这里是不行的 项目里面有错误 是不能运行的 必须要修改

上次说到成功编译了.so文件

在./build_navtion.sh命令执行成功后 会出现这个界面


我这是第二次编译的 所以界面会这个样子 之前有截图的但是没保存 我要吐槽一下csdn 不上传插入的图片你得帮我保存吧。。现在所有的图片我都要重新弄一次 重新截图,但是很多得截图了 步骤过了~

我用HellLua做例子



然后该打开eclipse 导入项目了


不用import 因为那样的话无法生成proect.properties文件 会有错误提示

我们用new  


好了 导入项目以后

我们的工程结构就是这个样子了


这里做一下说明:

1.src上面是一把叉 缺少java包 这个我们要导入进来


把这个文件夹复制到项目的src目录下面


然后按shift+ctrl+o 自动添加需要的库(应该是这么说的吧)

然后我们发现lib上面有X


我们把lib改名 选中lib 按f2 


会有弹窗 不管 点击继续 ok 没问题了


接下来说明一下  


这个下面是有文件的,这就是用cygwin build的好处 至少我是这么认为的 哈哈

如果是eclipse build的话 这个文件夹里面应该是空的。至于怎么办,简单 直接把自己的资源文件复制进去就可以了,因为是sample工程 不是自己的项目 所以。。。。。。

去Resources文件夹下面把文件复制过来吧 有没有问题我就不知道了。。。因为里面的东西太多了。。

好  做了这么多  该run了 右键项目 run as->Android ApplXXX。

为什么我已run就能出模拟器?

因为我这个教程是后来补写的,至于怎么配模拟器啊 什么的这个自己网上找,很简单,我就不回想了。


现在 它崩溃了~~~!

那我们用真机调试,不知道在哪里看的 不能用模拟器跑 必须用真机,那我就用真机吧

首先拿安卓手机 。2.3以上吧,不要问为什么,我也不知道 直觉就是2.2一下的不行吧 据说是opengl的原因

设置->应用程序->开发->usb调试。

好,然后电脑安装该手机对应的驱动。然后run/debug

跑起来了,但是在真机上 我就不截图了。据说eclipse很智能有真机就会让你选真机。。

好吧 我承认我偷懒了。。。写得不全 但是将就一下 真机调试真的不难 只要前面做好了


教程到此结束~~~~ csdn的图片上传真实让人无语了。。。。。。。浪费感情 非得上传才能插入。。。。

菜鸟文章 高手勿喷 有问题请百度,因为我也不懂 哈哈

原创粉丝点击