背景

由于项目中提测以及线上的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文件找对应行号

Android混淆后的bug日志通过mapping文件找对应行号的更多相关文章

  1. 重启eclips后启动项目出现监听文件找不到

    重启eclips后启动项目出现监听文件找不到 问题: 重启eclips后启动项目出现Error configuring application listener of class com.thinkg ...

  2. Android 混淆后的代码调试

    ProGuard的输出文件及用处 混淆之后,会给我们输出一些文件,在gradle方式下是在<project_dir>/build/proguard/目录下,ant是在<project ...

  3. Oracle 11.2.0.1的又一个隐藏在ORA-03113后的bug: 通信通道的文件结尾

    近期又一个项目反馈ORA-03113错误: 通信通道的文件结尾.(jdbc程序报出的错误是:无法从套接字读取更多的数据) 发送之前处理过类似问题的解决方法(http://www.cnblogs.com ...

  4. android混淆那些事

    写给Android开发者的混淆使用手册 综述 毫无疑问,混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆. 首先,这里说的的混淆其实是包括了代码压缩.代码混淆以及 ...

  5. Android混淆那些事儿

    博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 博客园:追风917 # Android混淆 Android混淆是Android开发者经常使用的一种用于代码防止被反编译的 ...

  6. SQL 分组后取最小行号记录

    本示例测试两个表联接查询后,分组并取分组后的最小行号记录 测试表: tb1表结构如下: CREATE TABLE [dbo].[tb1]( ) NOT NULL, ) NULL, ) NULL, CO ...

  7. Android Studio 1.2.2设置显示行号

    Android Studio设置显示行号的方法与Eclipse有少许差别,直接在代码中右键,弹出右键菜单是没有显示行号功能的. 在Android Studio中设置方法有二: 1.临时显示行号 在单个 ...

  8. Nginx 安装及配置、负载均衡https网站及转发后页面js、css等路径找不到问题、更换证书导致问题解决

    官网下载nginx:http://nginx.org/en/download.html 安装nginx编译环境:yum install -y gcc-c++ 安装pcre库解析正则:yum insta ...

  9. 我的Android进阶之旅------>解决Jackson等第三方转换Json的开发包在开启混淆后转换的实体类数据都是null的bug

    1.错误描述 今天测试人员提了一个bug,说使用我们的app出现了闪退的bug,后来通过debug断点调试,发现我们的app转换服务器发送过来的json数据后,都是为null.而之前已经提测快一个月的 ...

  10. Android:如何从堆栈中还原ProGuard混淆后的代码

    本文翻译自Android: How To Decode ProGuard's Obfuscated Code From Stack Trace 本篇文章是写给那些在他们的应用中使用ProGuard并且 ...

随机推荐

  1. ElasticSearch7.3学习(四)----结合Spring boot进行增删改查和批量(bulk)详解

    1.前置 java api 文档 https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.3/java-rest-overvi ...

  2. Hive中insert into 和 insert overwrite的区别

    相同点 insert into 和 insert overwrite 都是往表中插入数据的. 不同点 区别1: insert into :其实是将数据追加到表的末尾,注意:不是覆盖,是追加. inse ...

  3. PAC主成分分析__784手写特征案例

    from sklearn.neighbors import KNeighborsClassifier as KNN from sklearn.decomposition import PCA from ...

  4. Java并发编程-CompletableFuture(下)

    大家好,我是小高先生,书接上文,我们继续来学习CompletableFuture.上文我们讲了基础装Future是如何升级为神装CompletableFuture以及如何购买CompletableFu ...

  5. JS实现一个布隆过滤器

    之前专门聊过令牌桶算法,而类似的方案还有布隆过滤器.它一般用于高效地查找一个元素是否在一个集合中. 用js实现如下所示: class BloomFilter { constructor(size, h ...

  6. NC20277 [SCOI2010]字符串

    题目链接 题目 题目描述 lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数.现在lxhg ...

  7. 端口碰撞Port Knocking和单数据包授权SPA

    端口碰撞技术 Port knocking 从网络安全的角度,服务器开启的端口越多就越不安全,因此系统安全加固服务中最常用的方式,就是先关闭无用端口,再对提供服务的端口做访问控制.而作为远程管理与维护的 ...

  8. 【Unity3D】UGUI之Image和RawImage

    1 纹理(Texture) ​ Image 控件和 RawImage 控件都是承载渲染图片的控件,都需要指定一个纹理(Texture)图片.在 Assets 窗口选中一张图片,在 Inspector ...

  9. 基于keras的卷积神经网络(CNN)

    1 前言 本文以MNIST手写数字分类为例,讲解使用一维卷积和二维卷积实现 CNN 模型.关于 MNIST 数据集的说明,见使用TensorFlow实现MNIST数据集分类.实验中主要用到 Conv1 ...

  10. Direct2D CreateBitmap的使用

    当需要设置位图的混合模式时,应该使用ID2D1DeviceContext而不是ID2D1RenderTarget. 代码如下: #define WIN32_LEAN_AND_MEAN #include ...