MyException - 我的异常网
当前位置:我的异常网» 操作系统 » cocos2d-x 2.2 android移栽(不用cygwin)

cocos2d-x 2.2 android移栽(不用cygwin)

www.MyException.Cn  网友分享于:2014-08-05  浏览:0次
cocos2d-x 2.2 android移植(不用cygwin)
      cocos2d-x的android环境搭建对于新手绝对称得上噩梦一般的存在。安装过程中吊诡的问题一个接着一个出现,坑爹的Eclipse错误提示的莫名其妙,对你丝毫没有任何帮助。网上的教程虽然侃侃而谈,但对100%出现的问题都避而不谈。这使得第一次安装android环境尤如星矢他们闯十二宫一样的痛苦,必须有坚韧不拔的毅力百折不挠的决心才能将这些问题一一解决。整个过程极其痛苦,没有星矢等人的意志还真拿不下来。所以要搞定这个问题的人先要问下自己,我是saiya吗?我能像他一样坚持到最后吗?下面把我安装的过程和遇到的问题和大家分享一下。

准备工作
1.不用说jdk要安装好,eclipse要用adt bundle,百度一搜很容易搜到。这样省掉了自己安装AVD和android sdk的麻烦,自己配麻烦死
2. 下好的adt bundle只带了android 4.4.2 sdk,也就是android 19,没有任何示例和文档,如果自己想下载别的版本的SDK就要在线下载了。但第一步连android更新列表你都fetch不下来,这就是第一个噩梦的出现,我曾在这里卡了两天两夜。玩android的人在线更新sdk是少不了的。但是国内的网络死活也连不上gl-ssl.google.com,据说被大陆墙了。这时网上各种奇葩文出现了,侃侃而谈如何解决这个问题,有的说改host的还给了几个错误的IP地址,有的说在AVD option里改把https强制http的等等。这些我都试了全都没用。我不敢说他们道听途说还是人云亦云。反正读者你记得那些所谓的牛人给的办法统统没用就行了别再浪费时间。正确的办法是设置代理

登录西刺免费代理IP网站: http://www.xici.net.co/  在国外高匿代理那一栏选一个时间靠前的,代理模式http或https的都行, 如下图所示

然后打开你的android sdk manager,点击 tools -> avd option,把代理那一栏填进去,一般来说试几个就能连上了。

注意:更新时千万别更新如下图两个,你更新了就等着挨折腾吧!Eclipse会各种报错各种奇葩问题接踵而来,绝对能搞死你,但你不更新啥事没有。

最下面Extras的android support library我也没更新,怕出问题,但是Intel x86 emulator acceleator我下载安装了,据说是一个新的模拟器能大大加快运行速度,我还没试。

还有一个离线安装的小技巧,假如你真的是在线安装android sdk很困难,可以试试离线安装。如果你在线更新成功了,你会发现在adt bundle的sdk的platforms目录下出现android-8,android-19等目录。其实这些android-XX目录是可以直接拷到另一个机子的,不需要再次下载,这样你只要做好备份,下次换了机子直接拷过去就行了,打开avd manger你会直接看到这些SDK已经装好了。如果你一次都没在线安装好,可以试试从网上找找离线安装包,看清梦版本改好名直接丢进platforms目录去。如android 4.4.3是android-19,其他的我就不知道了。但是笔者还是不建议这样做,除非是你自己以前在线更新好的拷走没事,从网上拷别人的离线包不是陈旧就是有其他问题,还是努力找找代理自己在线下载好些。

3.下载android DNK,我使用的是android-ndk-r8e,这个不用安装,直接解压就行了,以后待用。


Eclipse的配置:
1.配置好android 运行环境。打开Eclipse-->Window-->Preferences-->Android,配置好你本机Android sdk的安装路径,如下图sdk locations那个框

2.配置好android NDK运行环境。打开Eclipse-->Window-->Preferences-->Android-->NDK,配置好你本机NDK的安装路径;

3.在自己的Eclipse中导入cocos2d-x的android依赖工程,相当于vs里的libcocos2d那个库工程,我的做法是File->New->Other->Android->Android Project from Existing Code,导入cocos2d-x中和android相关的工程,我的路径是:D:\cocos2d-x-2.2.1\cocos2dx\platform\android\java,这样就可以使用这个工程作为所有cocos2dx android工程的依赖工程

4.导入你自己的工程,在Eclipse中,File->New->Other然后选择Andriod Project from Existing Code在Import Projects的Root Directory中将路径D:\cocos2d-x-2.2\cocos2d-x-2.2\projects\PompaDroid\proj.android目录下的工程导入,不要勾选copy project into workspace(默认是不勾选的),据说路径问题很麻烦。那个PompaDroid就是我在vs中建的工程。

PS:此时在导入的项目上右键->Properties->Android,右侧下方会看到如图,Library部分就是依赖的上一步中导入的工程:

5.把你自己工程(D:\cocos2d-x-2.2.1\projects\PompaDroid)中Resources中的全部文件copy到android工程目录下的assets目录中,这一步不用怀疑,之后会出现黑屏问题,但不是这一步造成的。

编译环境的配置:
上面我们导入了工程,但离真机和模拟器调试成功还有些距离。(瀑布汗...)因为我们是不用cygwin的,所以要设置好NDK自己带的编译环境。

1.在android工程右键->Properties->Builders->New->Program,  Name随便起

  在Main标签下的Location,选择Browse File Systerm...,选择到android NDK下面的ndk-build.cmd文件 。

  Working Directory,选择Browse Workspace...,选择本项目。

2.在Environment标签下,点击new,

Name:NDK_MODULE_PATH

Value:D:\cocos2d-x-2.2.1;D:\cocos2d-x-2.2.1\cocos2dx\platform\third_party\android/prebuilt(注意自己的实际目录)
这是很重要的一步,但这样就行了吗?错!如果你这样设置,那么之后的bash找不到的错误就由此而来,转义字符大家都知道吧?\t  \n  \c之类的在编程语言里都有特定含义,你这样设会让NDK认不出NDK_MODULE_PATH,所以要改成D:/cocos2d-x-2.2.1;D:/cocos2d-x-2.2.1/cocos2dx/platform/third_party/android\prebuilt

选择Ok确认,返回Builders界面,去掉CDT Builder前面的勾选,并将你自己刚刚创建的Builder移动到最上面,全部配置好之后OK确认。
再点击properties-->c++ build,如下设定你的build command:

至此你才抛弃cygwin改成用NDK的编译环境,不会出现恼人的 bash not found错误了。
PS: 如果你照此设定还是出现"bash not found",你就暴力点,在Eclipse里右击那个错误,删除即可解决!
3. 设定要编译的cpp文件
查看proj.android项目下,jni目录下面的Android.mk文件,其中LOCAL_SRC_FILES :后面需要填上你的cocos2d-x项目中所有的.cpp文件, 但是如果cpp文件有成百个,那我们是不是要一个个复制呢?那累都得把人累死,网上有人给出了好的办法,把.mk开头部分如下改写:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := hellocpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

FILE_LIST := hellocpp/main.cpp
FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
注:FILE_LIST:=hellocpp/main.cpp  你到jni目录下看一看,确实有个hellocpp文件夹,里面有个main.cpp,所以这里千万不要把hellocppn改成你项目名字。上面我贴出来的基本原样复制就可以了,什么都不用再改。这一段大意就是把classes目录下所有的cpp都加到文件列表里去,下面的都一样,都不需要改了。
现在基本工作应该做完了,用AVD模拟器试一试,发现黑屏,什么都没有
我又傻眼了,是不是刚才资源路径设错了找不到资源呢?可是发现真机调试没有问题能进到游戏,就是模拟器不行。老用真机也不是办法,我的I9300数据线接口都磨的快不行了,这时点开eclipse的Logcat,发现报错:
java.lang.IllegalArgumentException: No configs match configSpec
这又是一个高深莫测的错误呀,怎么办呢?网上说AVD 模拟器版本太低不支持opengl 2.0,要用Android sdk 4.0以上的才行,我就换成了那个Android 4.4.2,也就是Android 19(新建模拟器方法是在AVD manager里点new新建一个,选好Android sdk版本即可,非常简单,可参看下图),可是错误依旧,原来还要改两个地方
在AVD设置下方Emulation Options选项,勾选“Use Host GPU”,如下图:

再到android-ndk安装目录下的samples\hello-gl2\src\com\android\gl2jni目录下找到GL2JNIView.java,将其中大约102行的
setEGLConfigChooser( translucent ?
                             new ConfigChooser(8, 8, 8, 8, depth, stencil) :
                             new ConfigChooser(5, 6, 5, 0, depth, stencil) );
修改为:setEGLConfigChooser(5, 6, 5, 0, 0, 0); 
再到 Androidmainfest.xml文件下添加这一行 (eclipse里能看到)
<uses-feature android:glEsVersion="0x00020000" android:required="true" /> 
至此,黑屏问题才算解决,我们终于在模拟器上见到了我们朝思幕想的游戏画面(ctrl+F12可竖屏变横屏):

真是不容易呀!虽然还有屏幕适配问题,但总算看到自己在VS上敲了两个月的代码在真机和模拟器上跑了。我把我自己遇到的问题基本都给交待清楚了,希望此文能给大家以帮助,再见!






文章评论

程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
老程序员的下场
老程序员的下场
一个程序员的时间管理
一个程序员的时间管理
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
编程语言是女人
编程语言是女人
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
 程序员的样子
程序员的样子
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
我是如何打败拖延症的
我是如何打败拖延症的
如何成为一名黑客
如何成为一名黑客
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
Java程序员必看电影
Java程序员必看电影
我的丈夫是个程序员
我的丈夫是个程序员
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
代码女神横空出世
代码女神横空出世
每天工作4小时的程序员
每天工作4小时的程序员
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
漫画:程序员的工作
漫画:程序员的工作
程序员的鄙视链
程序员的鄙视链
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
10个调试和排错的小建议
10个调试和排错的小建议
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员都该阅读的书
程序员都该阅读的书
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
旅行,写作,编程
旅行,写作,编程
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
那些争议最大的编程观点
那些争议最大的编程观点
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
中美印日四国程序员比较
中美印日四国程序员比较
鲜为人知的编程真相
鲜为人知的编程真相
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有