腾讯bugly日志使用方法

bugly是在线log crash收集管理工具,可用于release版本的log控制
官网文档:https://bugly.qq.com/docs/user-guide/instruction-manual-android/?v=20181214145900
1.首先要申请腾讯Bugly账户,可用QQ直接注册,然后创建产品。
腾讯bugly日志使用方法_第1张图片
2.首页左侧栏对应项目,主要是 崩溃对应 Crash,ANR为app无响应,错误为try catch捕获的exception
腾讯bugly日志使用方法_第2张图片
3.Android 代码导入
1)build.gradle中添加,如果不需要ndk,可以不导入

android {
    defaultConfig {
        ndk {
            // 设置支持的SO库架构
            abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
        }
    }
}

dependencies {
    implementation 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.1.9
    implementation 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新Bugly NDK版本号,也可以指定明确的版本号,例如3.0
}

2)Mainifest添加权限:






proguard-rules.pro添加防止混淆

-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}

3)最简单的初始化是在MyApplication,第三个参数为调试开关,会时时上报数据,release版本可设置为false

 @Override
    public void onCreate() {
        super.onCreate();
       CrashReport.initCrashReport(getApplicationContext(), "注册时申请的APPID", true);
        initBugly();
    }

可以在activity进行crash测试

  CrashReport.testJavaCrash();

腾讯bugly日志使用方法_第3张图片

4)第二种可以设置用户策略
在MyApplication中添加strategy 用户添加策略。
CrashHandleCallback回调内的数据是crash时生成附件文本用的,catch抓取的log(错误分析)是不上传的。

public class AppApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        initBugly();
    }

    private void initBugly(){
        CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(this);
        strategy.setAppChannel("myChannel");  //设置渠道
        strategy.setAppVersion(getVerName());      //App的版本
        strategy.setAppPackageName(getPackageName());  //App的包名
        strategy.setCrashHandleCallback(new CrashReport.CrashHandleCallback() {
            public Map onCrashHandleStart(int crashType, String errorType,String errorMessage, String errorStack) {
                LinkedHashMap map = new LinkedHashMap();
                map.put("key", "testValue");
                return map;
            }

            @Override
            public byte[] onCrashHandleStart2GetExtraDatas(int crashType, String errorType,String errorMessage, String errorStack) {
                try {
                    return "Extra data.".getBytes("UTF-8");
                } catch (Exception e) {
                    return null;
                }
            }
        });
        CrashReport.initCrashReport(this, "80192f23e9", true, strategy);
        CrashReport.setUserId("userID");
    }
    
    private String getVerName() {
        String verName = "";
        try {
            verName =getPackageManager().
                    getPackageInfo(context.getPackageName(), 0).versionName;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return verName;
    }
}

Bugly会在启动10s后联网同步数据,修改这个时间

strategy.setAppReportDelay(20000);   //改为20s

5)以下代码为测试Activity
setUserSceneTag:设置该Activity flag 为 9527,便于统计页面,可自定义
putUserData:会在bugly控制台崩溃日志输出该log
postCatchedException:捕获catch的exception,需要手动post,catch里的平台不会自动抓取,例子为ArrayIndexOutOfBoundsException数组越界异常,

                CrashReport.setUserSceneTag(this, 9527); // 上报后的Crash会显示该标签
                CrashReport.putUserData(this, "userkey", "uservalue");
                int[] names={1,2};
                try {
                    int io = names[4];
                } catch (Exception e) {
                    e.printStackTrace();
                    CrashReport.postCatchedException(e);  // bugly会将这个throwable上报
                }               

4.平台使用
1)崩溃分析会根据代码设定用户策略填表

腾讯bugly日志使用方法_第4张图片
2)跟踪数据
附件信息extraMessage.txt 是CrashHandleCallback回调中Map的集合,可进行数据统一收集,也可进行本地附件的上传
腾讯bugly日志使用方法_第5张图片

3)崩溃日志:
代码中设置的log,都会输出到控制台

CrashReport.setUserSceneTag(this, 9527); 
CrashReport.putUserData(this, "userkey", "uservalue");

腾讯bugly日志使用方法_第6张图片

你可能感兴趣的:(Android)