Cocos Creator | Android 集成 Bugly,捕获上报脚本及原生代码错误信息

更多源码,请关注公众号:

 

​01

概述

Bugly Cocos Plugin 是为基于 Cocos 引擎的 AppiOS/Android)封装的 Bugly 原生(iOS/AndroidSDK 的接口,方便调用 Bugly 原生 SDK,可用于SDK初始化、设置自定义用户信息、错误等,并自动捕获上报 App 的脚本(Lua、JavaScript)错误和原生代码(如Objective-CJavaC/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_prebuiltLOCAL_SRC_FILES := ../libs/libBugly.soinclude $(PREBUILT_SHARED_LIBRARY)# --- end ---include $(CLEAR_VARS)LOCAL_MODULE := cocos2djsLOCAL_MODULE_FILENAME := libcocos2djsifeq ($(USE_ARM_MODE),1)LOCAL_ARM_MODE := armendif# --- bugly ---LOCAL_CPP_EXTENSION := .mm .cpp .ccLOCAL_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_staticinclude $(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 BuglyCrashReport::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-CJavaC/C++等)引发的崩溃信息

但如果想要设置自定义用户信息、错误等,可以通过 jsb 导出给脚本使用

03

集成检测

在脚本中随便写个错误,构建、编译、运行后,我们可以及时的在 bugly 后台查看错误相关信息:

更多教程

请扫码关注

猜你喜欢

转载自blog.csdn.net/u010799737/article/details/120406785