Bugly使用记录——异常上报

85 篇文章 2 订阅
订阅专栏
14 篇文章 0 订阅
订阅专栏

Bugly官网首页

SDK文档地址

 

导入SDK

Bugly支持自动和手动两种方式,感谢伟大的AS,自动导入更简单更快

需要操作两个地方

1.在Module的build.gradle文件中添加依赖和属性配置

android {
    defaultConfig {
        //这个针对的是NDK的配套设置,SDK不需要
        ndk {
            // 设置支持的SO库架构
            abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
        }
    }
}

dependencies {
//    可以针对需求来添加依赖,NDK针对的是本地so文件,如果没有引入so文件就不需要
    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.参数配置

  • 在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" />
<!--这个权限是系统应用权限,目前可能影响的是本地locat输出,不影响捕捉异常和异常上报-->
<uses-permission android:name="android.permission.READ_LOGS" />

注:如果您的App需要上传到google play store,您需要将READ_PHONE_STATE权限屏蔽掉或者移除,否则可能会被下架。

  • 请避免混淆Bugly,在Proguard混淆文件中增加以下配置:
-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}

初始化

配置完SDK后,就可以初始化和应用了

初始化有两种方式

一种是比较简单,一句代码

获取APP ID并将以下代码复制到项目Application类onCreate()中,Bugly会为自动检测环境并完成配置:

CrashReport.initCrashReport(getApplicationContext(), "注册时申请的APPID", false); 

文档中有注意事项

  • 为了保证运营数据的准确性,建议不要在异步线程初始化Bugly
  • 第三个参数为SDK调试模式开关,调试模式的行为特性如下:输出详细的Bugly SDK的Log;每一条Crash都会被立即上报;自定义日志将会在Logcat中输出。建议在测试阶段建议设置成true,发布时设置为false

第二个事项这里由于没有申请log权限,因此默认为false。

Application建议自己重写继承Application类,在AndroidMani文件,application标签中用name标签指定自己的Application类

另一种需要配置AndroidMani文件,配置比较详细

Bugly2.0及以上版本还支持通过“AndroidManifest.xml”来配置APP信息。如果同时又通过代码中配置了APP信息,则最终以代码配置的信息为准。

在“AndroidManifest.xml”的“Application”中增加“meta-data”配置项:

<application
    <!-- 配置APP ID -->
    <meta-data
            android:name="BUGLY_APPID"
            android:value="<APP_ID>" />
    <!-- 配置APP版本号 -->
    <!--不同于“android:versionName”,“BUGLY_APP_VERSION”配置的是Bugly平台的APP版本号。-->
    <meta-data
            android:name="BUGLY_APP_VERSION"
            android:value="<APP_Version>" />
    <!-- 配置APP渠道号 -->
    <meta-data
            android:name="BUGLY_APP_CHANNEL"
            android:value="<APP_Channel>" />
    <!-- 配置Bugly调试模式(true或者false)-->
    <meta-data
            android:name="BUGLY_ENABLE_DEBUG"
            android:value="<isDebug>" />
</application>

通过“AndroidManifest.xml”配置后的初始化方法如下:

CrashReport.initCrashReport(getApplicationContext());

 

测试

到这一步,就可以在控制台上看到上传的crash

文档中的方法

在一个点击事件中调用测试接口

CrashReport.testJavaCrash();

由于没有locat权限,本地log输出中没有日志输出,但是在Bugly控制台中可以看到结果

另外,如果项目包含了Native工程或者使用了代码混淆,建议配置符号表文件,具体请参考“ 符号表配置”

崩溃趋势

具体分析

 

高级设置

参考sdk

        CrashReport.UserStrategy userStrategy = new CrashReport.UserStrategy(getApplicationContext());
//        自定义数据 记录信息 设置渠道名称
        userStrategy.setAppChannel("channel_test");
//        自定义数据 设置app版本
        userStrategy.setAppVersion("test_version");
//        记录信息 设置app包名
        userStrategy.setAppPackageName("test_package_name");
//        设置bugly启动后联网延迟,默认10s
        userStrategy.setAppReportDelay(2000);
//         自定义跟踪数据回传文件
        userStrategy.setCrashHandleCallback(new CrashReport.CrashHandleCallback() {

            public Map<String, String> onCrashHandleStart(int crashType, String errorType, String errorMessage, String errorStack) {
                LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
                map.put("Key", "Value");
                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(getApplicationContext(), "bf21e87f18", false, userStrategy);
//        设置模块/功能/场景标签,在控制台显示,需要在控制台维护标签ID
        CrashReport.setUserSceneTag(getApplicationContext(), 107173);
//        记录信息 回传异常用户ID
        CrashReport.setUserId("1111111");
//        自定义数据 设置自定义地图参数
        CrashReport.putUserData(getApplicationContext(), "12341234", "123123123");
//         ADT 17增加了BuildConfig特性,可以通过获取BuildConfig类的DEBUG变量来设置:
//        CrashReport.setIsDevelopmentDevice(getApplicationContext(), BuildConfig.DEBUG);

使用Javascript的异常捕获功能

可以感知到webView中发生的js异常,需要配合webView使用,具体参考文档

 

更多的Bugly日志附加信息

bugly可以支持更多的自定义信息

1,设置用户ID您可能会希望能精确定位到某个用户的异常,我们提供了用户ID记录接口。例:网游用户登录后,通过该接口记录用户ID,在页面上可以精确定位到每个用户发生碰撞的情况。

CrashReport.setUserId("9527");  //该用户本次启动后的异常日志用户ID都将是9527

2,主动上报开发者Catch的异常您可能会关注某些重要异常的Catch情况。我们提供了上报这类异常的接口。例:统计某个重要的数据库读写问题比例。

try {
    //...
} catch (Throwable thr) {
    CrashReport.postCatchedException(thr);  // bugly会将这个throwable上报
}

3,自定义日志功能我们提供了自定义Log的接口,用于记录一些开发者关心的调试日志,可以更全面地反应App异常时的前后文环境。使用方式与android.util.Log一致。用户传入TAG和日志内容。该日志将在logcat的输出,并在发生异常时上报。有如下

BuglyLog.v(tag, log)
BuglyLog.d(tag, log)
BuglyLog.i(tag, log)
BuglyLog.w(tag, log)
BuglyLog.e(tag, log)

注意:

  • 使用BuglyLog接口时,为了减少磁盘IO次数,我们会先存日志缓存在内存中。当缓存大于一定阈值(默认10K),会将它持久化至文件。您可以通过setCache(int byteSize)接口设置缓存大小,范围为0-30K。例:BuglyLog.setCache(12 * 1024)//将缓存设置为12K
  • 如果您没有使用BuglyLog接口,且初始化Bugly时isDebug参数设置为假,该登录功能将不会有新的资源占用;
  • 为了方便开发者调试,当初始化Bugly的isDebug参数为真时,异常日志同时还会记录Bugly本身的日志请在应用发布时将其设置为假。
  • 上报日志最大30K。

第三个功能需要注意,在AndroidMani中没有申请logcat权限,无法使用,最好在初始化时设置isDebug=false。(初始化时的布尔参数)

 

 

android开发,异常处理,捕获异常上传到bugly,捕获异常库module
12-20
android开发,异常处理,捕获异常上传到bugly,捕获异常库module化了。
使用Bugly 作为APP异常上报工具
wangzhezhilu001的专栏
01-07 4477
0.需求 最近发布的APP,用户反馈遇到了一些稀奇古怪的崩溃。本地测试,一定程度上无法覆盖所有的case。加之用户使用场景和本地场景存在一定差异性。这难免会造成一些稀奇古怪的崩溃,且不易复现。 突然想到,微软也在做一件事,就是每当程序崩溃以后,总要把一些崩溃上报。显然,APP也把崩溃进行上报,也是一个好思路。 继续发现,好些大厂都已经提供了完整的APP上传工具和机制。但如果是站在工程师的角度,如果资源不够的话,重新设计一套工具,显然是不合适的。于是,想到了是否有公开的可以直接用APP异常上传工具和“轮
Android 捕获异常上报异常日志,捕获奔溃日志,bugly使用实例
最新发布
2401_84104883的博客
04-21 713
/上报bugly。(img-KrRiuZo6-1713679741674)]以薪资待遇为基础,以发展为最终目标,要在高薪资的地方,谋求最好的发展!下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。止,不再深入研究,那么很难做到真正的技术提升。bugly 手动上报异常。todo 收集系统信息。
实战-Android 系统异常日志上报(DropboxManager)
u010927489的专栏
12-28 2423
系统异常日志上报、DropBoxManagerService原理
异常上报功能Bugly简介
diaochuanzhi7826的博客
02-18 950
目的:为了能够快速定位到线上版本bug位置,经过比较之后,决定使用腾讯家的Bugly。 1、注册产品 官方文档使用指南 1.1 登录 - 使用 QQ 登录Bugly官网 没有账号就注册,要实名就实名,在此不做注册介绍。 注册登陆完找不到我的产品就点击左上角图标回到首页 找到我的产品 1.2 创建应用 按照要求添加应用名称、选择应用平台、产品类型、产品图标和描述信息。...
性能优化-Andriod中捕获收集APP崩溃异常信息并上报服务器
Mango先生的博客
11-29 980
捕获异常前言实现UncaughtExceptionHandler 前言 在做应用线上维护的时候,需要将用户在使用APP的过程中发生的错误信息及当时的手机的一些数据发送到服务器,方便开发人员分析和修改,进行后续迭代;这样就需要捕获应用发生的异常,好在Google给我们提供了一个UncaughtExceptionHandler这么一个接口,可以实现这个需求 本文所含代码随时更新,可从这里下载最新代码 ...
android 崩溃异常统计第三方,调用第三方库crash异常捕获android
weixin_39875754的博客
05-29 395
android开启崩溃捕获void InitCrashReport() {LOG(LS_INFO) << "ThrowJNI----异常捕获。。。";struct sigaction handler;memset(&handler, 0, sizeof(struct sigaction));handler.sa_sigaction = android_sigaction;han...
flutter_bugly:腾讯Bugly flutter应用更新统计及异常上报插件,支持Android,iOS
02-19
支持Android / iOS运营统计,原生异常上报,flutter异常上报,应用更新 一,约会 //因为大部分主流插件都已升级androidx,所以pub库升级androidx //版本更新弹窗问题见下面说明 //androidx dependencies : flutter...
bugly简易使用
06-17
bugly简易使用,最简单的方法使用bugly,只需配置三步即可完成
Unity 腾讯bugly异常报错监测 Unity使用的SDK
03-15
Unity 腾讯bugly异常报错监测 Unity使用的SDK
腾讯Bugly使用Demo
06-10
地址:http://blog.csdn.net/qq_26787115/article/details/51615578
腾讯Bugly异常监控集成
热门推荐
oden的博客
07-12 1万+
腾讯Bugly异常监控集成本文对bugly的集成及使用做简单的整理及说明集成Bugly SDK在Module的build.gradle文件中添加依赖和属性配置:dependencies { compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新版本号,也可以指定明确的版本号,例如2.1.5 }
Bugly不上上报日志的解决办法
hbysjw的博客
06-03 5776
Bugly官网 Bugly的引用流程可详细查看官方网站, 自动引用超级简单 在使用bugly的时候发现armeabi和armeabi-v7a的手机可以上传错误日志, arm64-v8a的手机不支持, 这个arm把我带偏了,后面详细查看日志, 看有一个报错Cleartext HTTP traffic to android.bugly.qq.com not permitted.,查询是Android P需要进行适配(限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉).关于Android P的解释
android错误日志收集bugly使用异常日志分析
Nade的博客
07-20 1235
bugly 是腾讯推出的一款不过收集工具 对于线上线下的bug修复和处理有很大帮助 简单记录一下bugly集成 首先注册账号 https://bugly.qq.com 创建项目 然后配置项目 module 的 build.grade implementation ‘com.tencent.bugly:crashreport:latest.release’ 添加权限 并配置项目的 appi...
腾讯Bugly
Ronadlo7的博客
08-31 488
腾讯Bugly 收集异常 在腾讯平台注册: https://bugly.qq.com/v2/index 同时集成SDK和NDK android { defaultConfig { ndk { // 设置支持的SO库架构 abiFilters 'armeabi' //, 'x86', 'armeabi-v...
腾讯bugly日志使用方法
neabea2016的博客
12-27 9431
bugly是在线log crash收集管理工具,可用于release版本的log控制 官网文档:https://bugly.qq.com/docs/user-guide/instruction-manual-android/?v=20181214145900 1.首先要申请腾讯Bugly账户,可用QQ直接注册,然后创建产品。 2.首页左侧栏对应项目,主要是 崩溃对应 Crash,ANR为app无...
Android studio 接入腾讯TBSx5内核的解决方案
qq_33209777的博客
01-10 1万+
                        Android studio 接入腾讯TBSx5内核的解决方案   首页我们查看一下腾讯浏览服务的官网:     https://x5.tencent.com/tbs/guide/sdkInit.html     二、背景知识 1. TBS(腾讯浏览服务)的优势 1) 速度快:相比系统webview的网页打开速度有30+%的提升; 2)...
android 面试算法题 实现单链表反转(1),面试官问技术问题不太会怎么办
2401_84103675的博客
04-14 251
T行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!(5)反转后得到的链表最后一个结点是否为null?考虑完以上问题后,就能够写出正确的代码了。(2)假设链表为单节点链表,该怎样处理?(3)怎样防止在反转过程中断链?(4)反转后head是否更新?实现自定义链表反转类。
Bugly 异常上报
09-02
使用 Bugly 异常上报功能,首先需要在应用代码中引入 Bugly 的 SDK,并在适当的地方初始化和配置 Bugly。然后,在应用发生异常时,Bugly SDK 会自动捕获异常信息,并将其上报Bugly 平台。 在 Bugly 的控制台上...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

分类专栏

  • kotlin 1篇
  • 网络通信 1篇
  • Git 1篇
  • 数学 1篇
  • Flutter系列 1篇
  • 踩坑 1篇
  • 软件
  • 支付 1篇
  • 测试
  • Android 85篇
  • Java 8篇
  • 工具 14篇
  • lua
  • 微博 1篇
  • flutter 1篇
  • weApp 1篇
  • php
  • MySql 1篇

最新评论

  • View的学习记录(一)

    CSDN-Ada助手: 那些刻骨铭心的日子,总会在未来的某一天闪闪发光。

  • 安卓中通讯录的实现

    qq_57537188: 大佬可以求个下载链接吗

  • MySql学习笔记

    Lansonli: 原创不易,过来支持一下~

  • 安卓中通讯录的实现

    故佞: 可以求一份源码吗?

  • 安卓中通讯录的实现

    RungBy 回复 weixin_45061702: 唔,抽个时间我重写一遍吧,现在再看,我也觉得写的很low(捂脸)

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • kotlin语言学习
  • LibGdx学习记录
  • android 自动化测试
2022年3篇
2021年8篇
2020年8篇
2019年15篇
2018年68篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源周易免费解梦怎样起人名免费公司起名森配什么字好教育培训学校起名大全垂字辈起名大全天秤座维字起名字的意义公司起名规定电脑自动关机设置农女的锦鲤人生焦作新闻网荀姓起名大全最新洋气的公司起名名字大全读后感600字特朗普所乘专机险与无人机相撞网站排行在线起名字免费测量山猫和吉咪之嘉年华斯诺克冠军联赛给猫起名字他怎样才能听懂工程机械公司起名起名慕霆琛温言免费阅读全文服饰公司起名大全四字2005年鸡起名字苏氏起名大全男孩名字姓韦的女孩起名字周易类公司起名饰品取名起名大全店铺给中介起个名字乡野欲潮淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化