跳到主要内容

符号表管理

Android符号化

Java符号表工具使用及上传

基调听云SDK 提供了两种方式上传mapping文件。

  • 通过报表上传
  • 通过tingyun.properties文件自动上传

通过报表上传Mapping文件

  1. 登录基调听云报表,选中异常分析模块,点击崩溃卡片,在「崩溃列表」右上角单击符号表管理

  2. 找到对应版本,并上传本地 Mapping文件即可。

    符号表上传默认按照应用版本的数据接收时间进行排序,支持根据应用版本进行检索,一个版本支持上传多个文件。

通过tingyun.properties文件自动上传

通过tingyun.properties文件自动上传Mapping文件,SDK需要 2.15.7 及以上版本。

说明:若您的项目不存在「tingyun.properties」文件,需在项目app目录及根目录下新建该文件。

  1. 在tingyun.properties 文件中配置。

    uploadAddress=*基调听云登录报表的主域名(例如:https://wukong2.tingyun.com)*
    appKey=*基调听云AppKey*
    mapping_file_auto_upload=true
  2. 开启混淆器。

    mapping_file_auto_upload控制开关只有在启用混淆器的时候才会生效,开启控制开关后,基调听云SDK会将本地目录下的mapping文件自动上传到基调听云服务器。若未开启混淆器则该配置项不生效。

Native符号表工具使用及上传

为了能快速并准确地定位应用发生 Native Crash 的代码位置,基调听云使用符号表文件对应用崩溃堆栈进行解析和还原。

原堆栈

还原后堆栈:

符号表提取要求

符号表工具 nbs.newlens.so.parser.jar,是基调听云App提供给开发者提取符号表文件的工具。提取符号表需要符号表工具和Debug SO文件(具有调试信息的SO文件)。SDK 默认会在编译 release 版本时自动在项目根目录 tingyun 文件夹中生成符号表文件。您也可以使用符号表工具手动生成符号表文件。

工具选项

选项说明
-i指定so文件夹路径

生成符号表文件

使用符号表工具的JAR包生成符号表文件的命令如下:

java -jar nbs.newlens.so.parser.jar -i E:\JNIDemo\jniLibs //指定目录

生成的符号表文件 NewlensSymbol.zip 位于符号表工具目录下。

注意:基调听云上传符号表文件仅支持zip 格式,-i 参数请指定生成SO文件夹的路径。该路径一般默认为app\build\intermediates\cmake\debug\obj,也可以通过CMakeLists.txt文件配置输出到其他目录。

上传符号表

Native符号表文件目前只支持报表上传。

  1. 登录基调听云报表,选中异常分析模块,点击崩溃卡片,在「崩溃列表」右上角单击符号表管理

  2. 选择Native symbol页签,单击选择文件上传NewlensSymbol.zip即可。

iOS符号化

查找符号表

  1. 找到工程的.xcarchive文件,然后右选择“Show in Finder”进入文件目录。

  2. 右击“.xcarchive”文件,选择“显示包内容”。

  3. 选择对应的“.app.dSYM”文件,如:"HelloWorld.app.dSYM",右击"显示包内容"。

    注意:下图标注部分为符号表文件,上传时请上传该文件而不是xxx.app.dSYM这个目录。

通过脚本上传符号表文件

通过Xcode + sh脚本上传符号表文件,操作步骤如下。

  1. 将解压后SDK包中tingyun.sh的内容粘贴到上图中shell下方的位置。

  2. 配置好上图中对应的APP_KEY和UPLOAD_URL。

  3. 在Input Files中添加:

    • 若调用以下接口,需在脚本中将VERSION的值改成与接口设置的versionName一致。

      (void)setVersionName:(NSString *)versionName;
    • 若调用以下接口且useBuildVersion为YES时,需在脚本中将VERSION的值改成与CFBundleVersion版本号一致(xcode->General->Identity->Build)。

       +(void)startWithAppID:(NSString*)appId location:(BOOL)locationAllowed rateOfLaunch:(double) rate channelId:(NSString *)channelId useBuildVersion:(BOOL)useBuildVersion;

通过报表上传符号表文件

  1. 登录基调听云报表,选中异常分析模块,点击崩溃卡片,在下方的「崩溃列表」右上角单击符号表管理

  2. 在弹出窗口中在对应的应用版本号右侧单击添加按钮,再点击底部的选择文件按钮,手动上传符号表。如下图所示:

通过命令行上传符号表

  • 打开终端,进入HelloWorld符号表的目录,即HelloWorld.app.dSYM/Contents/Resources/DWARF,输入如下命令:

    curl -k -F file=@HelloWord -F buildVersion=CFBundleVersion -F shortVersion=CFBundleShortVersionString UPLOAD_URL/app-api/symbol/appkey/APP_KEY
  • 命令行参数配置:

    HelloWorld : 符号表名称
    CFBundleShortVersionString : 主版本号(xcode->General->Identity->Version)
    CFBundleVersion : build版本号(xcode->General->Identity->Build)
    UPLOAD_URL : 基调听云登录报表的主域名(例如:https://wukong2.tingyun.com)
    APP_KEY: 基调听云App授权Key
  • 上传符号表:配置完成后即可通过命令行上传符号表到基调听云服务器,出现 SUCCESS 说明上传成功。

    {
    "status": "SUCCESS",
    "message": "result: file name: HelloWord;builds : 44818402-CFA4-39E4-90B7-953914DE8A23,60ABFC59-0513-314D-8E66-BD81EC0FF1D2;SHA-1 : "
    }
  • 执行命令及结果如图所示: