Android混淆后的bug日志通过mapping文件找对应行号
背景
由于项目中提测以及线上的apk都是经过混淆处理的,因此拿到日志后也无法正常查看崩溃日志的行号
这个原因是因为混淆了文件,输出的日志是对应不上源文件的,为了正确找到行号需要用到mapping.txt文件
配置开启保留行号和源文件
要想利用mapping文件找到对应的行号,则还需要在混淆文件中配置开启保留行号和源文件
这个其实默认是注释的直接放开注释的 这个要是不放开还是会
# Uncomment this to preserve the line number information for
# debugging stack traces.
-keepattributes SourceFile,LineNumberTable
这个要是没加上就算通过mapping找也会找不到对应的行号
使用proguard工具
先说下mapping文件这个,打包的时候会在bulid目录产生,每次打包发布记得保留好这个文件做好版本记号,方便排查
这个需要用到proguard工具了,sdk就带有这个工具了。前往sdk的目录/Android/sdk/tools/proguard/bin
目录,目录下的文件如下,mac所以文件后缀是sh,windows对应的后缀是bat,无论哪个系统双击proguardgui
就行了
执行后会开启一个工具,点击ReTrace,选好mapping文件,填入carsh日志信息,点击ReTrace按钮。就会看到解析的结果
- 解析发现行号还是错误的不是正确的,这个时候就无语了。
- 这回只需要去下载proguard的最新版就好了 github 找个稳定的版本就行了
- 下载完成解压出来
和上面操作步骤一样mac打开proguardgui.sh,windows打开proguardgui.bat
到此就正确找到carsh的行号了
Android混淆后的bug日志通过mapping文件找对应行号的更多相关文章
- 重启eclips后启动项目出现监听文件找不到
重启eclips后启动项目出现监听文件找不到 问题: 重启eclips后启动项目出现Error configuring application listener of class com.thinkg ...
- Android 混淆后的代码调试
ProGuard的输出文件及用处 混淆之后,会给我们输出一些文件,在gradle方式下是在<project_dir>/build/proguard/目录下,ant是在<project ...
- Oracle 11.2.0.1的又一个隐藏在ORA-03113后的bug: 通信通道的文件结尾
近期又一个项目反馈ORA-03113错误: 通信通道的文件结尾.(jdbc程序报出的错误是:无法从套接字读取更多的数据) 发送之前处理过类似问题的解决方法(http://www.cnblogs.com ...
- android混淆那些事
写给Android开发者的混淆使用手册 综述 毫无疑问,混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆. 首先,这里说的的混淆其实是包括了代码压缩.代码混淆以及 ...
- Android混淆那些事儿
博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 博客园:追风917 # Android混淆 Android混淆是Android开发者经常使用的一种用于代码防止被反编译的 ...
- SQL 分组后取最小行号记录
本示例测试两个表联接查询后,分组并取分组后的最小行号记录 测试表: tb1表结构如下: CREATE TABLE [dbo].[tb1]( ) NOT NULL, ) NULL, ) NULL, CO ...
- Android Studio 1.2.2设置显示行号
Android Studio设置显示行号的方法与Eclipse有少许差别,直接在代码中右键,弹出右键菜单是没有显示行号功能的. 在Android Studio中设置方法有二: 1.临时显示行号 在单个 ...
- Nginx 安装及配置、负载均衡https网站及转发后页面js、css等路径找不到问题、更换证书导致问题解决
官网下载nginx:http://nginx.org/en/download.html 安装nginx编译环境:yum install -y gcc-c++ 安装pcre库解析正则:yum insta ...
- 我的Android进阶之旅------>解决Jackson等第三方转换Json的开发包在开启混淆后转换的实体类数据都是null的bug
1.错误描述 今天测试人员提了一个bug,说使用我们的app出现了闪退的bug,后来通过debug断点调试,发现我们的app转换服务器发送过来的json数据后,都是为null.而之前已经提测快一个月的 ...
- Android:如何从堆栈中还原ProGuard混淆后的代码
本文翻译自Android: How To Decode ProGuard's Obfuscated Code From Stack Trace 本篇文章是写给那些在他们的应用中使用ProGuard并且 ...
随机推荐
- 源代码安装Nginx和PHP
源代码安装Nginx和PHP 一.安装前准备: 有些工具在安装Nginx必备.譬如gcc用来编译C程序,gcc-c++ 用来编译C++程序,wget用来从网络下载文件. [root@localhost ...
- P6824 「EZEC-4」可乐 题解
题目链接:可乐 一开始想着 0-1 Trie,枚举 \(x\) 去写,然后判断就行了.然后想起南京区域赛的 C 题,其实和这个也有点大同小异的感觉,可以用更朴素的办法,找到对于一个 \(a_i\) 而 ...
- JuiceFS 新手必知 24 问
JuiceFS 是一个创新性的软件产品,很多初次尝试的小伙伴对产品和用法感到很多疑惑,所以为了帮助大家快速理解并上手 JuiceFS,我们整理了24个关于 JuiceFS 经典的问题答案,相信经过这 ...
- 初步上手Git软件及GitHub平台:基本操作方法
本文介绍Git软件与GitHub平台的基本内容.使用方法与应用场景等. 目录 1 初步介绍 2 使用方法 2.1 GitHub配置 2.2 Git配置 2.3 代码上传至GitHub 1 初步介绍 ...
- 哈希表(HashMap)与字符串哈希
哈希表 哈希表是一种通过映射来快速查找的数据结构.其通过键值对(key-value)来存储.一个数据通过哈希函数的运算来生成一个属于他自己的键值,尔后将其与键值绑定.当我们想查找这个数据时,就可以直接 ...
- 关于Delphi TabOrder 更快捷的设置 方法
今天才发现 delphi IDE 有设置 TabOrder 的 更加 快捷的方法,以前 总觉的 设计 起来 好麻烦.现在 终于 解放了.... ---------------------------- ...
- TDD学习笔记(二)单元测试
单元测试 定义 单元测试最早来源于Kent Beck,他在开发SmallTalk中引入了这个概念,随着软件工程学的不断发展,使得单元测试已经成为软件编程中一项非常有用的实践. 在维基百科中," ...
- NC204871 求和
题目链接 题目 题目描述 已知有 \(n\) 个节点,有 \(n-1\) 条边,形成一个树的结构. 给定一个根节点 \(k\) ,每个节点都有一个权值,节点i的权值为 \(v_i\) . 给 \(m\ ...
- QT & C++笔记
语法 变量声明 直接声明的变量, 其赋值操作会产生值拷贝, 例如 QString b("some text"); QString a(b); int a = 10; int b = ...
- spring boot+bootstrap实现动态轮播图实战
1.bootstrap轮播图 最近开发了个网站需要用到轮播图,正好前端用的是Bootstrap,这里就实战一下. 水平一般能力有限,仅供参考. 前提条件: bootstrap4.5 jquery 3张 ...