不知不觉中,被cocos最细版本3.4折磨快3天了,从最初的环境搭建,到最后的apk打包,然后在ADT环境下调试,无数的小问题不时地抨击着我脆弱的小心肝儿,N多个谜团左右着前进的步伐不能一步一步向前行进,百度、谷歌、中文、英文…..在众说纷纭中寻觅着那个我百撕不得骑姐的答案,走过了大大小小N多个论坛和博客,沮丧过,也兴奋过,对于我这个不会轻易放弃的人来说,这点儿折磨只能算是练练手,早已习以为常,好了,题外话就说这么多吧~~

一.环境搭建
1.所需材料
vs2012 http://www.xiazaiba.com/html/7678.html
cocos2d-x-3.4 http://www.cocos2d-x.org/download
python-2.7 http://www.pc6.com/softview/SoftView_67665.html
apache-ant-1.8.2-bin.tar.zip http://dxdown3.onlinedown.net/down/apache-ant-1.8.2-bin.tar.zip

jdk-7windows-x64.zip http://big1.cr173.com/jdk-7windows-x64.zip
adt-bundle-windows-x86_64-20121030 http://www.33lc.com/soft/28594.html
android-ndk64-r10b-windows-x86_64 http://developer.android.com/tools/sdk/ndk/index.html
cygwin2.738 native(本地版) 实测可用  
http://www.cr173.com/soft/60977.html

如果遇到上不去谷歌,到这里下载hosts 覆盖之即可,请叫我雷锋~~~
http://pan.baidu.com/s/1sjuj8qL

第一步:开始安装VS2012
不多说了,没难度

第二步:下载cocos2d-x-3.4源码
下载地址上面已经给出

配置环境变量
COCOS_CONTROL = E:\cocos2d-x-3.4\tools\cocos2d-console\bin
然后添加到path里 %COCOS_CONTROL %
COCOS_CONTROL 这个可以随便起名,没什么影响

验证是否成功

谜团1:这个环境变量有什么用呢?
->后续当我们使用命令cocos new helloworld -p com.gzy -l cpp -d e:/mygame 的时候
根据这个环境变量找到对应的py脚本创建工程。

第三步:安装python
在创建cocos2d程序时用到python指令,在cocos2d-x-2.2.1/tools/project-creator/下有个脚本:create_project.py
ps:不要下载最新python
python3.3版本是不兼容cocos2dx2.2.1创建项目的
在系统变量path后面添加内容:
python = D:\Python27

验证是否配置成功

谜团2:这个环境变量有什么用呢?
要执行cocos.py文件当然要安装pyton,废话o(>_<)o ~~

第四步:下载apache-ant-1.8.2
配置环境变量
同上

第五步:安装java SDK
注意sdk版本要和系统对应,64位会安装到Program Files里面,32位的安装到Program Files (x86)里面
别的没啥好说的了。

第六步:安装最新的 Android ADT bundle
Android ADT bundle
ADT:Android Development Tools 安卓开发工具,ecplise 里的插件,安卓开发工具插件
Android ADT bundle里已经包含有了adt和与其兼容的ecplise软件
android sdk可以理解为是一个android开发的工具,实际上它是作为eclipse的一个插件,有了它,就可以在eclipse里开发android程序了

下载路径开篇已经给出
解压完是一下这几个小编

eclipse就是对应的安卓开发环境
打开sdkmanager
下载对应的api

我的版本是4.3

打开eclipse文件夹

这幅图先记着,等会就知道干嘛的了

第七步:安装android NDK
说明:
NDK是一系列工具的集合。NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将.so和java应用一
起打包成apk。这些工具是对开发者的帮助巨大的。 NDK集成了交叉编译器,并提供了相应的mk文件隔离平台、cpu、API等
差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出.so。NDK可以自
动地将.so和Java应用一起打包,极大地减轻了开发人员的打包工作。NDK提供了一份稳定、功能有限的API头文件声明。Googl
e明确声明该API是稳定的,在后续所有版本中都稳定支持当前发布的API。从该版本的NDK中看出,这些API支持的功能非常有
限,包含有:C标准库(libc)、标准数学库(libm)、压缩库(libz)、Log库(liblog)

配置环境变量
ANDROID_SDK_ROOT=D:\android\sdk
NDK_ROOT=D:\android\android-ndk-r10b
注意:这个环境变量比较特殊,
谜团3:为何特殊????

第八步:安装cygwin
因为NDK编译代码时必要用到make和gcc,所以你必须先搭建一个linux景象, cygwin是一个在windows平台上运行的unix模仿景象,它对于进修unix/linux操纵景象,或者从unix到windows的应用法度移植,很是有效。经由过程它,你就可以在不安装linux的景象下应用NDK来编译C、C++代码了

重要:
说白了我们就是要用cygwin-build命令来构建C++代码,并连接成一个.so静态目标文件,然后再通过第六步安装的安卓开发工具将cocos发布好的android工程导入,构建出apk即可,
如果你现在不理解,后续我会详细图文并茂地给你讲解,快谢谢哥~!!

安装详解:
你得先跑到http://www.cygwin.com下载setup.exe
第一步:运行setup程序,第一步图略,直接点击Next进入下一步。
第二步:选择安装方式,第一次可以采用Direct Connection在线下载安装,如有现成的离线包,可以选择离线安装(Install from Local Directory)。

第三步:选择安装目录,比如C:\Cygwin,注意此目录是指Cygwin最终的安装目录,不是下载文件暂存目录。

第四步:设置本地包暂存路径
暂存目录默认是放到setup.exe的同级目录下,下载后名字类似ftp%3a%2f%2fcygwin.mirrors.pair.com%2f这样格式

第五步:设置网络连接方式

第六步:选择下载站点地址
起初尝试几个看哪个速度快就用哪个地址(如果感觉不快就点取消,再次来过)。http://mirrors.kernel.org,速度感触感染还挺快

第七步:等待加载安装项载入,选择安装项
我们编译NDK,在默认设置下,只需选择Devel(点击列表中Devel,将后面的Default改为Install,图中箭头所示),其它均为默认状态。

我是选择的全部install了

由于我是选择的本地安装所以不用去下载了,很快就搞定了
检验是否安装成功

分别查看一下这两个编译器的版本即可,如果出现上图所示,恭喜你,安装成功了

接下来我们要学习怎么配置变量并使之生效,由于这个是仿真linux环境下的工具,其使用的shell是bash
bash如何配置变量 这个应该不难,

接下来打开目录:D:\cygwin\etc下的profile文件,我用的是nodepad++,这个profile是系统级别的配置文件,还有一个在D:\cygwin\home里面的,这个是用户级别的,类似windows的环境变量设置
打开文件之后在最后面添加

NDK_ROOT=/cygdrive/d/android/android-ndk-r10b
ANDROID_SDK=/cygdrive/d/android/android-sdk-windows
COCOS2DX_ROOT=/cygdrive/e/cocos2d-x-3.4
export NDK_ROOT
export ANDROID_SDK
export COCOS2DX_ROOT

如何使之生效,并验证
首先进入profile目录

谜团4:配置这个要作甚,为什么要用NDK_ROOT这个名字

后面我后说

到现在为止,所有的配置工作都完了,开工

第九步:编译cocos2d-3.4项目
打开cmd->cocos new HelloWorld -l cpp -p com.gzy -d e:/myproject

出现如下说明项目创建成功

接下来用vs2012打开E:\MyProject\HelloWorld\proj.win32下的HelloWorld.sln->生成解决方案
等个把分钟运行就可以看到helloworld 了,我就不上图了。

第十步:发布apk
历经九九八十一难终于要见到佛祖了,心情很是激动,接下来一个最大的谜团
谜团5: 如何生成apk
其实发布apk的过程可以这么理解
cocos官方在我们新建的项目中会自动生成各个平台的版本项目,比如mac,android ,win 等,
正如我们要构建安卓版本的,那么就要用到这个工程E:\MyProject\HelloWorld\proj.android

转换的过程如下
.cpp–(1)—>.so–(2)—>.apk

第一个环节就是编译,第二环节是打包

第一种方式:cygwin命令行方式(只能编译)
给予上面的配置,我们选择了使用cygwin的ndk-build调用make,gcc进行编译,
具体操作:打开cygwin,进入E:\MyProject\HelloWorld\proj.android项目,输入ndk-build 即可
当然还有个要注意,你要编译那些.cpp呢???

都在这里E:\MyProject\HelloWorld\Classes,如果你工程新建的.cpp有没在这里的 都要考进来,还没完
还要修改一个文件android.mk,在这里—>E:\MyProject\HelloWorld\proj.android\jni
所有的.cpp都要加进去

第二种方式:使用安卓开发工具ADT(完成编译和打包)
这种方式是利用cocos自带的python脚本编译的

打开build_native.py 看看你会发现这些东西

现在明白谜团4的用意了把,要一一对应上才可以顺利编译通过
这个脚本是这个版本提供给我们的便利,但是当我看到最后一句话有点儿莫名的 忧伤
print “We will remove this script next version,you should use cocos console to build android project.\n”

看来下个版本就不能用这中方式进行编译了,我的神啊,真实神烦~~~

打包apk
使用ADT导入安卓项目
file->import->android->….进入E:\MyProject\HelloWorld\proj.android 确定
然后会提示你有地方报错

项目加载进来后会提示缺少cocos2dx包,我们去cocos2d-x-3.4/cocos2dx/pathform/android/java/scr/
把org文件拷到我们项目helloworld/proj.android/src/下

刷新编译执行 ,ok~~~
成功运行后会在bin/生成一个apk文件
如果需要把项目在真机上弄成竖屏,只需在AndroidManifest.xml中改一改, android:screenorientation=”landscape”(横屏),android:screenorientation=”portrait”(竖屏),它默认为横屏

常见错误解决办法
1.
运行程序时黑屏或者崩溃的现象
code =1 fault addr 0x0 这个错误一般是c++代码中存在nullptr了,要仔细检查并做空指针判断,
例如 你加载图片返回的sprite* p 如果图片名字写错了就回返回nullptr,这时候你不去做空指针判断就回
出现上述的问题。
当code != 1 并且错误地址变来变去 这个暂时还不知道神马原因~~如果有大神知道解决办法可以留言给我、。

一口气写了这么多 ,有一种要挂了的赶脚~~~~

今天就到这里了,改日再会!!!!欢迎来喷。

cocos2dx-3.4环境搭建及apk发布调试之谜海归巢的更多相关文章

  1. 详解Html5页面实现下载文件(apk、txt等)的三种方式

    这篇文章主要介绍了详解Html5页面实现下载文件(apk、txt等)的三种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. html5 移动端视频video的android兼容(去除播放控件、全屏)

    这篇文章主要介绍了html5 移动端视频video的android兼容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  3. ios – Veracode,调试符号和XCode

    我正在尝试通过Veracode扫描iOS应用程序:一个应用程序安全平台.为了使它们扫描.IPA,.IPA需要包含调试符号.对于正在使用的Archive构建配置和项目/目标,我已指定:>生成调试符号:是>复制期间剥离调试符号:NO>死代码剥离:没有>默认隐藏的符号:NO>剥离链接产品:没有然而,在提交.IPA时,Veracode仍然给我以下错误:没有调试符号编译的主文件–1个文件我需要采取另一个步骤来创建调试符号,或许是存档吗?

  4. 从VS调试iOS时,程序’Mono’已从代码0(0x0)退出

    我有一个问题,当我尝试使用VS2013调试我的iOS应用程序时,我收到以下错误:Theprogram‘Mono’hasexitedwithcode0.我知道以下answer.清理解决方案确实解决了问题,但是下次调试时我需要再次执行…如果有人有长期解决方案,我们将非常感激.解决方法在发射期间它会崩溃吗?

  5. ios – 如何使用blender和PowerVR SDK为cocos3d创建一个简单的3d球体

    我是cocos3d的新手.我想创建一个简单的项目–旋转的3d球体.我用搅拌机设计了一个3d球体.所以我想要帮助创建collada文件和pod文件.使用blender和PowerVRSDK创建这个简单的3d对象时应该注意什么.谢谢解决方法如何在搅拌机中制作简单的球体,然后使用JeffLamarche的Blender-to-iOSscript将其导出?这甚至不需要Cocos或PowerVR,但这是一个良好的开端.由于您可以在iOS中轻松地将Cocos与非Cocos类集成,因此可能会有所帮助.你可以更进一步,利

  6. 如何调试ios共享扩展?

    如何从扩展中打印Xcode的lldb调试器中的日志?解决方法简单回答:>不打印日志消息,但是您可以在断点处停止,然后使用lldb打印所有内容.>运行你的应用程序>在应用程序运行时,转到Debug–>通过PID或名称附加到进程>写下您的扩展名的名称或包ID,然后单击附加>然后以您在设备上执行此操作的任何方式运行扩展程序.>等待调试器在断点处停止扩展.

  7. ios – 存档期间不存在Xcode环境变量

    我有一个具有TestFlight构建方案的iOS应用程序.在此方案中,我在“运行”选项卡中设置了一个称为TESTFLIGHT的环境变量,值为1.此外,在构建方案的“配置文件”选项卡中,它已选中“使用RUn操作的参数和变量”选项,并在列表中看到相应的EV.当从Xcode运行应用程序时,这可以正常工作,但是当我在存储设备上运行应用程序时,环境变量TESTFLIGHT不存在.我的问题是有一个我在这里缺少的选项/方案选项卡?

  8. .dylib在Debug中链接,在XCode中找不到适用于iPhone的版本

    所以我已经将libxml2.2.dylib库包含在我的iPhoneXCode项目中,以创建一些Xml和XPath解析实用程序.当我编译并运行在模拟器和设备的调试模式时,我没有问题,但是,当我切换到发布模式我得到…

  9. 调试 – iOS设备上的remote console.log()

    我正在开发涉及touchEvent的网络应用程序.如果我可以在我的Mac上远程查看控制台,那么调试它会更容易一些.我可以在iOS设备上使我的MobileSafari将控制台日志存储在系统中的某个位置.我已经越狱了我的iPad.谢谢!

  10. 使用XCode进行调试时如何生成SIGINT?

    我的控制台应用程序捕获SIGINT,以便它可以正常退出.但是,在调试程序时按XCode中的CTRLC无效.我可以找到进程并使用终端窗口向我的进程发送SIGINT,但是我希望有一个更简单的解决方案,我可以在XCode中完成.解决方法调试器控制台的暂停按钮实际上会向您的应用发送SIGINT.如果您想让调试器将信号传递给您的应用程序,您可以执行以下操作:>按调试器的暂停按钮,等待调试控制台获得焦点>键入

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部