命令行工具上传符号表

更新时间:
复制为 MD 格式

介绍如何使用阿里云 EMAS APM 命令行工具自动化上传符号表。

准备阶段

下载命令行工具

工具提供三种分发形式,您可以根据实际环境选择合适的版本。

macOS ARM64版本(推荐Mac用户)

适用于Apple Silicon(M1/M2/M3/M4等)芯片的Mac电脑。

下载
# 下载工具
curl -o alibabacloud-apm-cli https://ios-repo.oss-cn-shanghai.aliyuncs.com/AlicloudApmCli/alibabacloud-apm-cli_macos-arm64

# 添加执行权限
chmod +x alibabacloud-apm-cli

# 移动到系统路径(可选,推荐)
sudo mv alibabacloud-apm-cli /usr/local/bin/
验证安装
alibabacloud-apm-cli --version

如果显示版本信息,说明安装成功。

Linux AMD64版本

适用于Linux服务器或CI/CD环境。

下载
# 下载工具
curl -o alibabacloud-apm-cli https://ios-repo.oss-cn-shanghai.aliyuncs.com/AlicloudApmCli/alibabacloud-apm-cli_linux-amd64

# 添加执行权限
chmod +x alibabacloud-apm-cli

# 移动到系统路径(可选,推荐)
sudo mv alibabacloud-apm-cli /usr/local/bin/
验证安装
alibabacloud-apm-cli --version

如果显示版本信息,说明安装成功。

Java版本(跨平台)

适用于所有支持Java的平台,需要Java 8或更高版本。

准备Java运行环境

工具需要Java 8或更高版本的运行环境。

下载工具
# 下载JAR包
curl -o alibabacloud-apm-cli.jar https://ios-repo.oss-cn-shanghai.aliyuncs.com/AlicloudApmCli/alibabacloud-apm-cli.jar
使用方式

Java版本需要通过 `java -jar` 命令运行:

java -jar alibabacloud-apm-cli.jar --version

如果显示版本信息,说明安装成功。

创建AccessKey

使用子账号创建AccessKey(推荐)

  1. 参考文档快速入门:创建RAM用户并授权

  2. 参考文档授权RAM用户为新创建的RAM用户添加权限

  3. 参考文档创建RAM用户的AccessKey,保存申请的AK/SK

使用主账号创建AccessKey

参考文档创建阿里云账号(主账号)的AccessKey(不推荐),保存申请的AK/SK

命令行参数说明

基本语法

二进制版本

alibabacloud-apm-cli [选项]

Java版本

java -jar alibabacloud-apm-cli.jar [选项]

必需参数

参数

长参数

说明

示例

-k

--app-key

APM应用Key(数值类型)

-k 123456

-i

--access-key-id

阿里云AccessKey ID

-i LTAI5t***

-s

--access-key-secret

阿里云AccessKey Secret

-s 3yN***

-p

--platform

平台类型:iosandroidharmonyh5

-p ios

-f

--file-path

符号文件路径(文件或目录)

-f ./MyApp.app.dSYM

可选参数

参数

长参数

说明

示例

-v

--app-version

应用版本号

-v 2.3.1

-b

--build-id

构建ID(主要用于Android平台)

-b build-20240220

--verbose

启用详细日志输出模式

--verbose

-h

--help

显示帮助信息

-h

--version

显示工具版本信息

--version

环境变量支持

为了提高安全性,工具支持通过环境变量传递敏感信息:

环境变量

对应参数

说明

ALIBABA_CLOUD_ACCESS_KEY_ID

--access-key-id

阿里云AccessKey ID

ALIBABA_CLOUD_ACCESS_KEY_SECRET

--access-key-secret

阿里云AccessKey Secret

APM_APP_KEY

--app-key

APM应用Key

环境变量示例

# 设置环境变量
export ALIBABA_CLOUD_ACCESS_KEY_ID=LTAI5t***
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=3yN***
export APM_APP_KEY=123456

# 使用环境变量运行(无需传递 -k、-i、-s 参数)
alibabacloud-apm-cli -p ios -f ./MyApp.app.dSYM -v 2.3.1

使用方式

iOS平台:上传dSYM文件

上传单个dSYM文件

alibabacloud-apm-cli \
  --app-key 123456 \
  --access-key-id LTAI5t*** \
  --access-key-secret 3yN*** \
  --platform ios \
  --file-path ./MyApp.app.dSYM

上传包含dSYM的目录

# 可以直接指定目录,工具会自动查找目录中的dSYM文件
alibabacloud-apm-cli \
  -k 123456 \
  -i LTAI5t*** \
  -s 3yN*** \
  -p ios \
  -f ./build/Release-iphoneos \
  -v 2.3.1

Android平台:上传mapping.txtSO文件

上传ProGuard mapping文件

alibabacloud-apm-cli \
  --app-key 123456 \
  --access-key-id LTAI5t*** \
  --access-key-secret 3yN*** \
  --platform android \
  --file-path ./app/build/outputs/mapping/release/mapping.txt \
  --app-version 5.6.0 \
  --build-id 20240220

上传单个SO文件

alibabacloud-apm-cli \
  --app-key 123456 \
  --access-key-id LTAI5t*** \
  --access-key-secret 3yN*** \
  --platform android \
  --file-path ./libs/arm64-v8a/libdemo.so

上传整个架构的SO文件

# 指定包含多个SO文件的目录
alibabacloud-apm-cli \
  --app-key 123456 \
  --access-key-id LTAI5t*** \
  --access-key-secret 3yN*** \
  --platform android \
  --file-path ./libs/arm64-v8a

Harmony平台:上传鸿蒙符号文件

上传SO文件

alibabacloud-apm-cli \
  --app-key 123456 \
  --access-key-id LTAI5t*** \
  --access-key-secret 3yN*** \
  --platform harmony \
  --file-path ./libs/arm64-v8a/libdemo.so

上传混淆映射文件

alibabacloud-apm-cli \
  --app-key 123456 \
  --access-key-id LTAI5t*** \
  --access-key-secret 3yN*** \
  --platform harmony \
  --file-path ./obfuscation \
  -v 1.0.0

H5平台:上传source map文件

alibabacloud-apm-cli \
  --app-key 123456 \
  --access-key-id LTAI5t*** \
  --access-key-secret 3yN*** \
  --platform h5 \
  --file-path ./dist/main.js.map \
  --app-version 3.2.0

查看结果

  1. 登录EMAS管理控制台,选择应用监控点击进入,进入到应用监控控制台。

  2. 在页面左侧导航栏选择崩溃分析,选择符号表管理image

常见问题

权限错误

问题描述:

上传失败:权限验证失败

可能原因和解决方案:

  1. AccessKey错误:检查AccessKey IDSecret是否正确

  2. 权限不足:确保AccessKey对应的账号具有以下权限:

    • APM服务的访问权限

    • OSS的上传权限

  3. 时间不同步:确保系统时间与标准时间同步(阿里云API使用时间戳验证)

文件类型识别问题

问题描述:

配置错误:不支持的文件类型

解决方案:

  1. 检查文件路径:确保文件路径正确,文件确实存在

  2. 检查文件格式

    • iOS:确保是 .dSYM 目录,且包含 Contents/Resources/DWARF 结构

    • Android:确保mapping文件包含 .txt 扩展名,SO文件包含 .so 扩展名

    • H5:确保source map文件包含 .map 扩展名

  3. 使用详细日志:添加 --verbose 参数查看详细的文件识别过程

上传失败排查

问题描述:

上传过程中发生错误:网络连接失败

排查步骤:

  1. 检查网络连接:确保能够访问阿里云OSS服务

    ping oss-cn-shanghai.aliyuncs.com
  2. 使用详细日志模式

    alibabacloud-apm-cli --verbose -p ios -f ./MyApp.app.dSYM -v 2.3.1
  3. 检查文件大小:如果文件过大,可能需要更长的上传时间,工具会自动重试

  4. 查看重试信息:工具内置重试机制,会自动重试最多3次,详细日志会显示重试过程

dSYM文件未生成

问题描述:

iOS项目中找不到dSYM文件。

解决方案:

确保Xcode构建设置正确:

  1. 打开Xcode项目

  2. 选择Target → Build Settings

  3. 搜索 "Debug Information Format"

  4. 确保Release配置下设置为 DWARF with dSYM File

7.5 应用版本号问题

问题描述:

配置错误:应用版本号不能为空

说明:

  • 对于iOSdSYM文件和AndroidSO文件,应用版本号是可选的(工具会从文件中提取UUID)

  • 对于Androidmapping.txt文件和H5source map文件,必须提供应用版本号

  • 建议始终提供应用版本号,便于在APM控制台中管理和查看

Java版本问题

问题描述:

Error: A JNI error has occurred

解决方案:

确保Java版本为8或更高:

java -version

如果版本过低,请升级Java运行环境。