更多源码,请关注公众号:
01
概述
Bugly Cocos Plugin 是为基于 Cocos 引擎的 App(iOS/Android)封装的 Bugly 原生(iOS/Android) SDK 的接口,方便调用 Bugly 原生 SDK,可用于SDK初始化、设置自定义用户信息、错误等,并自动捕获上报 App 的脚本(Lua、JavaScript)错误和原生代码(如Objective-C、Java、C/C++等)引发的崩溃信息,提供实时、多维度的异常问题分析服务
02
集成步骤
1下载 Bugly Cocos Plugin
下载地址:
https://bugly.qq.com/v2/sdkDownload
选择 Cocos Plugin 插件:
打开文档中心:
https://bugly.qq.com/docs/user-guide/instruction-manual-plugin-cocos/?v=20200622202242
sdk 的目录结构:
2拷贝相关文件
首选需要构建 Android 平台
Classes 目录的路径:项目根目录/build/jsb-link/frameworks/runtime-src/Classes
将下载的文件中的 CocosPlugin/bugly 目录 拷贝到 Classes 目录下,bugly 目录中只保留所需的文件
在 proj.android-studio 目录下新建 libs 目录,将 sdk 中的相关文件拷贝到 libs 目录下
sdk 中的相关文件:
可以只添加 armeabi-v7a 平台对应的 so:
libs 目录中最终的文件:
3修改 CocosAndroid.mk
关于 Android.mk 的官方文档:
https://developer.android.google.cn/ndk/guides/android_mk
打开 proj.android-studio 目录中的 jni 目录中的 CocosAndroid.mk
添加 bugly 相关内容:
最终内容:
LOCAL_PATH := $(call my-dir)
# --- 引用 libBugly.so ---
include $(CLEAR_VARS)
LOCAL_MODULE := bugly_native_prebuilt
LOCAL_SRC_FILES := ../libs/libBugly.so
include $(PREBUILT_SHARED_LIBRARY)
# --- end ---
include $(CLEAR_VARS)
LOCAL_MODULE := cocos2djs
LOCAL_MODULE_FILENAME := libcocos2djs
ifeq ($(USE_ARM_MODE),1)
LOCAL_ARM_MODE := arm
endif
# --- bugly ---
LOCAL_CPP_EXTENSION := .mm .cpp .cc
LOCAL_CFLAGS += -x c++
# --- end ---
LOCAL_SRC_FILES := hellojavascript/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/jsb_module_register.cpp \
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
# --- bugly ---
LOCAL_SRC_FILES += ../../Classes/bugly/CrashReport.mm \
# --- end ---
LOCAL_STATIC_LIBRARIES := cocos2dx_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module, cocos)
4修改 AndroidManifest.xml
在 AndroidManifest.xml 文件中添加如下权限声明:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<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_LOGS" />
5修改 AppDeleagate.cpp
在 Classes/AppDeleagate.cpp 文件中
添加头文件:
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#include "bugly/CrashReport.h"
#endif
在 applicationDidFinishLaunching() 中初始化
// Init the Bugly
CrashReport::initCrashReport("Your AppID", false);
同样在 applicationDidFinishLaunching() 中的 setExceptionCallback 的回调中上报自定义异常
// cocos 很贴心的给出了提示
se->setExceptionCallback([](const char *location, const char *message, const char *stack) {
// Send exception information to server like Tencent Bugly.
cocos2d::log("\nUncaught Exception:\n - location : %s\n - msg : %s\n - detail : \n %s\n", location, message, stack);
CrashReport::reportException(CATEGORY_JS_EXCEPTION, "JSException", message, stack);
});
至此,就可以自动捕获上报 App 的脚本(JavaScript)错误和原生代码(如Objective-C、Java、C/C++等)引发的崩溃信息
但如果想要设置自定义用户信息、错误等,可以通过 jsb 导出给脚本使用
03
集成检测
在脚本中随便写个错误,构建、编译、运行后,我们可以及时的在 bugly 后台查看错误相关信息:
更多教程
请扫码关注