原由:帮助线上项目捕获并自动上传异常,随时随地查看APP问题
Bugout官网地址:http://bugout.testin.cn/
帮助文档及SDK下载地址:http://docs.testin.cn/docs/sdk
首先要在官网添加一个项目,然后获取到项目的ID
如图:

Cocos Creator安卓接入Bugout的步骤如下:(该教材主要捕获JavaScript抛出的异常,教程中目录截图是基于Cocos Creator 1.4.0目录,其他版本的目录请自行对应)
-
官网下载Android SDK包;
-
官网下载Android Cocos插件;
如图:

-
将Android SDK 压缩包中的libs目录下的jar包提取出来,放入项目的 build\jsb-default\frameworks\runtime-src\proj.android\libs 目录下
如图:
-
提取Android Cocos插件压缩包中的 testinagenthelper文件夹,然后放入项目的build\jsb-default\frameworks\cocos2d-x\external 目录下,如图

-
修改AndroidMninifest.xml文件,添加需要的权限:
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.READ_LOGS"/> <uses-permission android:name="android.permission.GET_TASKS"/>
如图:
6.修改build\jsb-default\frameworks\runtime-src\proj.android\jni目录下的Android.mk文件:
//这两行需要同其他的LOCAL_WHOLE_STATIC_LIBRARIES命令放在一起
LOCAL_WHOLE_STATIC_LIBRARIES += testin_agent_helper_static
LOCAL_WHOLE_STATIC_LIBRARIES += testin_agent_helper_js
//这两行放在最后
$(call import-module,external/testinagenthelper)
$(call import-module,external/testinagenthelper/js)
//这一句放在其他LOCAL_C_INCLUDES := $(LOCAL_PATH)/…/…/Classes后面
LOCAL_C_INCLUDES += $(LOCAL_PATH)/…/…/…/cocos2d-x/external
如图所示:
7.修改Classes目录下的APPDelegat.cpp文件
添加头文件:
#include “testinagenthelper/TestinAgentHelper.h”
#include “testinagenthelper/js/TestinJSExceptionHandler.h”
如图:
//在引擎初始化的代码位置(AppDelegate.cpp的applicationDidFinishLaunching()函数最前面),添加如下代码
TestinAgentHelper::initTestinAgent(“appID”, “渠道,可为空字符串”);
如图:
//在JS引擎初始化成功后(在JS引擎的runScript方法之前),调用此方法,将引擎的context作为对象传入:
TestinJSExcetionHandler::registerJSExceptionHandler(ScriptingCore::getInstance()->getGlobalContext());
如图:
8. 最后修改build\jsb-default\frameworks\cocos2d-x\external\testinagenthelper\js目录下的Android.mk文件
// LOCAL_C_INCLUDES变量添加如下代码
$(LOCAL_PATH)/…/…/android/armeabi-v7a/include/spidermonkey
如图:
编译通过就可以了……^_^,你以为这就完了么?太年轻太天真
上报完JS错误会发现另一个难题,Creator在编译release工程时,先把工程合成一个project.js,然后再编译成字节码project.jsc。问题出在合成project.js时,还把代码给压缩了,空格和换行都删除了,project.js变成只有一行的文件。(出处http://forum.cocos.com/t/js/50555)
本人解决办法:
先构建调试模式,
如图:
得到project.dev.js文件
如图:
然后备份这个js文件到别的地方,然后再构建release版本
会生成release版的project.jsc文件(此文件后面会被替换)
然后利用JSTOOL工具,把bebug版本的project.dev.js文件转为project.jsc
JSTOOL工具在cocos安装目录\resources\cocos2d-x\tools\cocos2d-console\plugins\plugin_jscompile\bin\ jsbcc.exe
如图:(我是装在D盘)
JSTOOL工具的使用方法:
命令行环境下(cmd):
Jsbcc.exe 需要转的project.dev.js文件 转换后的prokect.jsc
Jsbcc.exe可以直接从目录中拖拽到cmd窗口
把新生成的prokect.jsc替换release版本的project.jsc(原project.dev.js文件不要删,后面报错时需要查看此文件),至此完事,直接编译即可
在Bugout网站上看出错记录
如图:

打开project.dev.js文件定位到27行:











才看清楚,原来是Bugout。。。。。。


谢谢分享~