支持通过网页上传和符号表上传工具两种方式上传符号表。
网页上传符号表
上传入口
入口一:设置/符号表
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 文件
上传Harmony 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 上安装 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-20OpenJDK 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 adoptopenjdk8brew 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"}