iOS如何配置Bugly符号表(2020年最新)

本文将粗略的讲解 Bugly 的集成过程, 其中配置符号表部分会说的仔细一点

符号表就是内存地址与函数名, 文件名, 行号的映射表. 通过上传符号表, 我们能将 App 发生 Crash 的程序堆栈进行解析还原.

Bugly 是我在用的一个崩溃日志收集分析工具. 集成使用简单并且免费.
之前一直使用Xcode + sh方式自动配置符号表, 直到有一天看到 crash 堆栈没有被解析, 才知道这个方法已无法上传符号表. 上网找过一些解决方法, 大致就是找到符号表后延迟以后再上传, 但也没什么效果. 随后再上官网查看文档, 使用官方手动配置的方法, 成功的上传了符号表和解析堆栈.

创建应用

官网 创建产品.
创建成功后获取应用的 App ID

集成

使用Cocoapods集成
pod 'Bugly'

初始化 SDK

在工程AppDelegate.mapplication:didFinishLaunchingWithOptions:方法中初始化:

1
2
3
4
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[Bugly startWithAppId:@"此处替换为你的AppId"];
return YES;
}

手动配置符号表

下载 最新版 请点击我这个连接去下载, 这个是 3.0.0 版本的.

包里面有几个文件:

  • buglySymboliOS.jar: 符号表工具JAR包
  • buglySymboliOS.bat: Windows的脚本
  • buglySymboliOS.sh: Shell脚本
  • settings.txt: 默认符号表配置文件
  • 符号表工具iOS版-使用指南

运行需要Java 运行环境 (JRE􏲀JDK􏰅􏱺􏱿􏰎>=1.6)
使用脚本时, 请保证脚本和 jar 包在同个目录下!

获取 dSYM 文件

iOS 平台中, 􏲜􏲝􏲐􏱓dSYM 文件是指具有调试信息的目标文件, 文件名通常为: dSYM􏰔􏰕􏰫􏰈􏰄􏰳􏲁􏲂􏲃􏲄􏰞􏲅􏲆􏰔􏰕􏱓􏰔􏰕􏲡􏰻􏳋􏱈􏱣xxx.app.dSYM
我使用下面的方式来找到它:




将最后的 dSYM 文件拷贝出来一份集中备份

dSYM 的符号表生成和上传

  • 生成

我使用下面的方式来生成和上传 dSYM 文件

1
2
cd /Users/dqh/Desktop/buglySymboliOS3.0.0
java -jar buglySymboliOS.jar -i /Users/AAAA_1.0.15.app.dSYM -u -id 123456 -key 123456-2608-4a57-8af8-ff9c4d481f3e -package com.kikido.youappname -version 1.3.5

你需要更改以下选项信息:

  • i /Users/AAAA_1.0.15.app.dSYM: 更改为 [i 自己 dSYM 文件存放的地址]
  • id 123456: 更改为 [id 你自己在 Bugly 申请到的 apple id]
  • key 123456-2608-4a57-8af8-ff9c4d481f3e: 更改为 [key 你自己在 Bugly 申请到的 apple key]
  • package com.kikido.youappname: 更改为 [package 你自己 app 的 bundle id]
  • version 1.3.5: 更改为 [version 你自己 app 的 version]

工具选项说明如下

选项 说明
-i 指定文件路径, 可指定目录(必选)􏰈􏰭􏰔􏰕􏲯􏲰􏱓􏲇􏰈􏰭􏲅􏲒􏱪􏲟􏰡􏱫􏰈􏰭􏰔􏰕􏲯􏲰􏱓􏲇􏰈􏰭􏲅􏲒
-o 􏲱􏲲􏰞􏰀􏰁􏰂输出的符号表 zip 文件的路径, 必须是 zip 文件
-d 调试模式开关(默认关闭)
-s 指定配置文件(默认读取 JAR 目录下的 settings.text 文件)
-u 上传开关
-id app id
-key app key
-package app 包名
-version app 版本
-symbol 生成 symbol 文件

更多信息请查看符号表工具iOS版-使用指南.pdf

使用上面的命令之后就会在本地生成符号表文件, 并上传到符号表.

上传成功

下面是 crash 的堆栈解析, 完美

作者

千行

发布于

2020-04-20

更新于

2022-10-21

许可协议

评论