当线上应用出现问题,我们为了能快速找到用户使用时候的异常崩溃信息,那么我们可以使用腾讯的Bugly来搜集异常信息,下面就简单记录下Bugly的简单自动集成方式:

首先是去Bugly官网注册新账号,使用QQ登录,然后完善开发者信息,之后创建应用

Bugly支持JCenter仓库和Maven Central仓库。为了实现更加灵活的配置,Bugly SDK(2.1.5及以上版本)和NDK(SO库)目前已经分开成两个独立的仓库:

  • SDK:com.tencent.bugly:crashreport
  • NDK:com.tencent.bugly:nativecrashreport

其中,集成Bugly NDK时,需要同时集成Bugly SDK。

下面是Bugly的SDK集成:

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

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

如果同时集成SDK和NDK

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

android {defaultConfig {ndk {// 设置支持的SO库架构abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'}}
}dependencies {compile 'com.tencent.bugly:crashreport:latest.release' //其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.1.9compile 'com.tencent.bugly:nativecrashreport:latest.release' //其中latest.release指代最新Bugly NDK版本号,也可以指定明确的版本号,例如3.0
}

后续更新Bugly SDK和NDK时,只需变更配置脚本中的版本号即可。

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" />
<uses-permission android:name="android.permission.READ_LOGS" />

3、简单的初始化

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

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

第三个参数为SDK调试模式开关,调试模式的行为特性如下:

  • 输出详细的Bugly SDK的Log;
  • 每一条Crash都会被立即上报;
  • 自定义日志将会在Logcat中输出。

建议在测试阶段建议设置成true,发布时设置为false。

增加上报进程控制

如果App使用了多进程且各个进程都会初始化Bugly(例如在Application类onCreate()中初始化Bugly),那么每个进程下的Bugly都会进行数据上报,造成不必要的资源浪费。

因此,为了节省流量、内存等资源,建议初始化的时候对上报进程进行控制,只在主进程下上报数据:判断是否是主进程(通过进程名是否为包名来判断),并在初始化Bugly时增加一个上报进程的策略配置。

Context context = getApplicationContext();
// 获取当前包名
String packageName = context.getPackageName();
// 获取当前进程名
String processName = getProcessName(android.os.Process.myPid());
// 设置是否为上报进程
UserStrategy strategy = new UserStrategy(context);
strategy.setUploadProcess(processName == null || processName.equals(packageName));
// 初始化Bugly
CrashReport.initCrashReport(context, "注册时申请的APPID", isDebug, strategy);
// 如果通过“AndroidManifest.xml”来配置APP信息,初始化方法如下
// CrashReport.initCrashReport(context, strategy);

其中获取进程名的方法“getProcessName”有多种实现方法,推荐方法如下:

/*** 获取进程号对应的进程名* * @param pid 进程号* @return 进程名*/
private static String getProcessName(int pid) {BufferedReader reader = null;try {reader = new BufferedReader(new FileReader("/proc/" + pid + "/cmdline"));String processName = reader.readLine();if (!TextUtils.isEmpty(processName)) {processName = processName.trim();}return processName;} catch (Throwable throwable) {throwable.printStackTrace();} finally {try {if (reader != null) {reader.close();}} catch (IOException exception) {exception.printStackTrace();}}return null;
}

这样就完成了Bugly的简单自动集成,一旦有异常崩溃信息,就可以去Bugly平台上查看了。

Android之远程查看异常崩溃信息——腾讯Bugly的自动集成相关推荐

  1. Android热修复之 - 收集崩溃信息上传服务器

    1.概述 大致的流程就是在用户崩溃的时候,我们获取崩溃信息.应用当前的信息和手机信息,然后把它保存到手机内存卡,再找我就直接找出来看看.后来衍生到上线后某些奇葩机型会有部分问题,所以不得不上传到服务器 ...

  2. android studio try catch自动生成,Android Studio:Try-catch异常崩溃了应用程序

    我正在测试代码中的一些漏洞,并尝试通过在用户输入无效时抛出异常来修复它们.现在当我实现try-catch并在我的手机上运行应用程序时,当我输入无效输入时它会崩溃. 我认为我的代码没有从addData方 ...

  3. Android 捕获主线程异常崩溃

    一般情况下我们想要捕获全局异常会调用Thread.setDefaultUncaughtExceptionHandler方法:这个方法虽然能捕获所有线程的异常,但如果是主线程发生未捕获异常,APP虽然不 ...

  4. Android平台异常崩溃捕捉处理

    原文:https://blog.csdn.net/leeo1010/article/details/50522892 在我们Android开发的过程中,经常碰到app崩溃的状况.目前市面上各种各样的手 ...

  5. 腾讯Bugly 集成( Android SDK)

    年前交付的一个项目,年后客户反馈有的手机运行APP后崩溃,其他手机运行正常.项目中在打开webview加载一个H5页面时出现崩溃,客户反映出现bug的手机是android8.2.0系统的.查过相关资料 ...

  6. Android笔记 - 如何避免ActivityNotFound异常,查看Activity堆栈信息,获取进程名

    1.android中查看是否有能够打开intent的Activity android中查看是否有能够打开intent的Activity方式有三种(如果没有打开intent的Activity,会报错Ac ...

  7. Android 异常崩溃日志,捕捉并保存到本地

    Android 异常崩溃日志,捕捉并保存到本地: 前几天因为在省公安厅做一个通讯类之类的应用:碰到个问题,就是download人员信息将信息保存到本地数据库完成的时候,菊花转还没有dismission ...

  8. android 多线程 崩溃,Android异常崩溃捕获

    Android系统碎片化造成应用程序崩溃严重,在模拟器上运行良好的程序安装到某款手机上说不定就会出现崩溃的现象.而且,往往都是程序发布之后在用户端出现了崩溃现象.所以在程序发布出去之后,如果出现了崩溃 ...

  9. 服务器上出现应用程序错误。此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因)。未能加载文件或程序集“XXXXXX”或它的某一个依赖项。拒绝访问。

    前景:服务器在本地的VS编辑器运行起来正常,但是部署上就会报错. 我开发的这个项目,是因为后台要对客户端前台上传的Excel表进行操作,所以才会出现以下问题,在这之前, IIS服务器会要求把项目网站对 ...

  10. android 捕捉 异常 崩溃 捕捉 crash

    转载时请记得标明源地址:http://my.oschina.net/lijindou/blog demo  的 源码 地址:http://pan.baidu.com/s/1mhDsJqg 大家应该 知 ...

最新文章

  1. 微软10月起将向安全厂商提前告知安全补丁内容
  2. Docker源码分析(一):Docker架构
  3. bzoj1715[Usaco2006 Dec]Wormholes 虫洞
  4. php udp发送和接收_63、php利用原生socket创建udp服务
  5. PostgreSQL 范围过滤 + 其他字段排序OFFSET LIMIT(多字段区间过滤)的优化与加速
  6. comsenzexp mysql密码_ComsenzEXP X3
  7. 【软件应用】word等office软件中好用的数学公式编辑器插件
  8. 【unity】学习之路
  9. RDLC报表金额数字转大写
  10. 南京建邺、秦淮等7个区公布校外培训机构白名单
  11. STM32入门-学习STM32要掌握的内容
  12. localhost:8080打不开原因解决方法
  13. java百度文库_java 常见异常 (百度文库)
  14. 彻底卸载2345王牌输入法的方法
  15. 美团NLP以及知识图谱文章提炼
  16. DIP依赖反转原则——实现松耦合的设计
  17. 西门子1200跟V90伺服总线通讯②_设置PLC
  18. 《地理信息系统基础实例操作100例》-实验15 设置字段属性域(无法创建要素问题)
  19. 使用 FFmpeg 批量转换视频格式 mp4转ts(bat命令行)
  20. iOS 开发快速生成APP图标

热门文章

  1. android ipad 播放器,[AS3]专业级跨平台网页播放器支持PC、iPad、iPhone、Android系统...
  2. JavaScript(JS)的简单了解
  3. 【数据库原理】函数依赖 平凡依赖 非平凡依赖 完全函数依赖 部分函数依赖 传递函数依赖
  4. java print快捷键_请问eclipse中输出的快捷键是什么?
  5. 可以弹奏的钢琴页面(HTML实现)
  6. HDU5442(字符串的最大表示法或者后缀数组)
  7. OpenStack之Live-migration
  8. 乐嘉性格色彩-4色特性,学习感悟
  9. 两台路由器直连服务器需要怎么配置,设置串联两台无线路由器的方法步骤
  10. 2021机动车检测站签字授权人考试专业基础知识部分题库与答案