什么是符号表?
第一种:so符号表
符号表是内存地址与函数名、文件名、行号的映射表。符号表元素如下所示:
<起始地址> <结束地址> <函数> [<文件名:行号>] 对于native crash,为了能快速并准确地定位用户APP发生Crash的代码位置,Bugly使用符号表对APP发生Crash的程序堆栈进行解析和还原。 举一个例子:
第二种:mapping文件
mapping文件用于对混淆后的代码进行还原,
流程如下:
1 下载符号表工具
2 在终端中 cd 到buglyqq-upload-symbol.jar所在文件目录
C:\Users\hp-pc>cd /d d:
D:\>cd D:\tools\buglyqq-upload-symbol
3 执行命令
java -jar buglyqq-upload-symbol.jar -appid <APP ID>
-appkey<APP KEY>
-bundleid <App BundleID>
-version <App Version>
-platform <App Platform>
-inputSymbol <Original Symbol File Path>
-inputMapping <mapping file>
-appid 在bugly.qq.com上产品对应的appid
-appkey 在bugly.qq.com上产品对应的appkey
-bundleid Android平台是包名、iOS平台叫bundle id
-version App版本号 (PS:注意版本号里不要有特殊字符串,比如( ),不然运行可能会报错)
如果上报包含mapping文件,那么此处的版本号必须和要还原的堆栈所属的app的实际版本号一致,因为一个版本下的App是对应唯一的mapping.txt,不对齐则无法还原对应的堆栈。具体的版本号可以参考bugly.qq.com上堆栈信息。
-platform 平台类型,当前支持的三个选项 分别是 Android、IOS,注意大小写要正确。
--inputSymbol原始符号表[dsym、so]所在文件夹目录地址,如果是Android平台同时包含mapping和so,此处输入两个原始符号表存储的共同父目录。
-inputMapping mapping所在文件夹目录地址[Android平台特有,ios忽略]
最终如下:
java -jar buglyqq-upload-symbol.jar -appid 696f2da383 -appkey 2520dc0b-93ae-4237-b92f-0c9040cd0dbf -bundleid com.qdsg.ysg.doctor -version 1.2.2 -platform Android -inputSymbol D:\zhengcheng\appfordoctor_android\app\build -inputMapping D:\zhengcheng\appfordoctor_android\app\build\outputs\mapping\release
执行命令行结果:
代表成功,这样签名包混淆之后也可以看到详细的bug日志了