0.需求

最近发布的APP,用户反馈遇到了一些稀奇古怪的崩溃。本地测试,一定程度上无法覆盖所有的case。加之用户使用场景和本地场景存在一定差异性。这难免会造成一些稀奇古怪的崩溃,且不易复现。

突然想到,微软也在做一件事,就是每当程序崩溃以后,总要把一些崩溃上报。显然,APP也把崩溃进行上报,也是一个好思路。

继续发现,好些大厂都已经提供了完整的APP上传工具和机制。但如果是站在工程师的角度,如果资源不够的话,重新设计一套工具,显然是不合适的。于是,想到了是否有公开的可以直接用APP异常上传工具和“轮子”。

1.工具寻找

经过寻找,找到比较好的工具是腾讯推出的Bugly。主页为https://bugly.qq.com/v2/index。Bugly可以进行异常上报和错误分析。当然,最关键的是:APP发生的错误,实时上传到腾讯的库里,可以让用户进行查看和分析。

显然,本工具是满足要求的。

2.Bugly工具的使用

Bugly工具的使用,可以通过其官方文档查看和学习(home - Bugly 文档)。

想使用的话,需要注册然后使用。

当然,基本思路是:把Bugly安装到程序使用,然后,整个程序就可以运行起来。

笔者目前负责的主要产品为Android,以Android为例进行使用。

笔者目前使用的android开发IDE为Android Studio4.0。

在Project对应的build.gradle上加上Bugly上传,如下所示:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {repositories {google()jcenter()}dependencies {classpath "com.android.tools.build:gradle:4.0.0"// 配置自动上传符号表插件,注:为了能快速并准确地定位用户APP发生Crash的代码位置,Bugly使用符号表对APP发生Crash的程序堆栈进行解析和还原classpath 'com.tencent.bugly:symtabfileuploader:latest.release'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}
}allprojects {repositories {google()jcenter()}
}task clean(type: Delete) {delete rootProject.buildDir
}

然后,在项目的build.gradle里加上上传的的文件

apply plugin: 'com.android.application'android {compileSdkVersion 31buildToolsVersion "31.0.0"defaultConfig {applicationId "com.example.buglytest"minSdkVersion 24targetSdkVersion 31versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}
}dependencies {implementation fileTree(dir: "libs", include: ["*.jar"])implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'androidx.constraintlayout:constraintlayout:1.1.3'testImplementation 'junit:junit:4.12'androidTestImplementation 'androidx.test.ext:junit:1.1.1'androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'// 其中latest.release指代最新版本号,也可以指定明确的版本号,例如1.2.7// (注:从2.1.5开始要分开Bugly SDK和NDK的配置)implementation 'com.tencent.bugly:crashreport:latest.release'implementation 'com.tencent.bugly:nativecrashreport:latest.release'
}

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" />

在程序起始入口的OnCreate函数里加上写入程序,如下所示。

public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();/* Bugly SDK初始化* 参数1:上下文对象* 参数2:APPID,平台注册时得到,注意替换成你的appId* 参数3:是否开启调试模式,调试模式下会输出'CrashReport'tag的日志*/CrashReport.UserStrategy userStrategy = new CrashReport.UserStrategy(this);CrashReport.initCrashReport(this,"自己的APPID",true, userStrategy);}
}

3.样例测试和程序使用

比较幸运的是,Github上有一个他人写好的现成样例,链接为:

值得注意的是:该样例可能在部分Android Studio上失败。如果失败,自己可以把相关程序拷贝过来即可。

同时,Bugly还可以用于iOS、Unity、Cocos,限于篇幅,本文不介绍了。

4.可能风险

可能存在的风险,依然是由于使用了腾讯的产品,上传信息不可避免的会被腾讯获得。如果是大厂,还是自己建立代码上传和追踪机制吧。

对于小研发团队,目前这种方法其实就够了。

使用Bugly 作为APP异常上报工具相关推荐

  1. Android 腾讯Bugly使用(异常上报,全量升级,热更新)

    1.0.1腾讯Bugly使用(异常上报,全量升级,热更新) 说明 Bugly全量升级,热更新以及异常上报是一起集成的,还包括运营统计,本文档着重演示热更新功能. 接入步骤 1.在Project的bui ...

  2. Bugly使用记录——异常上报

    Bugly官网首页 SDK文档地址 导入SDK Bugly支持自动和手动两种方式,感谢伟大的AS,自动导入更简单更快 需要操作两个地方 1.在Module的build.gradle文件中添加依赖和属性 ...

  3. iOS端(腾讯Bugly)闪退异常上报扑获日志集成与使用指南

    app已经上架并且有三次更新版本,今天市场部和顾客约谈时,发现顾客的iphone 6 plus iOS 9.0.2上运行app点击登录按钮时直接闪退,无法进入app里,这个问题还是第一次遇到,我下载了 ...

  4. 【安卓学习之第三方库】异常上报 库(Crash搜集)

    █ [安卓学习之第三方库]异常上报 库 █ 相关文章: - ● [安卓学习之第三方库]库的使用2-jar类库的使用(以dom4j为例)和升级(以极光推送为例) █ 读前说明: - ● 本文通过学习别人 ...

  5. APP性能监测工具之友盟的 U-APM产品入门使用

    前言: 最近公司做了一款新的APP,要求能够看到用户每天的新增量和活跃量,还有一些页面的点击量.停留时间等的监测,还有更重要的一点就是能够监测到app的异常情况.于是开始对第三方工具开始一番研究,对比 ...

  6. Spark Streaming + Elasticsearch构建App异常监控平台

    本文已发表在<程序员>杂志2016年10月期. 如果在使用App时遇到闪退,你可能会选择卸载App.到应用商店怒斥开发者等方式来表达不满.但开发者也同样感到头疼,因为崩溃可能意味着用户流失 ...

  7. Spark Streaming + ES构建美团App异常监控平台

    如果在使用App时遇到闪退,你可能会选择卸载App.到应用商店怒斥开发者等方式来表达不满.但App开发者也同样感到头疼,因为App Crash(崩溃)可能意味着:用户流失.营收下滑.为了降低崩溃率,进 ...

  8. 设计师的十大难题之一 ——如何选择一款好的APP原型设计工具

    现在的移动开发越来越趋于小规模团队协作,似乎只要懂得一些APP开发的人就自称了解了用户体验和用户界面的重要性,一个好的APP原型设计理念很容易被糟糕的界面和体验毁于一旦,如今市面那么多的原型工具帮助我 ...

  9. APP稳定性测试工具monkey

    monkey简介 monkey是一款APP的自动化测试工具,monkey是猴子的意思,所以从原理上说,它的自动化测试就类似猴子一样在软件上乱敲按键,猴子什么都不懂,就爱搞乱,monkey原理也是类似, ...

  10. axt测试软件,【测试工具】这些APP实用测试工具,不知道你就out了!

    本期,我将给大家介绍14款实用的测试工具,希望能够帮到大家!(建议收藏) UI自动化测试工具 1. uiautomator2 Github地址:https://github.com/openatx/u ...

最新文章

  1. 以及其任何超类对此上下文都是未知的_浏览器原理系列 - JS执行上下文详解(一):作用域
  2. 游戏编程设计模式-state
  3. sqlplus环境配置(login.sql)
  4. java 保留html_好程序员Java培训分享Java包是什么?
  5. [转载]网络编辑必知常识:什么是PV、UV和PR值 zz
  6. 5.FreeRTOS学习笔记- 互斥量
  7. Redis在Java项目中的依赖
  8. sql server2000远程访问
  9. android 校验手机号码,检查Android中的有效手机号码
  10. PMP 备考指南之计算题汇总
  11. 如何将webp格式转换成png?
  12. 百度网盘目录搜索引擎上线了 百度网盘目录搭建系统
  13. Window 配置RabbitMQ
  14. IDEA的配置文件乱码
  15. 会员卡券领取 小程序_新增卡券功能在哪 微信小程序内直接领取卡券方法
  16. 工控协议(二):Modbus TCP/IP 学习笔记
  17. System.Data.SqlClient.SqlError: 备份集中的数据库备份与现有的 '***' 数据库不同。 (Microsoft.SqlServer.Smo)
  18. Linux常用基本命令大全
  19. 文理学院的数学计算机方向夏校,【陈老师说】计算机名校冲刺计划
  20. 多链跨链、高可用、高安全性的区块链应用如何落地? 金链盟大赛10强揭晓

热门文章

  1. connect to address IP: No route to host
  2. 技能高考计算机专业考什么,2016年技能高考计算机专业考试总结
  3. Noip 2016 蛋碎一地晚节不保
  4. golang binding tag
  5. Dubbo整合Nacos
  6. 简单网络管理协议SNMP通讯基础篇-熊健-专题视频课程
  7. performSelector延时调用导致的内存泄露
  8. 2019年大学计算机二级考试报名,南通职业大学2019年秋季计算机二级考试报名通知...
  9. 基于草图的图像检索的文献综述
  10. 网站SEO过程中的死链处理