cocos2d-x Win32 Android 环境配置手册

COCOS2D-X配置手册(Win32、Android)编制:刘勤熙李育完成日期:2012-1-19目录1. 引言 (3)2. cocos2d-x Win32环境配置 (3)2.1 win32开发环境配置 (3)2.1.1 Visual Studio 2008 (3)2.1.2 cocos2d-x (3)2.1.3 (可选)Visual Assist X (3)2.1.4 (可选)doxygen (4)2.2 Win32 可执行文件生成过程 (5)2.3 常见问题总汇 (7)3 cocos2d-x Android 环境配置 (8)3.1 android开发环境配置 (8)3.1.1 Eclipse 3.7.1 (8)3.1.2 Eclipse ADT插件 (8)3.1.3 Eclipse CDT插件 (10)3.1.4 AndroidSDK (12)3.1.5 AndroidNDK (13)3.1.6 Cygwin (13)3.2 Android可执行文件生成过程 (15)3.2.1 前期准备 (15)3.2.2 生成Android空工程 (15)3.2.3 交叉编译so文件 (15)3.2.4 生成android系统可用的apk文件 (16)3.3 常见问题汇总 (18)4其它 (18)1.引言略……一切需要的软件及插件版本号以笔者使用为准,其它版本号的软件及插件不保证有效。

文件下载地址在2012-1-19确认有效,不保证因各种原因导致下载地址失效。

开发平台操作系统为win32(WindowsXP、WindowsVista、Windows7)2.cocos2d-x Win32环境配置2.1 win32开发环境配置2.1.1 Visual Studio 2008安装VisualStudio2008,默认安装即可,如果是自定义安装,VisualC++组件应选中。

2.1.2 cocos2d-x1. 下载cocos2d-x引擎最新版官方下载地址为:/p/cocos2d-x/downloads/list(当前使用版本为cocos2d-1.0.1-x-0.10.0.zip)2.将cocos2d-1.0.1-x-0.10.0.zip解压缩至硬盘任意目录(建议D:\Work7\cocos2d-1.0.1-x-0.10.0\, 因为现在wophone的开发环境必须安装至此, 以下以此为例)3. 如果想查看引擎源代码,可以在.\cocos2dx\proj.win32目录下找到代码配置文件。

2.1.3 (可选)Visual Assist X用来提高VisualStudio2008的工作效率, 可以安装此工具。

安装支持VS2008版本的任意一版,无需配置。

本软件是收费软件,需要注册。

技巧:如果不想让V AX对注释中的拼写进行校正(即去掉单词下面的波浪线提示),可以选择Visual Assist X Option,进行如下配置:2.1.4 (可选)doxygen安装工具 doxygen 1.7.6.1 Win32版本(本例用, 本工具为开源软件)运行 doxygen, 选择 file->open找到 "D:\Work7\cocos2d-1.0.1-x-0.10.0\doxygen\" 目录下的doxygen.cocos2d-x文件, 并打开(此文件为cocos2d-x代码的 doxygen 配置文档)然后选择 run 选项卡, 点击 rundoxygen 按钮开始生成.生成完成后, 在 "D:\Work7\cocos2d-1.0.1-x-0.10.0\doxygen\" 目录下, 可以看到帮助文件夹通过修改doxygen的一些设置, 可以很方便的生成各种标准的帮助文档.2.2 Win32 可执行文件生成过程1. 运行cocos2d-x 解压目录根目录下面的build-win32.bat(..\..\build-win32.bat), 生成debug库文件, 执行成功后, 库文件保存在.\Debug.win32 下.2. 运行..\..\install-templates-msvc.bat, 将项目模板加入VS2008模板库。

3. 将.\Debug.win32目录下的所有dll文件拷贝至Windows\system32\4. 打开VS2008 IDE, 选择VisualC++工程. 新建一个项目, 可以看到新加入的cocos2d模板选择第一项, cocos2d-win32 applivation, 为项目任意命名(因为这一版无论怎样命名, 生成的工程文件都是helloword), 然后在向导栏选择默认值, 直接点finish.进入项目设计界面.5. 依次选择工具->选项->项目和解决方案->VC++目录在包含文件栏, 加入下列项目D:\Work7\cocos2d-1.0.1-x-0.10.0\Box2DD:\Work7\cocos2d-1.0.1-x-0.10.0\CocosDenshion\includeD:\Work7\cocos2d-1.0.1-x-0.10.0\cocos2dx\platform\third_party\win32\OGLES D:\Work7\cocos2d-1.0.1-x-0.10.0\cocos2dx\platform\win32D:\Work7\cocos2d-1.0.1-x-0.10.0\cocos2dx\platformD:\Work7\cocos2d-1.0.1-x-0.10.0\cocos2dx\includeD:\Work7\cocos2d-1.0.1-x-0.10.0\cocos2dxD:\Work7\cocos2d-1.0.1-x-0.10.0D:\Work7\cocos2d-1.0.1-x-0.10.0\chipmunk\include\chipmunkD:\Work7\cocos2d-1.0.1-x-0.10.0\cocos2dx\platform\third_party\win32(上面红色部分第一个是重力引擎, 第二个应该是个网络连接的东西)在库文件栏, 加入D:\Work7\cocos2d-1.0.1-x-0.10.0\Debug.win32(引用的是该目录下的所有Lib文件)(发布时用release目录下的!!)6. 点击VS9 IDE的启动调试按钮, 正常情况可以编译通过, 并显示 helloworld页面看到这个页面, 表示win32环境配置成功.2.3 常见问题总汇1. 错误:"error PRJ0019: 某个工具从以下位置返回了错误代码"(及类似错误)"引用了一个%$#$#@.."处理:include 设置有误.dll没有放在正确位置2. 错误:"LNK1000: Internal error during IncrBuildImage""....上一个增量链接没有生成它;正在执行完全链接..."处理:这是微软的一个漏洞, 下载KB948127补丁, 安装即可.如果不能正常安装, 也可以把VS9中的增量编译关掉:项目名处点右键, 依次选择->属性->配置属性->链接器->常规->启用增量链接(否)以后再遇上此类问题, 可以尝试再次编译或者清理后重新生成.3. 错误:"....error LNK2019: 无法解析的外部符号...."处理:lib没有添加依赖工程点右键->属性->配置属性->链接器->输入附加依赖项填入以下lib文件libcocos2d.lib libgles_cm.lib libBox2d.lib libchipmunk.lib libcurl_imp.lib libCocosDenshion.liblibjpeg.lib libpng.lib liblua.lib libxml2.lib libEGL.lib libzlib.lib libzlib.lib libiconv.libpthreadVCE2.lib(根据实际使用情况填写)3cocos2d-x Android 环境配置3.1 android开发环境配置Android开发需要用到JDK,做程序的都知道……3.1.1 Eclipse 3.7.1下载地址:/downloads/packages/eclipse-classic-371/indigosr1选择对应的连接进行下载(32位操作系统或64位操作系统)eclipse为全绿色开发工具,直接解压缩后即可使用。

3.1.2 Eclipse ADT插件该插件是Eclipse平台下用来开发Android 应用程序的插件。

打开eclipse3.7.1选择Help-> Software Updates,在Work with栏填入https:///android/eclipse/等待eclipse 搜索完成后,会在主视窗中列出ADT插件下载项目,全部选择,点击Next按钮。

再次点选Next按钮后出现软件许可窗口,需要勾选同意,然后点击Finish按钮eclipse会开始下载ADT插件。

完成后重新启动可以在File->New->Project菜单下找到Android Project 证明ADT更新成功3.1.3 Eclipse CDT插件安装CDT插件的目的为令eclipse可以识别由C/C++开发的代码,对其进行编译。

CDT可以从/cdt/downloads.php下载到,对应eclipse3.7.1的CDT插件版本为CDT8.0.1。

下载完成后,启动eclipse,选择Help-> Software Updates,点击ADD按钮选择archive,选择下载好的CDT插件zip文件(cdt-master-8.0.1.zip)然后OK确认,勾选全部安装项目,点击next按钮eclipse会开始安装。

同样,在安装过程中有一次同意软件协议选项的勾选。

完成后eclipse会要求重启软件,OK即可。

重启eclipse后选择New->Projec会发现eclipse 已经支持C/C++项目。

3.1.4 AndroidSDKAndroid SDK可以从/sdk/index.html下载到,截止到2012-1-19最新版本为r16,请选择对应windows操作系统位数进行下载。

下载完成后解压到任意路径即可,解压后路径内不包含任何SDK,还需要运行SDK Manager.exe进行SDK包下载。

合集下载

windows 平台下安装android的cocos2D-x2.6.6

windows 平台下安装android的cocos2D-x2.6.6

软件安装是在32位Windows7操作系统下。

一、需要安装的软件1、cocos2d-x2.2.6官网上下载。

2、VS2012cocos2d-x需要的IDE编译环境/share/link?shareid=90168&uk=2769186556密钥:YKCW6-BPFPF-BT8C9-7DCTH-QXGWC3、Cygwin(这个也可选,最好是安装)对cocos2d-x本地C/C++代码的解释编译工具4、Python2.7.9cocos2d-x2.0版本以后用python脚本来创建工程,所以需要python环境./s/1kTDqn5t?qq-pf-to=pcqq.c2c5、ADT(eclipse+SDK+NDK(最好是高版本))SDK:是android交叉编译必须的IDE环境,内含EclipseNDK:android交叉编译时,对C/C++代码的解释编译工具6、JDK java环境7、文本编辑器Editplus软件官网上下载二、安装步骤(1)Android开发环境安装1、需要java环境WIN7操作系统有32位和64位,分别要下载对应的JDK8版本32位:jdk-8u5-windows-i586.exe64位:jdk-8u5-windows-x64.exe工具/原料WIN7jdk-8u5-windows-i586.exe方法/步骤1先到到官网下载JDK8:点击'jdk-8u5-windows-i586.exe准备安装一路向下,但是要记住安装的目录。

详细参考:/foundation/119375_2.htm 配置环境如下所示:JAVA_HOME、CLASSPATH、PATH1、例如我的JDK安装目录在D:\newtool\android如图所示:2、打开控制面板,点击‘高级系统设置---环境变量’3、编辑JAV A_HOME,如图所示:4、CLASSPATH(看自己的安装目录比照下面配置)以我的为例:.\;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar5、PATH在Path后面加上;D:\newtool\android\bin注意分号。

我的cocos2D-x3.10安装之路

我的cocos2D-x3.10安装之路

WIN10系统安装VS2015+Cocos-X3.10方法经过长时间的摸索与尝试Cocos2D-X3.10 终于可以在Windows10上运行了。

Cocos2D-X3.10的安装和配置个人觉得还是比较麻烦的,主要在于它不像其他软件一键安装就能使用,而在于安装Cocos的同时还要附加其他安装软件和组件,例如Python、JDK、NDK、ANT等,而这些组件又有不同的版本,版本的选择如果不正确就会导致Cocos 无法运行或无法打包生成APK。

目前,Cocos2D-x 支持Win32、Android、iOS 三个平台的开发,本文分别介绍在windows和Android环境下的开发环境搭建。

一个完整的开发环境包括开发、编译、链接、运行和调试等几部分,所以需要相应的开发环境,比如Win32 环境下的VS(Visual Studio,微软公司集成开发环境),Android 的开发环境Eclipse 和Android SDK 等,iOS 则需要Xcode环境,然后使用Cocos2D-x 的模板编译出相应环境的软件包。

一般情况下,使用Cocos2D-x 的开发流程是:首先在VS 环境中进行开发调试,之后分别在另外两个平台的开发环境中编译生成相应的软件包。

当然,如果是首先使用Cocos2DiPhone进行开发,并使用Cocos2D-x 进行Android 版本移植的,一般先在Xcode 环境中进行开发,然后使用Android 的开发环境进行开发。

下面我们就开始搭建跨平台的开发环境。

1.安装VS2015下载地址:链接:/s/1eS363Km 密码:eqdh搭建Windows 下的Cocos2D-x 开发环境,首先需要安装VS,它可以用来创建Windows 平台下的Windows 应用程序、网络应用以及网络服务等,支持的语言包括C++、Basic、C# 等。

双击安装文件,便可以开始安装,默认安装即可。

如果是自定义安装,应选中Visual C++ 组件。

cocos2d-x安装部署流程

cocos2d-x安装部署流程

1.VS2008安装(下载安装包,直接安装,可以再安装时只选取C++的模块) 2.cocos 2d-x安装部署 1)下载cocos2d -x最新代码(官方网站):cocos2d 0.99.4-x-0.7.1.z2)安装cocos2d -x项目模板·解压下载的源码包至任意路径(例:E:\coco s2d-0.99.4-x- ·进入目录:E:\coco s2d-0.99.4-x-0.7.1\t emplate \CCXApp Wiz.vs ·双击运行setup_v s2008.j s文件进行项目模板安 ·成功后有提示(Expres s版会提示失败但是可以在注册表添加一项解决)3)编译cocos2d -x HelloWo rld例子 ·进入目录:E:\coco s2d-0.99.4-x-0.7.1 ·用VS2008打开cocos2dwin32.s ln·将活动项目设置为HelloWo rld·Debug模式下进行编译 ·编译完毕后运行·Release 模式下进行编译·编译完毕后运行4)编译cocos2d -x libCoco sDenshi on(稍后利用项目模板创建项目时,如果选中了“Simple Audil Engine in Cocos Denshio ”的话就需要 ·将活动项目设置为libCoco sDenshi ·Debug模式下进行编译 ·Release 模式下进行编译5)编译cocos2d -xtests例子·将活动项目设置为tests ·Debug模式下进行编译 ·编译完毕后运行·Release 模式下进行编译·编译完毕后运行6)测试项目模·右击解决方案·添加新项·添加新项·选择Win32程序,输入项目名·出现模板向导·不使用附加的引擎·将新项目设为启动项·Debug和Release 模式分别编译运行3.单独创建cocos2d -x项目1)首先关闭所有的解决方案 2)新建解决方案(目标位置随意)3)完成向导(不选择任何附加引擎) 4)将文件夹“E:\coco s2d-0.99.4-x-0.7.1\c ocos2dx ”移至新建项目的目录中“D:\Proj ectDemo \cocos2 dx”5)将文件夹“E:\coco s2d-0.99.4-x-0.7.1\D ebug.wi n3”中的静态链接库:libcoco s2d.liblibEGL. liblibgles _cm.liblibxml2 .liblibzlib .lib移至“D:\Proj ectDemo \Projec tDemo”文件夹中6)编译项目可以正常结束7)将文件夹“E:\coco s2d-0.99.4-x-0.7.1\D ebug.wi n3”中的静态链接库:libcoco s2d.dlllibEGL. dlllibgles _cm.dlllibxml2 .dlllibzlib .dll移至“D:\Proj ectDemo \Debug. win32”文件夹中8)运行项目成9)注:由于该项目是在Debug 模式下编译运行的,所以使用的是Debug.w in32下的静/动态链接库,如果要在Release 模式下编译运行的话,请4.演示程序(根据《Learn iPhone and iPad Cocos2D Game Develop ment》这本书第三章的Essenti附:安装Visual+ Assist(网上下一个支持VS2008的,可以大大提高编。

Cocos2d-x 3.x版本windows与android开发环境搭建新手教程【从HelloWorld项目创建到打包生成apk】

Cocos2d-x 3.x版本windows与android开发环境搭建新手教程【从HelloWorld项目创建到打包生成apk】

声明:本文非原创,而是对以下的文章的一些整理:一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)Cocos2d-x 3.4环境搭建及apk发布调试之谜海归巢Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(详细教程)Cocos2dx.3x入门三部曲-Hello Game项目创建(二)cocos2d-x3.2 在Windows下打包Android平台APKPS:本人电脑是win7 64位,用的是cocos2d-x 3.6。

准备工具Cocos2d-x 3.x【我的版本是3.6】Windows环境:VS2012Python-2.7Android环境:apache-ant-1.8.2-bin.tar.zip 【ANT】Java JDK(版本:jdk-8u40-windows-x64)adt-bundle-windows-x86_64-20121030 【集成了Android SDK与Eclipse】Android-ndk64-r10b-windows-x86_64 【NDK】cygwin2.738 native(本地版)Windows环境搭建1.安装vs2012如果是msdn版是不用注册的,不过安装的时候记得先把系统日期先调到2012到2012年左右,否则会出现什么时间戳有问题,安装不成功。

如果不是msdn版的就自己上网找注册码。

2.Python安装与环境配置安装的时候使用默认安装方式即可,但是安装完毕后我们需要配置环境变量。

在我的电脑(右键)->属性->高级系统设置->高级选项卡->环境变量->系统变量中找到Path 变量,并在其值中增加指向Python的环境变量。

格式为 [Python安装路径]; 例如我的安装路径为F:\Python 2.7.8,即在path里添加“F:\Python 2.7.8;”【注意加上分号,分号是区分各个不同的路径的】。

quick-cocos2d-x 游戏打包环境搭建

quick-cocos2d-x 游戏打包环境搭建

/tutorial/show?id=1304设置 Quick-Cocos2d-x 在 Windows 下的编译环境Liao Yulei2014-08-12 11:27:396843 次阅读大多数时间,使用player 就可以进行游戏开发。

仅当我们需要在真机上调试,或者需要在player 中加入自己的C++ 代码时,我们才需要配置编译环境。

quick-x-player 使用说明配置编译环境的基本步骤:1.安装Visual Studio 20122.安装Java SDK3.安装最新的Android ADT bundle 和Android NDK4.下载quick-cocos2d-x 源代码5.设置环境变量6.编译quick-x-player proj.win32 工程7.编译LuaJavaBridge 示例,并在Android 真机上进行测试Step 1: 安装Visual Studio 2012从/visualstudio/下载Visual Studio 2012,并进行安装。

支持的版本:•Visual Studio 2012•Visual Studio Express 2012 for Windows Desktop注意:必须使用Windows Vista/7/8 操作系统。

Step 2: 安装Java SDK从/technetwork/java/javase/downloads/ 下载最新版的Java SDK (JDK, 推荐使用32bit 版本),并进行安装。

Step 3: 安装最新的Android ADT bundle 和Android NDK1.从/sdk/下载最新的ADT Bundle for Windows ( 推荐32bit 版本,或者和JDK 匹配的版本)。

2.解压缩adt-bundle-windows-x86-2013.zip3.将目录adt-bundle-windows-x86-2013 改名为android4.将目录android\sdk 改名为android\android-sdk-windows5.从/tools/sdk/ndk/index.html 下载Android NDK r6.解压缩android-ndk-r-windows-x86.zip7.将目录android-ndk-r 移动到android\android-ndk-r最终的目录结构:1 2 3 <PATH_TO>\android\android-ndk-r?<PATH_TO>\android\android-sdk-windows <PATH_TO>\android\eclipse8. 运行android\android-sdk-windows\tools\android.bat, 选中Android SDK 2.2(如果看不到Android SDK 2.2,请设置代理), 然后安装需要的包。

搭建Cocos2d-JS开发环境

搭建Cocos2d-JS开发环境

搭建Cocos2d-JS开发环境使⽤Cocos2d-JS引擎开发游戏。

基本的程序代码是JavaScript语⾔,因此,凡是能够开发JavaScript语⾔⼯具都适⽤于Cocos2d-JS游戏开发。

本书我们推荐WebStorm和Cocos Code IDE⼯具。

搭建WebStorm开发环境我们在以往使⽤了WebStorm开发⼯具。

它是⾮常优秀的JavaScript开发⼯具。

WebStorm⼯具能够开发和调试基于Cocos2d-JS引擎的JavaScript程序代码,可是測试和调试时候仅仅能执⾏在Web浏览器上。

WebStorm安装过程我们已经介绍了,可是要想开发基于Cocos2d-JS引擎的JavaScript程序,我们还须要安装Google Chrome浏览器和JetBrains IDE Support 插件,Google Chrome浏览器安装我们不再介绍,我们重点介绍JetBrains IDE Support插件,JetBrains IDE Support是安装在Google Chrome浏览器上的插件,它是为了配合WebStorm⼯具调试使⽤的。

安装JetBrains IDE Support插件成功安装后会在浏览器的地址栏后⾯出现“JB”图标。

详细使⽤怎样我们以下章节再介绍。

搭建Cocos Code IDE开发环境Cocos Code IDE是Cocos2d-x团队开发的,⽤于开发Cocos2d-JS和Cocos2d-x Lua绑定的游戏⼯具,它是基于Eclipse[ Eclipse 是⼀个开放源码的、基于Java 的可扩展开发平台。

就其本⾝⽽⾔。

它仅仅是⼀个框架和⼀组服务。

⽤于通过插件组件构建开发环境。

下载JDK下载完毕默认安装完毕之后。

JDK安装完毕后须要设置系统环境变量,主要是设置JAVA_HOME环境变量。

打开设置环境变量对话框,如图3-6所看到的。

我们能够在⽤户变量(上半部分。

仅仅影响当前⽤户)或系统变量(下半部分。

cocos2d-x教程

目录COCOS2d-X教程 (1)第一章环境 (1)(一)vs环境搭建 (1)(二):如何添加新项目 (2)第二章cocos2d-x的特性 (5)第三章制基本图元 (7)(一)、基本图形绘制 (7)第三部分:绘制图片 (11)第七章在cocos2d-x中使用RTTI (21)第八章动作 (22)第一部分:动作概述 (22)第三部分:CCCallFunc家族(回调函数包装器) (23)COCOS2d-X教程第一章环境(一)vs环境搭建1.安装visual studio2008据说vs2008是cocos2d-x运行最稳定的版本。

官方下载地址:/downloads/info.aspx?na=41&SrcFamilyId=83C3A1EC-ED72-4A79-896 1-25635DB0192B&SrcDisplayLang=zh-cn&u=http%3a%2f%%2fdownlo ad%2fe%2f7%2f7%2fe777851c-c1a4-4979-86b3-6886953b32e9%2fVS2008ProEdition90DayTrialC HSX1435983.isovisual assist x自备,vs序列号自备。

2.安装cocos2d-x引擎/wiki_extensions/forward_wiki_page/cocos2d-x?menu_id=1从网站上下载cocos2d-x,并解压到自定义的路径下3.测试helloworld我们使用windows版的helloworld,打开cocos2d-x引擎安装目录下的cocos2d-win32.vc2008.sln将helloworld设为启动项目| 生成->调试->启动新实例,如图所示:(二):如何添加新项目1 安装应用程序向导运行 install-templates-msvc.bat,cocos2d-x 应用程序向导就会自动安装到VS环境下2 建立新项目右键单击解决方案->添加->新项目->cocos2d-x-win32 application注意:目录层级关系,缺省情况下,应该设置在cocos2d-x引擎安装的目录下,否则在编译链接时可能会找不到文件然后,按照之前的步骤编译运行即可,运行效果同上一部分的图第二章cocos2d-x的特性由于cocos2d-x是cocos2d-iphone的c++移植版本。

Android(eclipse)+cocos2d-x安装及项目环境整合

安卓环境搭建孔令航编写QQ:1040974297【一开始】1,开发平台:Windows2,开发工具:VS2008或VS2010及以上版本3,Cocos2d-x SDK版本:cocos2d-1.0.1-x-0.11.0及以上版本,实测2.0.1版本可用此方法搭建。

环境搭建的顺序是这样1.JDK&JRE 安装JDK会顺带安装JRE的,这一步是为了可以编写和允许普通的JAVA程序2.Eclipse JAVA 的IDE,这一步是为了方便地开发JAVA程序3.CDT 是Eclipse的一个插件,这一步是为了可以引入C++4.ADT 是Eclipse的一个插件,这一步是为了管理安卓开发库5.ADK 上一步是工具,这一步就是开发库了,到了这一步你可以编写普通的安卓程序6.NDK 单有CDT还不行,它只能编辑,不能编译,这一步是为了可以编译C++程序,然后在安卓中使用这里不需要使用cygwin这个麻烦的东西,我们使用新版本的ndk来编译C++【二JDK的安装】JDK的最新版本是1.7,【重要】这里需要下载使用1.6的JDK,JDK自动包含JRE,使用1.7的JDKcocos的代码会有"暂时性编译错误"问题下载安装都是一路Next,下面的内容是安装1.7之后降1.6的方法,直接安装1.6的可以飘过下载地址:/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html 根据自己的操作系统选择,这里我用的是Java SE Development Kit 6u30如果你像我一样不幸,装上了1.7,可以用下面的方法来恢复降到1.61.打开windows的Preferences,把Compiler compliance level 设置到1.6 然后会显示让你配置JRE在配置jre中添加jre的目录,然后选定这里,我们在Eclipse里面设置好了JRE6,以及编译使用的JDK,但还不可以接下来要设置一下你的项目,打开Project Properties,Add Library 然后Next,接下来会要你选择JRE的路径这里我们直接选择刚刚在windows Preferences设置好的JRE6,然后Finish即可此时你会发现更多的红叉叉,所有文件都出现红叉叉了,让我们把他们消除掉,这次很简单,刚刚重置JRE的时候,吧安卓也重置掉了把安卓ADK勾上就可以了【三安装Eclipse和CDT】这里我直接用这一个,带CDT插件,已经有Eclipse的同学可以去下载一个CDTEclipse解压就可以直接使用了,这里不墨迹Eclipse C++版本下载地址/downloads/packages/eclipse-ide-cc-developers-includes-incubating-components/indigosr2Eclipse 要安装比较新的版本,旧版本会导致在最后几步功亏于溃。

win32程序cocos2d-x打包apk,无需cygwin

前期准备1.下载cocos2d-x(/projects/cocos2d-x/wiki/Download),这里选择cocos2d-x-2.1.5,解压在:E:\cocos2d-x-2.1.52.下载已配置好安卓开发环境的工具(/sdk/index.html)这里选择/android/adt/adt-bundle-windows-x86_64-20130729.zip这个工具解压在:D:\android3.下载NDK,这里选择(/android/ndk/android-ndk-r8b-windows.zip)android-ndk-r8b,解压放在D:\android\android-ndk-r8b4.下载安装Python2.7,安卓在C:\Python275.下载安装jdk配置环境变量(1)NDK_ROOT:D:\android\android-ndk-r8b(2)Path:(在原有的值的后面加入)D:\Program Files\Java\jdk1.6.0_45\bin;C:\Python27 创建cocos2d-x项目1.打开cmd,转到cocos2d-x项目所在盘符E:2.输入命令cd E:\cocos2d-x-2.1.5\tools\project-creator,转到项目create_project.py所在目录3.输入命令python create_project.py -project MyTestProject -package cn.sulianqi.test -language cpp MyTestProject为项目名称cn.sulianqi.test为安卓工程包名4.打开E:\cocos2d-x-2.1.5\projects,发现里面有我们刚建好的项目MyTestProject,至此项目搭建完成。

(注:这里搭建的是个空项目,只有HelloWord图片场景,实际打包的是自己现有的项目,所要包自己项目中Classes文件夹下的文件拷贝到新建好的这个项目的文件夹中,Resources也一样,等下经过安卓工程编译还有在E:\cocos2d-x-2.1.5\projects\MyCocos2d\proj.android目录下多出个assets 文件夹,到时候别忘了把Resources里面的文件拷贝到assets文件夹,否则打包会找不到资源)导入安卓工程1.打开D:\android\eclipse下的eclipse2.打开之后在eclipse的菜单中File>>Import>>然后弹出小窗口3.同样方法导入libcocos2dx库项目,所在目录E:\cocos2d-x-2.1.5\cocos2dx\platform\android 配置安卓工程1.这时项目是报错的,Cannot run program "bash": Launching failed这时需要右键项目属性打开配置 ${NDK_ROOT}/ndk-build.cmd2.配置cocos2d-x的路径在include$(BUILD_SHARED_LIBRARY)下面加入以下配置,如果路径按我的配置就默认用下面两句$(call import-add-path, E:/cocos2d-x-2.1.5)\$(call import-add-path, E:/cocos2d-x-2.1.5/cocos2dx/platform/third_party/android/prebuilt)\保存之后错误消失3.配置项目没报错了还没完,我们要让安卓工程知道我们要它编译哪些cpp文件,所以还得加入以下配置,把LOCAL_SRC_FILES这句替换成以下三句FILE_LIST := hellocpp/main.cppFILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)完成至此,右键项目>>Run As>>Android Appliction,看控制台没报错(有些Warning不要紧滴),在编译我们的cpp代码来,yes!恭喜你成功了!(注:这里模拟器跑不了的可以把安卓工程bin目录下生成的apk拷到手机上安装,或者有360手机助手的双击就可以安装了)附Android.mk 文件LOCAL_PATH := $(call my-dir)include$(CLEAR_VARS)LOCAL_MODULE := cocos2dcpp_sharedLOCAL_MODULE_FILENAME := libcocos2dcppFILE_LIST := hellocpp/main.cppFILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../ClassesLOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_staticLOCAL_WHOLE_STATIC_LIBRARIES += box2d_staticLOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_staticLOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_staticinclude$(BUILD_SHARED_LIBRARY)$(call import-add-path, E:/cocos2d-x-2.1.5)\$(call import-add-path, E:/cocos2d-x-2.1.5/cocos2dx/platform/third_party/android/prebuilt)\ $(call import-module,cocos2dx)$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)$(call import-module,CocosDenshion/android)$(call import-module,extensions)$(call import-module,external/Box2D)$(call import-module,external/chipmunk)。

cocos2d-x2.x版本接入bugly的总结

第⼆个问题的解决⽅法就是修改bugly下的Android.mk⽂件,增加⼀⾏代码LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)第三个问题就⽐较恶⼼⼀些了,最后我是直接在项⽬jni/Android.mk中再引⼊⼀个Android.mk,通过该⽂件去导⼊2.x的cocos需要配置NDK的环境变量,项⽬的jni/Android.mk中添加和Android.mk的⽂件内容第三项,因为bugly⾃⼰新起了⼀个线程去调⽤进⾏上报,在Android下如果游戏⾃⼰的所以对官⽅提供的CrashReport.mm进⾏了修改(主要⼆处改动,⼀处是初始化仅做暴露⾃⼰接⼝的事情,⼆是对断)#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)#import <Foundation/Foundation.h>#define NSStringMake(const_char_pointer) (const_char_pointer == NULL ? nil : @(const_char_pointer))#define NSStringNonnullMake(const_char_pointer) (const_char_pointer == NULL ? @"" : @(const_char_pointer))#define LOGI(fmt, args...) printf("[Info] %s: ", LOG_TAG);\printf(fmt, ##args);\printf("\n");#define LOGD(fmt, args...) printf("[Debug] %s: ", LOG_TAG);\printf(fmt, ##args);\printf("\n");#define LOGE(fmt, args...) printf("[Error] %s: ", LOG_TAG);\printf(fmt, ##args);\printf("\n");#define BUGLY_AGENT_CLASS @"BuglyAgent"#define BUGLY_AGENT_METHOD_INIT @"initWithAppId:debugMode:"#define BUGLY_AGENT_METHOD_INIT_LOG @"initWithAppId:debugMode:logger:"#define BUGLY_AGENT_METHOD_USER @"setUserIdentifier:"#define BUGLY_AGENT_METHOD_CHANNEL @"setAppChannel:"#define BUGLY_AGENT_METHOD_VERSION @"setAppVersion:"#define BUGLY_AGENT_METHOD_EXCEPTION @"reportException:name:message:stackTrace:userInfo:terminateApp:"#define BUGLY_AGENT_METHOD_SCENE @"setSceneTag:"#define BUGLY_AGENT_METHOD_SCENE_VALUE @"setSceneValue:forKey:"#define BUGLY_AGENT_METHOD_SCENE_CLEAN @"removeSceneValueForKey:"#define BUGLY_AGENT_METHOD_LOG @"level:tag:log:"#endifbool CrashReport::initialized = false;void CrashReport::initCrashReport(const char* appId, bool isDebug) {CrashReport::initCrashReport(appId, isDebug, Warning);}void CrashReport::initCrashReport(const char* appId, bool isDebug, CRLogLevel level) {if (!initialized) {// #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)// LOGI("[cocos2d-x] start init.");// initialized = true;// JavaVM* jvm = cocos2d::JniHelper::getJavaVM();// if (jvm == NULL) {// LOGE("[cocos2d-x] JavaVM is null.");// return;// }// JNIEnv* env = NULL;// jvm->GetEnv((void**)&env, JNI_VERSION_1_6);// if (env == NULL) {// LOGE("[cocos2d-x] JNIEnv is null.");// return;// }// jvm->AttachCurrentThread(&env, 0);// //get activity// LOGI("[cocos2d-x] try get org.cocos2dx.lib.Cocos2dxActivity");// jclass activityClass = env->FindClass("org/cocos2dx/lib/Cocos2dxActivity");// if (activityClass == NULL) {// LOGE("[cocos2d-x] Cocos2dxActivity is Null");// return;// }// jmethodID methodActivity = env->GetStaticMethodID(activityClass, "getContext", "()Landroid/content/Context;");// jobject activity = (jobject) env->CallStaticObjectMethod(activityClass, methodActivity);// if (activity == NULL) {// LOGE("[cocos2d-x] activity is Null");// return;// }// //call channel set package name// #if(SDK_CHANNEL_INDEX != 0)// LOGI("[cocos2d-x] set channel: %d", SDK_CHANNEL_INDEX);// char* packageName = "";// switch(SDK_CHANNEL_INDEX) {// case 1:// packageName = "com.tencent.bugly.msdk";// break;// }// jmethodID setChannelMethod = env->GetStaticMethodID(env->FindClass(CRASHREPORT_CLASS), METHOD_SET_CHANNEL, METHOD_SET_CHANNEL_PARAMETER);// LOGI("set packagename: %s", packageName);// env->CallStaticVoidMethod(env->FindClass(CRASHREPORT_CLASS), setChannelMethod, env->NewStringUTF(packageName));// #endif// //call init// LOGI("[cocos2d-x] init by bugly.jar");// jmethodID initMethod = env->GetStaticMethodID(env->FindClass(CRASHREPORT_CLASS), METHOD_INIT, METHOD_INIT_PARAMETER);// env->CallStaticVoidMethod(env->FindClass(CRASHREPORT_CLASS), initMethod, activity, env->NewStringUTF(appId), isDebug);// // iOS// #elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)// NSString* pAppId = NSStringMake(appId);// BOOL pDebug = isDebug ? YES : NO;// Class clazz = NSClassFromString(BUGLY_AGENT_CLASS);// if (clazz) {// BOOL initLog = true;// SEL selector = NSSelectorFromString(BUGLY_AGENT_METHOD_INIT_LOG);// NSMethodSignature* signature = [clazz methodSignatureForSelector:selector];// if (signature == nil) {// selector = NSSelectorFromString(BUGLY_AGENT_METHOD_INIT);// signature = [clazz methodSignatureForSelector:selector];// initLog = false;// }// if (signature) {// LOGI("Init the sdk with App ID: %s", appId);// NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:signature];// [invocation setTarget:clazz];// [invocation setSelector:selector];// [invocation setArgument:&pAppId atIndex:2];// [invocation setArgument:&pDebug atIndex:3];// if (initLog) {// NSInteger pLevel = (level >= 4 ? 1 : (level == 3 ? 2 : (level == 2 ? 4 : (level == 1 ? 8 : 16))));// [invocation setArgument:&pLevel atIndex:4];// }// [invocation invoke];// }// } else {// NSLog(@"Warning: Fail to get class by NSSelectorFromString(%@)", BUGLY_AGENT_CLASS);// }// #endif// register lua handler#if (BUGLY_REPORT_LUA)lua_register(getLuaState(), "buglyReportLuaException", buglyReportLuaException);lua_register(getLuaState(), "buglyPutUserData", buglyLuaPutUserData);lua_register(getLuaState(), "buglyRemoveUserData", buglyLuaRemoveUserData);lua_register(getLuaState(), "buglySetUserSceneTag", buglyLuaSetUserSceneTag);lua_register(getLuaState(), "buglySetUserId", buglyLuaSetUserId);lua_register(getLuaState(), "buglyLog", buglyLuaLog);LOGI("[cocos2d-x] registered bugly lua functions, init finished");#endif#if (BUGLY_REPORT_JS)#endifinitialized = true;}}void CrashReport::setUserSceneTag(int tag) {#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)cocos2d::JniMethodInfo t;if (cocos2d::JniHelper::getStaticMethodInfo(t,CRASHREPORT_CLASS,METHOD_SET_USER_SCENE_TAG,METHOD_SET_USER_SCENE_TAG_PARAMETER)){LOGI("[cocos2d-x] set user scene tag: %d", tag);//get activityjclass activityClass = t.env->FindClass("org/cocos2dx/lib/Cocos2dxActivity");if (activityClass == NULL) {LOGE("[cocos2d-x] Cocos2dxActivity is Null");return;}jmethodID methodActivity = t.env->GetStaticMethodID(activityClass, "getContext", "()Landroid/content/Context;"); jobject activity = (jobject) t.env->CallStaticObjectMethod(activityClass, methodActivity);if (activity == NULL) {LOGE("[cocos2d-x] activity is Null");return;}t.env->CallStaticVoidMethod(t.classID, t.methodID, activity, tag);}#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)if (tag < 0) {return;}NSUInteger pTag = tag;Class clazz = NSClassFromString(BUGLY_AGENT_CLASS);if (clazz) {SEL selector = NSSelectorFromString(BUGLY_AGENT_METHOD_SCENE);NSMethodSignature* signature = [clazz methodSignatureForSelector:selector];if (signature) {LOGI("Set user scene tag id: %d", tag);NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:signature];[invocation setTarget:clazz];[invocation setSelector:selector];[invocation setArgument:&pTag atIndex:2];[invocation invoke];}} else {NSLog(@"Warning: Fail to get class by NSSelectorFromString(%@)", BUGLY_AGENT_CLASS);}#endif}void CrashReport::putUserData(const char* key, const char* value) {#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)cocos2d::JniMethodInfo t;if (cocos2d::JniHelper::getStaticMethodInfo(t,CRASHREPORT_CLASS,METHOD_PUT_USER_DATA,METHOD_PUT_USER_DATA_PARAMETER)){LOGI("[cocos2d-x] put user data: %s:%s", key, value);//get activityjclass activityClass = t.env->FindClass("org/cocos2dx/lib/Cocos2dxActivity");if (activityClass == NULL) {LOGE("[cocos2d-x] Cocos2dxActivity is Null");return;}jmethodID methodActivity = t.env->GetStaticMethodID(activityClass, "getContext", "()Landroid/content/Context;");jobject activity = (jobject) t.env->CallStaticObjectMethod(activityClass, methodActivity);if (activity == NULL) {LOGE("[cocos2d-x] activity is Null");return;}t.env->CallStaticVoidMethod(t.classID, t.methodID, activity, t.env->NewStringUTF(key), t.env->NewStringUTF(value)); }#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)NSString * pKey = NSStringNonnullMake(key);NSString * pValue = NSStringNonnullMake(value);Class clazz = NSClassFromString(BUGLY_AGENT_CLASS);if (clazz) {SEL selector = NSSelectorFromString(BUGLY_AGENT_METHOD_SCENE_VALUE);NSMethodSignature* signature = [clazz methodSignatureForSelector:selector];if (signature) {LOGI("Set user Key-Value: [%s, %s]", key, value);NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:signature];[invocation setTarget:clazz];[invocation setSelector:selector];[invocation setArgument:&pValue atIndex:2];[invocation setArgument:&pKey atIndex:3];[invocation invoke];}} else {NSLog(@"Warning: Fail to get class by NSSelectorFromString(%@)", BUGLY_AGENT_CLASS);}#endif}void CrashReport::removeUserData(const char* key) {#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)cocos2d::JniMethodInfo t;if (cocos2d::JniHelper::getStaticMethodInfo(t,CRASHREPORT_CLASS,METHOD_REMOVE_USER_DATA,METHOD_REMOVE_USER_DATA_PARAMETER)){LOGI("[cocos2d-x] remove user data: %s", key);//get activityjclass activityClass = t.env->FindClass("org/cocos2dx/lib/Cocos2dxActivity");if (activityClass == NULL) {LOGE("[cocos2d-x] Cocos2dxActivity is Null");return;}jmethodID methodActivity = t.env->GetStaticMethodID(activityClass, "getContext", "()Landroid/content/Context;"); jobject activity = (jobject) t.env->CallStaticObjectMethod(activityClass, methodActivity);if (activity == NULL) {LOGE("[cocos2d-x] activity is Null");return;}t.env->CallStaticVoidMethod(t.classID, t.methodID, activity, t.env->NewStringUTF(key));}#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)NSString * pKey = NSStringNonnullMake(key);Class clazz = NSClassFromString(BUGLY_AGENT_CLASS);if (clazz) {SEL selector = NSSelectorFromString(BUGLY_AGENT_METHOD_SCENE_CLEAN);NSMethodSignature* signature = [clazz methodSignatureForSelector:selector];if (signature) {NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:signature];[invocation setTarget:clazz];[invocation setSelector:selector];[invocation setArgument:&pKey atIndex:2];[invocation invoke];}} else {NSLog(@"Warning: Fail to get class by NSSelectorFromString(%@)", BUGLY_AGENT_CLASS);}#endif}void CrashReport::setUserId(const char* userId) {#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)cocos2d::JniMethodInfo t;if (cocos2d::JniHelper::getStaticMethodInfo(t,CRASHREPORT_CLASS,METHOD_SET_USER_ID,METHOD_SET_USER_ID_PARAMETER)){LOGI("[cocos2d-x] set user id: %s", userId);t.env->CallStaticVoidMethod(t.classID, t.methodID, t.env->NewStringUTF(userId));}#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)NSString * pUserId = NSStringMake(userId);Class clazz = NSClassFromString(BUGLY_AGENT_CLASS);if (clazz) {SEL selector = NSSelectorFromString(BUGLY_AGENT_METHOD_USER);NSMethodSignature* signature = [clazz methodSignatureForSelector:selector];if (signature) {LOGI("Set user id: %s", userId);NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:signature];[invocation setTarget:clazz];[invocation setSelector:selector];[invocation setArgument:&pUserId atIndex:2];[invocation invoke];}} else {NSLog(@"Warning: Fail to get class by NSSelectorFromString(%@)", BUGLY_AGENT_CLASS);}#endif}void CrashReport::reportException(int category, const char* type, const char* msg, const char* traceback) {#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)cocos2d::JniMethodInfo t;if (cocos2d::JniHelper::getStaticMethodInfo(t,CRASHREPORT_CLASS,METHOD_POST_EXCEPTION,METHOD_POST_EXCEPTION_PARAMETER)){LOGI("ReportException %d %s %s %s", category, type, msg, traceback);jstring typeStr = t.env->NewStringUTF(type);jstring msgStr = t.env->NewStringUTF(msg);jstring traceStr = t.env->NewStringUTF(traceback);t.env->CallStaticVoidMethod(t.classID, t.methodID, category, typeStr, msgStr, traceStr, false); t.env->DeleteLocalRef(typeStr);t.env->DeleteLocalRef(msgStr);t.env->DeleteLocalRef(traceStr);}#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)NSUInteger pCategory = category;NSString * pType = NSStringMake(type);NSString * pMsg = NSStringMake(msg);NSString * pTraceStack = NSStringMake(traceback);NSDictionary * nullObject = nil;BOOL terminateApp = NO;Class clazz = NSClassFromString(BUGLY_AGENT_CLASS);if (clazz) {SEL selector = NSSelectorFromString(BUGLY_AGENT_METHOD_EXCEPTION);NSMethodSignature* signature = [clazz methodSignatureForSelector:selector];if (signature) {LOGE("Report exception: %s, %s\n%s", type, msg, traceback);NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:signature];[invocation setTarget:clazz];[invocation setSelector:selector];[invocation setArgument:&pCategory atIndex:2];[invocation setArgument:&pType atIndex:3];[invocation setArgument:&pMsg atIndex:4];[invocation setArgument:&pTraceStack atIndex:5];[invocation setArgument:&nullObject atIndex:6];[invocation setArgument:&terminateApp atIndex:7];[invocation invoke];}} else {NSLog(@"Warning: Fail to get class by NSSelectorFromString(%@)", BUGLY_AGENT_CLASS); }#endif}void CrashReport::setAppChannel(const char * channel){#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)LOGI("No impl");#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)NSString * pUserId = NSStringMake(channel);Class clazz = NSClassFromString(BUGLY_AGENT_CLASS);if (clazz) {SEL selector = NSSelectorFromString(BUGLY_AGENT_METHOD_CHANNEL);NSMethodSignature* signature = [clazz methodSignatureForSelector:selector];if (signature) {LOGI("Set channel: %s", channel);NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:signature];[invocation setTarget:clazz];[invocation setSelector:selector];[invocation setArgument:&pUserId atIndex:2];[invocation invoke];}}#endif}void CrashReport::setAppVersion(const char * version){#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)LOGI("No impl");#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)NSString * pUserId = NSStringMake(version);Class clazz = NSClassFromString(BUGLY_AGENT_CLASS);if (clazz) {SEL selector = NSSelectorFromString(BUGLY_AGENT_METHOD_VERSION);NSMethodSignature* signature = [clazz methodSignatureForSelector:selector];if (signature) {LOGI("Set version: %s", version);NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:signature];[invocation setTarget:clazz];[invocation setSelector:selector];[invocation setArgument:&pUserId atIndex:2];[invocation invoke];}}#endif}void CrashReport::log(CRLogLevel level, const char * tag, const char * fmts, ...) {#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)cocos2d::JniMethodInfo t;if (cocos2d::JniHelper::getStaticMethodInfo(t,CRASHREPORT_CLASS,METHOD_SET_LOG,METHOD_SET_LOG_PARAMETER)){LOGI("[cocos2d-x] set log: %s - %s", tag, fmts);t.env->CallStaticVoidMethod(t.classID, t.methodID, (int)level, t.env->NewStringUTF(tag), t.env->NewStringUTF(fmts)); }#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)if (NULL == fmts) {return;}//Error=4,Warn=3,Info=2,Debug=1,Verbose=0//LogError=1<<0,Warn=1<<1,Info=1<<2,Debug=1<<3,Verbose=1<<4NSInteger pLevel = (level >= 4 ? 1 : (level == 3 ? 2 : (level == 2 ? 4 : (level == 1 ? 8 : 16))));NSString * pTag = NSStringMake(tag);char msg[256] = {0};va_list args;va_start(args, fmts);vsprintf(msg, fmts, args);va_end(args);NSString * pMsg = NSStringMake(msg);Class clazz = NSClassFromString(BUGLY_AGENT_CLASS);if (clazz) {SEL selector = NSSelectorFromString(BUGLY_AGENT_METHOD_LOG);NSMethodSignature* signature = [clazz methodSignatureForSelector:selector];if (signature) {NSInvocation* invocation = [NSInvocation invocationWithMethodSignature:signature];[invocation setTarget:clazz];[invocation setSelector:selector];[invocation setArgument:&pLevel atIndex:2];[invocation setArgument:&pTag atIndex:3];[invocation setArgument:&pMsg atIndex:4];[invocation invoke];}}#endif}//special for lua#if (BUGLY_REPORT_LUA)int CrashReport::buglyReportLuaException(lua_State* luaState) {const char* type = "";const char* msg = lua_tostring(luaState, 1);const char* traceback = lua_tostring(luaState, 2);CrashReport::reportException(CATEGORY_LUA_EXCEPTION, type, msg, traceback);return 0;}int CrashReport::buglyLuaPutUserData(lua_State* luaState) {const char* key = lua_tostring(luaState, 1);我⾃⼰做测试是通过的,截图如下:IOS接⼊遇到的坑,初始化注意延时处理,防⽌崩溃初始化Bugly,处理处理防⽌崩溃,修改AppController.mm剩下就是设置环境路径和测试了,按上⾯的官⽅⽂档就好了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档