Bugly使用篇之Java错误堆栈还原

前言

前面介绍了 Android混淆代码错误堆栈还原,相信大家已经知道如何通过Retrace在本地进行混淆代码还原了,上一篇提到,如果崩溃异常很多,你总不能一个一个去手动还原吧,不觉得这样做很没有效率么,有没有想过如果能实现线上监控崩溃并且能上传mapping文件进行快速还原,而不需要自己手动去做这样的一件事?没错,Bugly就是这样的一个平台,可以很方便快捷实现你这样的需求,能帮助到你提高开发效率,更加敏捷。本篇文章就跟大家分享如何使用Bugly进行错误堆栈还原。

集成Bugly

关于如何集成Bugly SDK这里不详细说明,可以到官网查看我们的SDK使用指南

前面我也写过一篇文章快速集成Bugly Android SDK,可以参考下。

Bugly混淆配置

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

# 保留源文件名及行号
-keepattributes SourceFile,LineNumberTable

mapping文件

Android混淆代码错误堆栈还原,这篇文章已经说过mapping文件生成的目录,它主要用来对于我们混淆过后的代码进行还原,里面列出了原始的类,方法和字段名与混淆后代码间的映射。可以举个例子:

可以通过这个映射表知道我们编写的代码大致会被混淆成什么样子,我们每次发布一个版本最好要保留一份Release版的mapping文件,这样我们就可以针对不同的版本进行还原,也能更好的定位问题。

线上还原

通过集成我们Bugly SDK,就能在线上监控你的app的崩溃情况,一有崩溃发生就会上报到平台,我们制造一个Crash,看它在Bugly平台的表现:

在崩溃分析可以看到Demo上报的一条异常,而这个异常的代码是被混淆过后的,这时我们需要对它进行还原。点击异常进入异常详情页,找到符号表并上传:

上传成功之后,我们刷新页面就可以看到解析的结果:

以后在这个版本出现的异常都能通过这个mapping文件进行堆栈还原了。

这里有个问题,每次都要上传mapping文件会不会很麻烦,能不能实现自动上传符号表?当然可以,Bugly早已帮你实现自动上传符号表的插件,详情的话看符号表配置

总结

对代码进行混淆可以减少被破解的风险,也能达到对代码优化的作用,但如果发生了崩溃了就比较难定位问题,不过android中可以通过mapping文件进行反推,人工来做这件事的话会比较费时,所以使用Bugly能够让用户上传mapping文件来进行线上还原无疑是减少了开发同学的工作量,也能更有效的定位问题,因为不仅仅只是堆栈哦,也提供了很多辅助信息能帮组到开放同学解决问题。没有试过的同学,赶紧试试吧,老是崩溃的程序会影响产品的口碑,自然也影响你的升职加薪,不信的话,就试试吧,哈哈。

查看原文,可以点击链接。

原文发布于微信公众号 - 小巫技术博客(wwjblog)

原文发表时间:2016-09-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JMCui

Ant + Jenkies +Tomcat 自动构建部署Web项目

前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkies + Ant + T...

42590
来自专栏逍遥剑客的游戏开发

UE4源码Build上传Perforce

43440
来自专栏java一日一条

SSH框架总结

首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于...

21240
来自专栏刘君君

Rest Notes-REST架构的视图

18540
来自专栏cloudskyme

企业级集成和ESB

ESB是什么? ESB是一个主要依赖XML消息交换的企业级消息系统,这种消息继而被智能的通过一种非集中式的架构路由和转换。 开源的ESB? Mule,Servi...

59770
来自专栏沃趣科技

Pod挂载Volume失败问题分析

Kubernetes环境偶尔出现Statefulset中的Pod被删除,新启动的Pod(还是调度到原有节点)挂载volume失败的问题,如下图,经过一番定位分析...

34430
来自专栏全华班

springcloud学习手册-Eureka(第一节)

导读 |Springcloud Eureka 服务治理 一、服务治理:Springcloud Eureka Eureka是springcloud Netfli...

42660
来自专栏云计算教程系列

如何在CentOS 7上设置Jenkins以进行持续开发集成

合并代码、协调发布、确定构建状态、维护更新。如果你足够了解这些过程的挫败感,这些话本身就会让人头疼,你可能想看看Jenkins CI。

29510
来自专栏zhisheng

日志工具现状调研

  针对这类问题,对当前java比较流行的一些日志工具进行了调研,以期能够在未来的开发使用中做到全组代码风格统一,日志写得好对于我们开发调试,线上问题追踪等都有...

20120
来自专栏DT乱“码”

EhCache和memcached介绍

EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。 Ehcache是一种广泛使用的...

22870

扫码关注云+社区

领取腾讯云代金券