您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x Android环境下用NDK7以上版本编译(免Cygwin)

2013-06-14 11:43 176 查看
转自:/article/7965026.html



2012-12-26本文更新,更新内容请移步到文章的最后

版本:

WindowsXP3

JDK1.6

Eclipse3.7.1(需要C++插件CDT)

ADT16.0.1

NDK7(或是NDKR7B)

cocos2d-1.0.1-x-0.11.0.zip

注意:本教程没有用到minigw+msys,也没有用到cygwin,如果用到的是NDKR6B或是以前的版本,则需要安装cygwin(或是minigw+msys)

前提条件:假设已经成功安装了JDK+Eclipse+CDT+ADT

下面讲解如何在Eclipse中配置NDK,运行cocos2d-x自带的test工程

目录:

Step1.下载android-ndk-r7-windows.zip并解压

Step2.下载cocos2d-x,并解压

Step3.Eclipse导入cocos2d-xtest项目

Step4.Eclipse中配置NDK编译环境

Step5.编译Android项目

安装步骤:

Step1.下载android-ndk-r7-windows.zip并解压

下载地址:

http://dl.google.com/android/ndk/android-ndk-r7-windows.zip

下载完成后,将其解压到电脑的任何目录中,例如:



Step2.下载cocos2d-x,并解压

下载地址:

http://cocos2d-x.googlecode.com/files/cocos2d-1.0.1-x-0.11.0.Zip

下载完成后,将其解压到电脑的任何目录中,例如:


Step3.Eclipse导入cocos2d-xtest项目

打开Eclipse

依次点击File–New–Project…AndroidProject

选择“CreateProjectfromexistingSource”

如下图所示,找到test.android目录



点击Next






选择Android2.1版本,这里直接点击Next,或是Finish就创建完成了






Step4.Eclipse中配置NDK编译环境

首先选择TestDemos项目,然后选择菜单中的Project–Properties



选择Bilders–New--Program



打开后,进行如下的设置:

Location:一定要选择ndk-build.cmd命令

WorkingDirectory:选择TestDemo



注意:这里如果是0.13之后的版本,请不要用ndk-build.cmd文件,请用我写的build_android_ndk_tests.bat(可以到我下面指定的地点下载)

下面选择Refresh,配置如下:



越过Envirment,直接点击BuildOptions,配置如下图所示:



设置完成后,点击OK

Eclipse会自动的进行编译,耐心等待一会,下面是Eclipse开始自动进行编译的过程

(注意编译过程中有个小问题)



编译过程中的问题:



解决方法:

将android-ndk-r7\sources\cxx-stl\gnu-libstdc++\libs\armeabi\libgnustl_static.a文件手动的copy到cocos2d-1.0.1-x-0.11.0\tests\test.android\obj\local\armeabi目录下



以上问题其实是GoogleNDKR7版本的bug,会在下一版本中更改(NDKR7B版本已经更改了这个bug,所以在NDKR7B上的话就不需要这一步了)

http://code.google.com/p/android/issues/detail?id=22268



copy过去后执行下Project–-clean动作,系统又会自动的进行编译了,等待一点时间后,库文件就会编译完成



至此,cocos2d-x库文件就编译完成了

看到网友的反馈,说是找不到assets资源或是黑屏现象

原因是:android下的assets目录没有任何的资源文件,所以需要我们手动的将cocos2d-1.0.1-x-0.11.0\tests\Res下的资源复制到cocos2d-1.0.1-x-0.11.0\tests\test.android\assets目录中

复制完成后,还需要删除Images\test_image_rgba4444.pvr.gz文件

Step5.编译Android项目

连接Android手机

依次点击Runas…AndroidApplication

下面是我的小米手机的运行截图





说明:本配置过程没有用到Cygwin或是minigw+ msys,完全用的是NDK自带的编译器

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2012-04-17更新:

cocos2d-x0.13版本有些变动,需要用我改写的ndk-build.cmd文件进行编译且方法有2种,直接用NKD,脱离Eclipse编译库,第2种还是用Eclipse辅助编译库

批处理下载地址(内有使用说明)



http://download.csdn.net/detail/maojudong/4233381

脱离繁重的Cygwin.NDK编译脱离Cygwin

1.请将文件放到cocos2d-1.0.1-x-0.13.0-beta目录下面

2.打开build_android_ndk_tests.bat文件修改setNDK_ROOT=D:\Work7\android-ndk-r7c到你的NDK实际路径即可

3.jni/Application.mk文件中加入APP_PLATFORM:=android-5

4.在jni目录中添加双击此批处理即可编译库文件

注1:0.13版本的cocosw2d-x搭配Eclipse也可以使用这个批处理,不要使用NDK自带的ndk-build.cmd

注2:此批处理可以脱离Eclipse,只用NDK自带的编译器即可,这里只用来编译库,如果要打包到APK还是需要Eclipse的,将刚刚编译的库导入即可

上面讲解了两种方法,自行选择

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

build_android_ndk.bat需要在开始-->运行CMD后运行的批处理

方法有2:

方法1:运行build_android_ndk.bat-Ctests/test.android/jni

方法2:

#cdtests/test.android/jni

#..\..\..\build_android_ndk.bat

效果是一样的

0.110.120.13版本都测试通过




脱离繁重的Cygwin(但是使用cocoss2d-x下的create-android-project.bat创建还是需要Cygwin,你可以尝试更改这个文件,让其不依赖Cygwin,我相信能够做到,只是时间问题,呵呵)



[b]-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[/b]

2012-10-21更新:



时代在进步,苹果发布了IOS6和iphone5,不知道苹果过些天的iPadmini怎么样,cocos2dx也更新到2.0.3,社区也在不断的进步,由于这一段时间来工作特别忙,cocos2dx的日志有就没有更新了,今天到社区下载了最新的2dx版本进行了简单的测试,还好基本都通过

XP32位系统+JDK1.6+

NDKR8b+2dx(0.11/0.12/.13/2.0/2.0.1/2.0.2/2.0.3)测试通过

NDKR8+2dx(0.11/0.12/.13/2.0/2.0.1/2.0.2/2.0.3)测试通过

全部编译通过,没有出现网友说的问题

说下注意点:

1.java编译器使用1.6.x(不建议用1.5.x/1.7.x)


2.有些安装了cygwin的,请暂时从PATH中屏蔽掉关于cygwin的内容

3.jni目录中要有Application.mk文件,且其中一定要有APP_PLATFORM:=android-5(2dx的2.0.x系列至少为android-5,1.x至少为android-4)Eclipse编译则不需要这一步,不过建议还是写上好些

4.2dx的0.10版本,ndk_build.cmd不能完成编译,需要安装cygwin才能编译(或者linux/macos编译),更早期的版本就没有测试了,相信做项目也很少有人用0.10以前的版本了

5.Eclipse编译环境中2.0.3/2.0.2/2.0.1需要先导入\cocos2dx\platform\android\java项目,然后用Eclipse编译出一个jar文件,最后将这个jar文件导入到tests项目中的libs就可完成编译(应一个网友的要求才这么说的,感谢他,是我的表述不清楚)



2.0.2/2.0.1中\cocos2dx\platform\android\java导入后,源代码不是src目录,却是src_common目录,所以可以修改.classpath文件,或是更改src_common到src是最简单的方法




6.不要用模拟器进行调试,模拟器的速度慢,导致加载时间长,最后黑屏,时间长了,就导致ANR(应用程序无响应),建议买个android平板或是手机吧(现在很便宜,299元钱的android平板到处都有卖(我的公司就有卖),1000元钱可以买到双核甚至4核的手机了)

如果非要用模拟器进行调试,请将AVD模拟器中添加GPUemulation属性,并将值设置为yes就可以了

经过2个小时的测试发现只有4.0.3和4.1.2两个版本的模拟器显示正常,且模拟器需要开启GPUemulation功能。

我的测试平台:
2dx2.0.3版本+MAC10.8.2+jdk1.6+eclipse3.7.2

模拟器开启GPU功能

2.2模拟器很卡,且异常退出,无法操作结论:不通过,不能用于调试2dx

2.3.1模拟器很卡,且异常退出,无法操作结论:不通过,不能用于调试2dx

2.3.3模拟器很卡,且异常退出,无法操作结论:不通过,不能用于调试2dx

3.X未测试
4.0模拟器不能开启,,且异常退出,无法操作结论:不通过,不能用于调试2dx

4.0.32dx可以运行,可以调试
4.1.22dx运行正常,可以调试

模拟器未开启GPU功能

2.2黑屏结论:不通过,不能用于调试2dx

2.3.1异常退出结论:不通过,不能用于调试2dx
2.3.3异常退出结论:不通过,不能用于调试2dx
3.X未测试
4.0异常退出结论:不通过,不能用于调试2dx

4.0.3异常退出结论:不通过,不能用于调试2dx
4.1.2异常退出结论:不通过,不能用于调试2dx

2dx中的论坛也有讨论这个

http://cocos2d-x.org/boards/6/topics/12563

http://www.cocos2d-x.org/boards/6/topics/12563?r=19274#message-19274



http://stackoverflow.com/questions/13702538/cocos2d-x-v-2-0-4-fatal-exception-glthread-when-run-on-android-emulator



这位兄弟的文章也不错
http://www.raywenderlich.com/12065/how-to-create-a-simple-android-game
原因是


Android4.0.3r2以上的版本才增加GPU支持和CPU加速

Android4.2模拟器要添加一行代码

[b]Cocos2dxActivity.java[/b]

将代码
gLSurfaceView.setEGLConfigChooser(8,8,8,8,16,0);[/code]
添加到
gLSurfaceView.setCocos2dxRenderer(newCocos2dxRenderer());
的前面即可


祝你好运!

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2012-12-26更新:

世界末日没有到来,生活还是要继续,勤奋的2dx社区和2dx开发者发布了新的版本,连google也发布了NDKR8C/NDKR8D(R8D支持gcc4.7了,高兴中...),之前我一直认为需要用一个批处理,其实适当的编写配置文件,可以抛开我的bat批处理,下面简单的介绍一下

Eclipse+NDK的编译方法

方法1:在Application.mk下加入如下代码(根据实际路径进行修改)

路径中不能有空格,[b]根据自己的实际路径进行编写

NDK_MODULE_PATH:=D:\work7\cocos2d-2.1beta3-x-2.1.0;\[/b]

D:\work7\cocos2d-2.1beta3-x-2.1.0/cocos2dx/platform/third_party/android/prebuilt\

注意[b]NDK_MODULE_PATH路径分割符号是分号“;”,Linux或者OSX系统请更改为冒号“:”[/b]

然后Eclipse中导入NDK路径中的ndk-build.cmd文件,具体请参看文章的截图

方法2:在Eclipse中

EditConfiguration中的参数Arguments:中加入参数
根据自己的实际路径进行编写

NDK_MODULE_PATH:=D:\work7\cocos2d-2.1beta3-x-2.1.0;D:\work7\cocos2d-2.1beta3-x-2.1.0/cocos2dx/platform/third_party/android/prebuilt-j8


注意NDK_MODULE_PATH路径分割符号是分号“;”,Linux或者OSX系统请更改为冒号
“:”


[b]NDK_MODULE_PATH:=或者用[b]NDK_MODULE_PATH
=即等号前面的冒号":"可有可无
[/b]

[/b]

其中-j8表示开启的编译线程数量,请根据自己的CPU核心数进行更改,如我电脑是的8核心CPU所以是-j8

然后导入NDK路径中的ndk-build.cmd文件,
具体请参看文章的截图


下面的方法3和方法4就是我的老式方法,读者可以优先选用上面的方法1和方法2
方法3:
Eclipse中直接导入一个自己写的批处理文件
build_android_ndk_tests2.1.0.bat这里不指定编译的目录

方法4:
先用build_android_ndk_tests2.1.0.bat编译出来一个jni库文件,然后在Eclipse中
编译带有libs目录库文件就可以了(图片等资源还是需要自己copy到指定的目录),编译出一个apk文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐