符号表上传

最近更新时间:2025-10-21 18:05:02

我的收藏
支持通过网页上传和符号表上传工具两种方式上传符号表。

网页上传符号表

上传入口

入口一:设置/符号表

1. 应用配置 > 符号表 页面,单击上传符号表

2. 在符号表上传弹框中选择符号表类型、版本号、构建号,然后上传符号表文件。


入口二:个例详情/符号表

1. 分析异常个例时,如果发现符号没有翻译,可以直接切到符号表 Tab,单击待上传,点击上传可快速上传符号表。

2. 在个例详情页上传符号表时,会假定用户期望上传指定的符号表文件,会自动填写 App 版本、构建号,对于 SO 或者 dSYM 还会自动填写 UUID,并且校验 UUID。


上传步骤

上传 Android mapping 文件

将要上传的 mapping 文件压缩成 mapping.zip 文件,拖到上传区域即可。
首次上传时,会提示上传成功;再次上传时,会提示覆盖上传,如果确定覆盖,单击继续上传,即可覆盖同名文件。

说明:
针对相同版本号和构建号的 mapping 文件,当前支持通过文件名区分的批量上传功能,操作时需将多个 mapping 文件(推荐将宿主的命名为 mapping.txt,其他组件或插件的命名为 xxx_mapping.txt)放入同一级目录,压缩为 zip 后上传,后续翻译服务会按 mapping.txt 优先、xxx_mapping.txt 次之的顺序组装大 mapping,对一行堆栈先使用宿主 mapping 文件翻译,再用组件或插件的 mapping 文件翻译。

上传 Android SO 文件

将要上传的 SO 符号表文件压缩成 zip文件,拖到上传区域即可。
说明:
针对相同版本号和构建号的 SO 符号表文件,支持批量上传,此类文件通过 UUID 唯一标识,若检测到相同 UUID 的文件已上传,会提醒用户是否需要覆盖。


上传 iOS dSYM 文件

将要上传的 dSYM 文件压缩成 zip 文件,拖到上传区域即可。
说明:
针对相同版本号和构建号的 dSYM 文件,支持批量上传,此类文件通过 UUID 唯一标识,若检测到相同 UUID 的文件已上传,会提醒用户是否需要覆盖。


上传 Harmony SO 文件

操作同上传 Android SO 文件

上传Harmony nameCache & SourceMaps文件

操作同上传 Android mapping 文件,支持 nameCache、SourceMaps 文件独立上传。

示例

批量上传 SO 符号表文件

如下图所示,在 build/intermediates/cmake/release/obj 目录下可以看到不同 CPU 架构的目录。可以直接将整个 obj 目录压缩,得到 obj.zip 文件,直接拖动obj.zip 文件到上传文件区域,单击 确认上传 即可。
当文件比较大时,耗时可能要久一点,请耐心等待,上传成功后,即可在网页看到刚才批量上传的文件。


Android 应用上传插件的符号表

Android 的 mapping 文件通过 App 版本和构建号定位指定异常的符号表,平台符号表系统支持针对指定 App 版本和构建号上传多个 mapping 文件(推荐宿主文件命名为 mapping.txt,插件或组件文件命名为 xxx_mapping.txt),可将所有文件放在一个目录压缩成 zip 批量上传,也可分批上传,若某个插件的 mapping 文件传错还可覆盖上传,平台会提示覆盖情况。
重要提醒:
Android 的 mapping 文件是通过 App 版本、构建号,以及文件名来唯一标识的,与具体的文件无关。也就是说,同个 mapping 文件,分别上传两次,只要 App 版本号、构建号、文件名三者中有差异,都不会识别为覆盖上传。

符号表上传工具上传

操作步骤

1. 下载符号表上传工具。当前符号表上传工具最新版本为 V3.4.19,请 点击下载符号表工具
2. 下载工具后,可以看到 rumPro_localtool_proguard.jar。

3. 准备 Java 运行环境。
说明:
符号表上传工具是一个依赖于 Java 环境的 jar 工具包,在 JDK 8版本下编译,因此原则上可以在 Java 8及更高版本的 JRE 环境中运行。
目前已在 Mac 平台上验证了 Java 8、Java 11、Java 17 和 Java 19 的运行环境。
Windows 平台
Linux 平台
Mac 平台
在 Windows 上安装 JRE( Java 运行时环境)的步骤如下。
1. 访问 Oracle 官方网站下载适用于 Windows 的 JRE 安装包。请访问以下链接,然后选择适合您的 Windows 版本(32位或64位)的 JRE 安装包。
https://www.oracle.com/java/technologies/downloads/#jdk20-windows

2. 下载完成后,双击下载的安装文件(例如:jdk-20_windows-x64_bin.exe),启动安装程序。
3. 在安装向导中,按照提示操作。通常情况下,您可以使用默认设置。单击下一步继续安装过程。
4. 安装完成后,单击关闭退出安装向导。
5. 为了确保 JRE 已正确安装并可以在命令行中使用,请打开命令提示符(按下 Win 键,然后输入“cmd”并回车)。
6. 在命令提示符中输入以下命令,然后按回车键:
java -version
如果安装成功,您将看到类似以下的输出,显示已安装的 Java 版本:
java version "20.0.1"
Java(TM) SE Runtime Environment (build 20.0.1+9-29)
Java HotSpot(TM) 64-Bit Server VM (build 20.0.1+9-29, mixed mode)
现在,您已成功在 Windows 上安装了 JRE。
在 Linux 平台上安装 JRE(Java 运行时环境)的步骤如下。下文以 Ubuntu 为例:
1. 打开终端(快捷键:Ctrl + Alt + T)。
2. 更新软件包列表。
sudo apt update
3. 安装默认的 Java 运行时环境(通常是 OpenJDK 的最新版本)。
sudo apt install default-jre
输入您的密码并按回车键,然后在提示时按 “Y” 键,以确认安装。
4. 安装完成后,验证 JRE 是否已成功安装。在终端中输入以下命令,然后按回车键:
java -version
如果安装成功,您将看到类似以下的输出,显示已安装的 Java 版本。
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)
现在,您已成功在 Linux(Ubuntu)平台上安装了 JRE。
注意:
这里安装的是 OpenJDK 版本的 JRE。如果您需要 Oracle JRE,请访问 Oracle 官方网站下载适用于 Linux 的 JRE 安装包,并按照官方文档进行安装。
在 Mac 上安装多个 Java 版本,可以使用包管理器 Homebrew。以下是安装和管理多个 Java 版本的步骤。
1. 安装 Homebrew(如果尚未安装),打开终端并运行以下命令。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装完成后,终端会显示相应的提示。
2. 添加 Homebrew 的 cask 版本库。
brew tap homebrew/cask-versions
3. 安装所需的 Java 版本。例如,如果需安装 Java 8和 Java 11,可以运行以下命令:
brew install --cask adoptopenjdk8
brew install --cask adoptopenjdk11
您可以通过替换数字来安装其他版本的 Java。
4. 查看已安装的 Java 版本,执行以下命令。
/usr/libexec/java_home -V
这将显示已安装的 Java 版本及其路径。
5. 切换 Java 版本。要在不同的 Java 版本之间切换,您可以设置 JAVA_HOME 环境变量。例如,要将 Java 版本切换到 Java 8,请运行以下命令:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
要切换到 Java 11,请运行:
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
您可以通过替换数字来切换到其他版本的 Java。
6. 使切换持久化,您可以将上述 export 命令添加到您的 shell 配置文件(如 .bashrc、.bash_profile 或 .zshrc)中。这样,在每次打开新的终端窗口时,都会自动设置 JAVA_HOME 环境变量。现在,您已经在 Mac 上安装了多个 Java 版本,并可以根据需要在它们之间切换。
7. 可以通过以下命令,检查当前的 Java 版本。
java -version
如果安装成功,您将看到类似以下的输出,显示已安装的 Java 版本。
openjdk version "1.8.0_282"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_282-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.282-b08, mixed mode)
4. 使用工具上传。
命令格式如下:
java -jar rumpro-upload-symbol.jar -appid <App ID>
-appkey <App KEY>
-version <App Version or SO Version>
-buildNo <App Build Number>
-platform <Platform>
-inputSymbol <Original Symbol File Path>
-inputMapping <mapping.txt file Path>
参数说明如下:
参数
是否必填
说明
appId
平台分配给产品的唯一标识,可以通过应用列表查看。
appkey
平台分配给产品的标识,可以通过应用列表查看。
version
版本号。当上传的是 Java 的 mapping.txt 文件时,指对应的 App 的版本号;当上传的是 SO 或者 dSYM 时指对应的 SO 或者 dSYM 的版本号。
说明
版本号里不要有特殊字符串,例如( ),不然运行可能会报错。
如果上报包含 mapping 文件,那么此处的版本号必须和要还原的堆栈所属的 App 的实际版本号一致,因为一个版本下的 App 是对应唯一的 mapping.txt,不对齐则无法还原对应的堆栈。
如果只是上传 SO 符号表,这个版本号建议填写 SO 对应的版本号,方便在查看符号表时知道是哪个版本的。无论填写什么,不影响符号表的还原,SO 会根据自身的 UUID 来唯一标识一个符号表文件。
如果只是上传 dSYM 符号表,这个版本号建议填写 dSYM 对应的版本号,方便在查看符号表时知道是哪个版本的。无论填写什么,不影响符号表的还原,dSYM 会根据自身的 UUID 来唯一标识一个符号表文件。

buildNo
构建号。如果上传的是 mapping.txt 文件,并且初始化 SDK 时有使用构建号,则上传符号表时一定要填写正确的构建号,否则会导致 Java 堆栈无法还原。
platform
平台类型,当前支持的三个选项,分别是 Android、iOS、Mac。注意大小写要正确
inputSymbol
原始符号表 [dSYM、SO] 所在文件夹目录地址。如果是 Android 平台同时包含 mapping 和 SO,此处输入两个原始符号表存储的共同父目录,或者通过 inputMapping 来指定 mapping 文件的路径。
inputMapping
Android 平台的 mapping.txt 所在文件夹目录地址。Android 平台特有,iOS 忽略

示例

案例1:上传一个 SO 符号表文件

参考命令行:
java -jar rumpro-upload-symbol.jar -appid a278f01047 -appkey 1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86 -version 4.3.0 -platform Android -inputSymbol /Users/lilyxie/Downloads/upload_target/obj/arm64-v8a/libbugly_dumper.SO
结果摘要:
...
##[info]args is ArgsParser{appId='a278f01047'appKey='1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86', appPackage='com.tencent.demo.rumprodemo', appVersion='4.3.0', appBuildNo='null', platformId=Android', enviroment=null', symbolPathName='/Users/lilyxie/Downloads/upload_target/obj/arm64-v8a/libbugly_dumper.SO', mappingPathName='null', appPathName='null'}
...
##[info]request jSOn is {"appID":"a278f01047","authSign":"1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86","appVersion":"4.3.0","appBundleID":"com.tencent.demo.rumprodemo","appPlatform":1,"appBuildNumber":null,"fileType":201,"fileSize":83101,"fileMD5":"7237e936f6bf7e8ed52a70f67c02aa31","clientType":7,"clientVersion":"1.0.48","buildPlatform":1,"buildID":null,"buildName":"null&null","fileInfoList":[{"name":"buglySymbol&arm64-v8a&libbugly_dumper&a5cd2db99a1f45b45469979205f09730.zip","UUID":"a5cd2db99a1f45b45469979205f09730","arch":"arm64-v8a","type":101,"moduleName":"libbugly_dumper"}],"buildRepo":null,"buildBranch":null,"buildCommitID":null}
##[info]request upload Info Url is https://symbol-v2.bugly.qq.com/trpc.eff_tool.symbol_upload_gateway.SymbolUploadGateway/uploadInfo
##[info]request gitRepoUrl is null
##[info]request gitRepoBranch is null
##[info]request gitRepoHeadCommitId is null
##[info]envtype is null
##[info]getAppModuleList is null
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"a278f01047-2e0f441c-da63-46a3-b03b-6b5ce1bdb008"}
##[info]now begin to uploadFileContent
##[info]request uploadFileurl is https://symbol-v2.bugly.qq.com/trpc.eff_tool.symbol_upload_gateway.SymbolUploadGateway/uploadFile
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"a278f01047-2e0f441c-da63-46a3-b03b-6b5ce1bdb008"}

案例2:上传多个 SO 符号表文件

参考命令行:
java -jar rumpro-upload-symbol.jar -appid a278f01047 -appkey 1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86 -version 4.3.0 -platform Android -inputSymbol /Users/lilyxie/Downloads/upload_target/obj/arm64-v8a
inputSymbol:
上传多个 SO 符号表文件时,inputSymbol 需要输入这些要上传的 SO 符号表文件的目录,例如示例中将 arm64-v8a 整个架构的结果都上传。
结果摘要:
...
##[info]rumpro tools android params: -appid a278f01047 -appkey 1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86 -version 4.3.0 -platform Android -inputSymbol /Users/lilyxie/Downloads/upload_target/obj/arm64-v8a
...
##[info]request jSOn is {"appID":"a278f01047","authSign":"1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86","appVersion":"4.3.0","appBundleID":"com.tencent.demo.rumprodemo","appPlatform":1,"appBuildNumber":null,"fileType":201,"fileSize":1359658,"fileMD5":"3a54e6b66b6901c6a51c528ea36d86dd","clientType":7,"clientVersion":"1.0.48","buildPlatform":1,"buildID":null,"buildName":"null&null","fileInfoList":[{"name":"buglySymbol&arm64-v8a&librmonitor_natmem&2655b543f9689d5dbcac22f995a18a44.zip","UUID":"2655b543f9689d5dbcac22f995a18a44","arch":"arm64-v8a","type":101,"moduleName":"librmonitor_natmem"},{"name":"buglySymbol&arm64-v8a&libBugly_Native&e62597d2365613d35f1110454fa072a2.zip","UUID":"e62597d2365613d35f1110454fa072a2","arch":"arm64-v8a","type":101,"moduleName":"libBugly_Native"},{"name":"buglySymbol&arm64-v8a&libbugly_dumper&a5cd2db99a1f45b45469979205f09730.zip","UUID":"a5cd2db99a1f45b45469979205f09730","arch":"arm64-v8a","type":101,"moduleName":"libbugly_dumper"},{"name":"buglySymbol&arm64-v8a&librmonitor_memory_dump&3958037915dd881290ba72a3f598d862.zip","UUID":"3958037915dd881290ba72a3f598d862","arch":"arm64-v8a","type":101,"moduleName":"librmonitor_memory_dump"},{"name":"buglySymbol&arm64-v8a&librmonitor_fd_stack&e8d847dac7e5fbdb8c134ccc74799e7d.zip","UUID":"e8d847dac7e5fbdb8c134ccc74799e7d","arch":"arm64-v8a","type":101,"moduleName":"librmonitor_fd_stack"},{"name":"buglySymbol&arm64-v8a&librmonitor_core&54ef01f7521cf885a88c387fb6782875.zip","UUID":"54ef01f7521cf885a88c387fb6782875","arch":"arm64-v8a","type":101,"moduleName":"librmonitor_core"},{"name":"buglySymbol&arm64-v8a&librmonitor_base&5990bc6d36f0643987af905c60b3d8f8.zip","UUID":"5990bc6d36f0643987af905c60b3d8f8","arch":"arm64-v8a","type":101,"moduleName":"librmonitor_base"}],"buildRepo":null,"buildBranch":null,"buildCommitID":null}
##[info]request upload Info Url is https://symbol-v2.bugly.qq.com/trpc.eff_tool.symbol_upload_gateway.SymbolUploadGateway/uploadInfo
##[info]request gitRepoUrl is null
##[info]request gitRepoBranch is null
##[info]request gitRepoHeadCommitId is null
##[info]envtype is null
##[info]getAppModuleList is null
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"a278f01047-aae1c0a6-492b-4ebc-b6d7-9ed51e3571b1"}
##[info]now begin to uploadFileContent
##[info]request uploadFileurl is https://symbol-v2.bugly.qq.com/trpc.eff_tool.symbol_upload_gateway.SymbolUploadGateway/uploadFile
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"a278f01047-aae1c0a6-492b-4ebc-b6d7-9ed51e3571b1"}
检查符号表上传结果:


案例3:上传 mapping.txt 文件

参考命令行:
java -jar rumpro-upload-symbol.jar -appid a278f01047 -appkey 1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86 -version 4.3.1 -buildNo 1 -platform Android -inputMapping /Users/temp/app/build/outputs/mapping/r8/release/mapping.txt
结果摘要:
...
##[info]args is ArgsParser{appId='a278f01047'appKey='1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86', appPackage='com.tencent.demo.rumprodemo', appVersion='4.3.1', appBuildNo='1', platformId=Android', enviroment=null', symbolPathName='null', mappingPathName='/Users/lilyxie/workspace/apm/QAPM_SDK/app/build/outputs/mapping/r8/release/mapping.txt', appPathName='null'}
...
##[info]symbolFileDetail is [{"name":"mapping&616cc28aa0dfdfce4cfcef72750a4583.zip","type":102}]
##[info]request jSOn is {"appID":"a278f01047","authSign":"1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86","appVersion":"4.3.1","appBundleID":"com.tencent.demo.rumprodemo","appPlatform":1,"appBuildNumber":null,"fileType":202,"fileSize":727073,"fileMD5":"b409dc5beb8061397429086273d1e023","clientType":7,"clientVersion":"1.0.48","buildPlatform":1,"buildID":null,"buildName":"null&null","fileInfoList":[{"name":"mapping&616cc28aa0dfdfce4cfcef72750a4583.zip","type":102}],"buildRepo":null,"buildBranch":null,"buildCommitID":null}
##[info]request upload Info Url is https://symbol-v2.bugly.qq.com/trpc.eff_tool.symbol_upload_gateway.SymbolUploadGateway/uploadInfo
##[info]request gitRepoUrl is null
##[info]request gitRepoBranch is null
##[info]request gitRepoHeadCommitId is null
##[info]envtype is null
##[info]getAppModuleList is null
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"a278f01047-72fd1c79-7096-4818-8244-61248c5e0fe2"}
##[info]now begin to uploadFileContent
##[info]request uploadFileurl is https://symbol-v2.bugly.qq.com/trpc.eff_tool.symbol_upload_gateway.SymbolUploadGateway/uploadFile
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"a278f01047-72fd1c79-7096-4818-8244-61248c5e0fe2"}

案例4:同时上传 SO 文件以及 mapping.txt 文件

参考命令行:
java -jar rumpro-upload-symbol.jar -appid a278f01047 -appkey 1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86 -version 4.3.0 -buildNo 2 -platform Android -inputSymbol /Users/lilyxie/Downloads/upload_target/obj/arm64-v8a -inputMapping /Users/lilyxie/workspace/apm/QAPM_SDK/app/build/outputs/mapping/r8/release/mapping.txt
结果摘要:
...
##[info]args is ArgsParser{appId='a278f01047'appKey='1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86', appPackage='com.tencent.demo.rumprodemo', appVersion='4.3.0', appBuildNo='2', platformId=Android', enviroment=null', symbolPathName='/Users/lilyxie/Downloads/upload_target/obj/arm64-v8a', mappingPathName='/Users/lilyxie/workspace/apm/QAPM_SDK/app/build/outputs/mapping/r8/release/mapping.txt', appPathName='null'}
...
##[info]request jSOn is {"appID":"a278f01047","authSign":"1e5ab6b3-b6fa-4f9b-a3c2-743d31dffe86","appVersion":"4.3.0","appBundleID":"com.tencent.demo.rumprodemo","appPlatform":1,"appBuildNumber":null,"fileType":200,"fileSize":2086710,"fileMD5":"5e89401e93597eded44527a9345bc43c","clientType":7,"clientVersion":"1.0.48","buildPlatform":1,"buildID":null,"buildName":"null&null","fileInfoList":[{"name":"buglySymbol&arm64-v8a&librmonitor_natmem&2655b543f9689d5dbcac22f995a18a44.zip","UUID":"2655b543f9689d5dbcac22f995a18a44","arch":"arm64-v8a","type":101,"moduleName":"librmonitor_natmem"},{"name":"buglySymbol&arm64-v8a&libBugly_Native&e62597d2365613d35f1110454fa072a2.zip","UUID":"e62597d2365613d35f1110454fa072a2","arch":"arm64-v8a","type":101,"moduleName":"libBugly_Native"},{"name":"buglySymbol&arm64-v8a&libbugly_dumper&a5cd2db99a1f45b45469979205f09730.zip","UUID":"a5cd2db99a1f45b45469979205f09730","arch":"arm64-v8a","type":101,"moduleName":"libbugly_dumper"},{"name":"buglySymbol&arm64-v8a&librmonitor_memory_dump&3958037915dd881290ba72a3f598d862.zip","UUID":"3958037915dd881290ba72a3f598d862","arch":"arm64-v8a","type":101,"moduleName":"librmonitor_memory_dump"},{"name":"buglySymbol&arm64-v8a&librmonitor_fd_stack&e8d847dac7e5fbdb8c134ccc74799e7d.zip","UUID":"e8d847dac7e5fbdb8c134ccc74799e7d","arch":"arm64-v8a","type":101,"moduleName":"librmonitor_fd_stack"},{"name":"buglySymbol&arm64-v8a&librmonitor_core&54ef01f7521cf885a88c387fb6782875.zip","UUID":"54ef01f7521cf885a88c387fb6782875","arch":"arm64-v8a","type":101,"moduleName":"librmonitor_core"},{"name":"buglySymbol&arm64-v8a&librmonitor_base&5990bc6d36f0643987af905c60b3d8f8.zip","UUID":"5990bc6d36f0643987af905c60b3d8f8","arch":"arm64-v8a","type":101,"moduleName":"librmonitor_base"},{"name":"mapping&616cc28aa0dfdfce4cfcef72750a4583.zip","type":102}],"buildRepo":null,"buildBranch":null,"buildCommitID":null}
##[info]request upload Info Url is https://symbol-v2.bugly.qq.com/trpc.eff_tool.symbol_upload_gateway.SymbolUploadGateway/uploadInfo
##[info]request gitRepoUrl is null
##[info]request gitRepoBranch is null
##[info]request gitRepoHeadCommitId is null
##[info]envtype is null
##[info]getAppModuleList is null
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"a278f01047-c6dee54b-a8c0-4ec8-b478-5cce8dc228bf"}
##[info]now begin to uploadFileContent
##[info]request uploadFileurl is https://symbol-v2.bugly.qq.com/trpc.eff_tool.symbol_upload_gateway.SymbolUploadGateway/uploadFile
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"a278f01047-c6dee54b-a8c0-4ec8-b478-5cce8dc228bf"}

案例5:上传一个 dSYM 文件

参考命令行:
java -jar rumpro-upload-symbol.jar -appid a53fd62f6e -appkey aa1c666f-d5e7-446b-8dc7-3bcb3bda7c7f -version 2.3.0 -platform IOS -inputSymbol /Users/lilyxie/workspace/temp/dSYM/Alamofire.framework.dSYM
结果摘要:
...
##[info]args is ArgsParser{appId='a53fd62f6e'appKey='aa1c666f-d5e7-446b-8dc7-3bcb3bda7c7f', appPackage='com.tencent.rumpro.demo.presentation.ios', appVersion='2.3.0', appBuildNo='null', platformId=IOS', enviroment=null', symbolPathName='/Users/lilyxie/workspace/temp/dSYM/Alamofire.framework.dSYM', mappingPathName='null', appPathName='null'}
...
##[info]request jSOn is {"appID":"a53fd62f6e","authSign":"aa1c666f-d5e7-446b-8dc7-3bcb3bda7c7f","appVersion":"2.3.0","appBundleID":"com.tencent.rumpro.demo.presentation.ios","appPlatform":2,"appBuildNumber":null,"fileType":201,"fileSize":350816,"fileMD5":"f69a32d33b16756a75d1716f728cef00","clientType":7,"clientVersion":"1.0.48","buildPlatform":1,"buildID":null,"buildName":"null&null","fileInfoList":[{"name":"buglySymbol&Alamofire&arm64&5471ad32641a3f9f87610b133693b882.zip","UUID":"5471ad32641a3f9f87610b133693b882","arch":"arm64","type":101,"moduleName":"Alamofire"},{"name":"buglySymbol&Alamofire&x86_64&60e900a3b60035b98fd84ccb13c4ec55.zip","UUID":"60e900a3b60035b98fd84ccb13c4ec55","arch":"x86_64","type":101,"moduleName":"Alamofire"}],"buildRepo":null,"buildBranch":null,"buildCommitID":null}
##[info]request upload Info Url is https://symbol-v2.bugly.qq.com/trpc.eff_tool.symbol_upload_gateway.SymbolUploadGateway/uploadInfo
##[info]request gitRepoUrl is null
##[info]request gitRepoBranch is null
##[info]request gitRepoHeadCommitId is null
##[info]envtype is null
##[info]getAppModuleList is null
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"a53fd62f6e-ab4b2b2a-b074-4ecd-b798-4d1d9458ba36"}

案例6:上传多个 dSYM 文件

参考命令行:
java -jar rumpro-upload-symbol.jar -appid a53fd62f6e -appkey aa1c666f-d5e7-446b-8dc7-3bcb3bda7c7f -version 2.3.0 -platform IOS -inputSymbol /Users/lilyxie/workspace/temp/dSYM

结果摘要:
...
##[info]args is ArgsParser{appId='a53fd62f6e'appKey='aa1c666f-d5e7-446b-8dc7-3bcb3bda7c7f', appPackage='com.tencent.rumpro.demo.presentation.ios', appVersion='2.3.0', appBuildNo='null', platformId=IOS', enviroment=null', symbolPathName='/Users/lilyxie/workspace/temp/dSYM', mappingPathName='null', appPathName='null'}
...
##[info]request jSOn is {"appID":"a53fd62f6e","authSign":"aa1c666f-d5e7-446b-8dc7-3bcb3bda7c7f","appVersion":"2.3.0","appBundleID":"com.tencent.rumpro.demo.presentation.ios","appPlatform":2,"appBuildNumber":null,"fileType":201,"fileSize":4673680,"fileMD5":"64c428045dfdcb0c376bea51760dd0df","clientType":7,"clientVersion":"1.0.48","buildPlatform":1,"buildID":null,"buildName":"null&null","fileInfoList":[{"name":"buglySymbol&APTimeZones&arm64&659c3d9d48de30b6b47792cebd69ad22.zip","UUID":"659c3d9d48de30b6b47792cebd69ad22","arch":"arm64","type":101,"moduleName":"APTimeZones"},{"name":"buglySymbol&APTimeZones&x86_64&cae5639b99b030bd8c25d501a1e9262f.zip","UUID":"cae5639b99b030bd8c25d501a1e9262f","arch":"x86_64","type":101,"moduleName":"APTimeZones"},{"name":"buglySymbol&NearbyWeather&arm64&cd705ee49b29330dbcfacbd00774c7ff.zip","UUID":"cd705ee49b29330dbcfacbd00774c7ff","arch":"arm64","type":101,"moduleName":"NearbyWeather"},{"name":"buglySymbol&NearbyWeather&x86_64&f9813c5ec1a932f7a06e4167448ac9a2.zip","UUID":"f9813c5ec1a932f7a06e4167448ac9a2","arch":"x86_64","type":101,"moduleName":"NearbyWeather"},{"name":"buglySymbol&Rswift&arm64&915c4f2d6c6c3ce4821c6e8df1ce7001.zip","UUID":"915c4f2d6c6c3ce4821c6e8df1ce7001","arch":"arm64","type":101,"moduleName":"Rswift"},{"name":"buglySymbol&Rswift&x86_64&1d7a56292ec73517a165b3a4645ab9b3.zip","UUID":"1d7a56292ec73517a165b3a4645ab9b3","arch":"x86_64","type":101,"moduleName":"Rswift"},{"name":"buglySymbol&FMDB&arm64&31fc108031e339b780ebfd18f1877861.zip","UUID":"31fc108031e339b780ebfd18f1877861","arch":"arm64","type":101,"moduleName":"FMDB"},{"name":"buglySymbol&FMDB&x86_64&79f5048815c43a6e99a8471edc4e071c.zip","UUID":"79f5048815c43a6e99a8471edc4e071c","arch":"x86_64","type":101,"moduleName":"FMDB"},{"name":"buglySymbol&PKHUD&x86_64&805ab0b5ac413f2a8205de88ab83374f.zip","UUID":"805ab0b5ac413f2a8205de88ab83374f","arch":"x86_64","type":101,"moduleName":"PKHUD"},{"name":"buglySymbol&PKHUD&arm64&4e20af3ed52a338b8f33683a462cc275.zip","UUID":"4e20af3ed52a338b8f33683a462cc275","arch":"arm64","type":101,"moduleName":"PKHUD"},{"name":"buglySymbol&RxRelay&arm64&f16c9ca211c332609db10ab1be487ef2.zip","UUID":"f16c9ca211c332609db10ab1be487ef2","arch":"arm64","type":101,"moduleName":"RxRelay"},{"name":"buglySymbol&RxRelay&x86_64&8c769ff24d4231ed98b0a95ee0967a51.zip","UUID":"8c769ff24d4231ed98b0a95ee0967a51","arch":"x86_64","type":101,"moduleName":"RxRelay"},{"name":"buglySymbol&RxCocoa&x86_64&34e3cf0ae4603507b361340ffcf2787a.zip","UUID":"34e3cf0ae4603507b361340ffcf2787a","arch":"x86_64","type":101,"moduleName":"RxCocoa"},{"name":"buglySymbol&RxCocoa&arm64&72cd027e9b59367a9a7b5febac26452c.zip","UUID":"72cd027e9b59367a9a7b5febac26452c","arch":"arm64","type":101,"moduleName":"RxCocoa"},{"name":"buglySymbol&RxSwift&arm64&d4975416847c3104aa199584ca9e9c14.zip","UUID":"d4975416847c3104aa199584ca9e9c14","arch":"arm64","type":101,"moduleName":"RxSwift"},{"name":"buglySymbol&RxSwift&x86_64&03ea574855783e2080ccb8473c8c70d6.zip","UUID":"03ea574855783e2080ccb8473c8c70d6","arch":"x86_64","type":101,"moduleName":"RxSwift"},{"name":"buglySymbol&TextFieldCounter&arm64&3e1d2e3091c03c6a926132fd8e6787c2.zip","UUID":"3e1d2e3091c03c6a926132fd8e6787c2","arch":"arm64","type":101,"moduleName":"TextFieldCounter"},{"name":"buglySymbol&TextFieldCounter&x86_64&5b22d2600ef2323693cbd4168f9442e9.zip","UUID":"5b22d2600ef2323693cbd4168f9442e9","arch":"x86_64","type":101,"moduleName":"TextFieldCounter"},{"name":"buglySymbol&SwiftMonkey&x86_64&5eb2bb9f2535313bb6d52d20cb997c3f.zip","UUID":"5eb2bb9f2535313bb6d52d20cb997c3f","arch":"x86_64","type":101,"moduleName":"SwiftMonkey"},{"name":"buglySymbol&SwiftMonkey&arm64&ce1692374ecb37fbb0cf58671f91687d.zip","UUID":"ce1692374ecb37fbb0cf58671f91687d","arch":"arm64","type":101,"moduleName":"SwiftMonkey"},{"name":"buglySymbol&RxFlow&arm64&05ab5fa62ccc33ac92bee8302f3c03ac.zip","UUID":"05ab5fa62ccc33ac92bee8302f3c03ac","arch":"arm64","type":101,"moduleName":"RxFlow"},{"name":"buglySymbol&RxFlow&x86_64&8b4df307db4a34d2b003d65eb5f6990f.zip","UUID":"8b4df307db4a34d2b003d65eb5f6990f","arch":"x86_64","type":101,"moduleName":"RxFlow"},{"name":"buglySymbol&NearbyWeatherUITests&arm64&2d853bcf1c703a6ebb0767dae49033d3.zip","UUID":"2d853bcf1c703a6ebb0767dae49033d3","arch":"arm64","type":101,"moduleName":"NearbyWeatherUITests"},{"name":"buglySymbol&NearbyWeatherUITests&x86_64&98bcb7abb3a1376593d8b88be64102d4.zip","UUID":"98bcb7abb3a1376593d8b88be64102d4","arch":"x86_64","type":101,"moduleName":"NearbyWeatherUITests"},{"name":"buglySymbol&Alamofire&arm64&5471ad32641a3f9f87610b133693b882.zip","UUID":"5471ad32641a3f9f87610b133693b882","arch":"arm64","type":101,"moduleName":"Alamofire"},{"name":"buglySymbol&Alamofire&x86_64&60e900a3b60035b98fd84ccb13c4ec55.zip","UUID":"60e900a3b60035b98fd84ccb13c4ec55","arch":"x86_64","type":101,"moduleName":"Alamofire"}],"buildRepo":null,"buildBranch":null,"buildCommitID":null}
##[info]request upload Info Url is https://symbol-v2.bugly.qq.com/trpc.eff_tool.symbol_upload_gateway.SymbolUploadGateway/uploadInfo
##[info]request gitRepoUrl is null
##[info]request gitRepoBranch is null
##[info]request gitRepoHeadCommitId is null
##[info]envtype is null
##[info]getAppModuleList is null
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"a53fd62f6e-7b7c95ad-c497-4297-b8af-f919741228bb"}
##[info]now begin to uploadFileContent
##[info]request uploadFileurl is https://symbol-v2.bugly.qq.com/trpc.eff_tool.symbol_upload_gateway.SymbolUploadGateway/uploadFile
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"a53fd62f6e-7b7c95ad-c497-4297-b8af-f919741228bb"}

案例7:上传 Harmony 平台符号表

如需上传鸿蒙 SO ,需先设置临时环境变量 USE_LLVM 为 true。参考命令行:
export USE_LLVM=true
执行符号表上传命令。
java -jar rumpro-upload-symbol.jar -appid a53fd62f6e -appkey aa1c666f-d5e7-446b-8dc7-3bcb3bda7c7f -version 1.0.0 -platform Harmony -inputSymbol ./harmony_test/libdemo.SO -inputMapping harmony_test/obfuscation -buildNo 0
说明:
上传鸿蒙 SO 符号表前必须设置 USE_LLVM 环境变量,否则可能上传失败。
上传时需设置平台为 Harmony,注意大小写。
上传 nameCache 和 SourceMaps 复用 Android 平台 -inputMapping 参数,区别在于平台为鸿蒙时会同时捞取包含 nameCache 和 SourceMaps 的文件。
支持上传一个 SO 与上传多个 SO ,支持单独上传 nameCache、SourceMaps,支持同时上传 SO 和 nameCache、SourceMaps,示例参考案例1、案例2、案例3、案例4,需注意设置平台。
需替换命令中 jar 包名称为真实使用的 jar 包名称。
上传成功结果摘要如下:
##[info]args is ArgsParser{appId='a53fd62f6e', appKey='aa1c666f-d5e7-446b-8dc7-3bcb3bda7c7f', appPackage='null', appVersion='1.0.0', appBuildNo='2', platformId='Harmony', enviroment='null', symbolPathName='./libdemo.SO', mappingPathName='harmony_test/obfuscation', appPathName='null'}
##[info]param is : AtomParam{bundleId='null', version='1.0.0', secret='null', platform='Harmony', platformModule='null', symbolPath='./libdemo.SO', appPath='null', mappingPath='harmony_test/obfuscation', secretSource='input', secretInputAppId='a53fd62f6e', secretInputKey='aa1c666f-d5e7-446b-8dc7-3bcb3bda7c7f', buildNo='2', buildPackageType='app', appModuleList='null', moduleName='null', envType='null'}
##[info]deleteDirFiles file path is /Users/zhuangchihui/Documents/TestData/buglybin/symbolTempStore/bugly_nameCache&85272d438d47884151c9b48bf36b5131.zip
##[info]deleteDirFiles file path is /Users/zhuangchihui/Documents/TestData/buglybin/symbolTempStore/SOurceMaps&7fc36306136e9f57db449eb0d61963a1.zip
##[info]deleteDirFiles file path is /Users/zhuangchihui/Documents/TestData/buglybin/symbolTempStore
##[info]deleteDirFiles file path is /Users/zhuangchihui/Documents/TestData/buglybin/symbolResult/BuglyMappingListZip.zip
##[info]deleteDirFiles file path is /Users/zhuangchihui/Documents/TestData/buglybin/symbolResult
##[info]deleteDirFiles file path is /Users/zhuangchihui/Documents/TestData/buglybin
##[info]packSymbolFile file
##[info]workspace:null
##[info]buildPackageType:app
##[info]find mapping file:[harmony_test/obfuscation/SOurceMaps.jSOn, harmony_test/obfuscation/bugly_nameCache.jSOn]
##[info]checkSymbolUpload request jSOn is {"appID":"a53fd62f6e","symbolUUIDs":["b151a429a057c9b78803bac7f4b15278"]}
##[info]retCode: 200 response message: {"statusCode":0,"msg":"所有符号表都已经上传过。","notExistUUIDs":[]}
...
##[info]request jSOn is {"appID":"a53fd62f6e","authSign":"aa1c666f-d5e7-446b-8dc7-3bcb3bda7c7f","appVersion":"1.0.0","appBundleID":null,"appPlatform":11,"appBuildNumber":"0","fileType":202,"fileSize":18657,"fileMD5":"80efa7c601bc5fe0c9c065c669997786","clientType":4,"clientVersion":"3.4.2","buildPlatform":1,"buildID":null,"buildName":"null&null","fileInfoList":[{"name":"SOurceMaps&7fc36306136e9f57db449eb0d61963a1.zip","type":102},{"name":"bugly_nameCache&85272d438d47884151c9b48bf36b5131.zip","type":102}],"buildRepo":null,"buildBranch":null,"buildCommitID":null,"appType":0}
##[info]retCode: 200 response message: {"statusCode":0,"msg":"success","uploadReqID":"a53fd62f6e-84fd4052-44c7-45da-8b2e-ac59f3846733"}