Xcode自动化上传符号表

本文演示了如何通过Xcode集成自动化上传符号表工具。

前提条件

在开始配置之前,请确保:

  1. 已安装 CLI 工具:参考命令行工具上传符号表完成命令行工具的下载和安装

  2. 已获取阿里云凭证:参考创建AccessKey获取 AccessKey

  3. Xcode 构建设置正确:确保 dSYM 文件能够正常生成

说明

检查 Xcode dSYM 生成设置

  1. 打开 Xcode 项目

  2. 选择项目 Target → Build Settings

  3. 搜索 Debug Information Format

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

添加脚本

使用 Run Script Build Phase

这是最常用的方式,在每次构建完成后自动执行上传脚本。

步骤1:添加 Run Script Phase

  1. 在 Xcode 中选择您的项目

  2. 选择需要配置的 Target

  3. 点击 Build Phases 标签页

  4. 点击左上角的 + 按钮,选择 New Run Script Phase

  5. 将新创建的 Run Script 拖动到 Embed Frameworks 之后(确保在构建完成后执行)

步骤2:配置脚本

在 Run Script 的 Shell 脚本区域中,粘贴以下脚本:

#!/bin/bash

# ============================================================
# 阿里云 APM dSYM 自动上传脚本
# ============================================================
# APM 应用 Key(从阿里云 EMAS 控制台获取)
APM_APP_KEY="YOUR_APP_KEY"

# 阿里云 AccessKey(建议使用环境变量,见下方说明)
# 如果使用环境变量,请注释掉以下两行
ALIBABA_CLOUD_ACCESS_KEY_ID="YOUR_ACCESS_KEY_ID"
ALIBABA_CLOUD_ACCESS_KEY_SECRET="YOUR_ACCESS_KEY_SECRET"

# CLI 工具路径(根据实际安装位置修改)
CLI_PATH="/usr/local/bin/alibabacloud-apm-cli"
# ------------------------------------------------------------

# 仅在 Release 构建时执行
if [ "${CONFIGURATION}" != "Release" ]; then
    echo "跳过 dSYM 上传:当前为 ${CONFIGURATION} 构建"
    exit 0
fi

# 检查 CLI 工具是否存在
if [ ! -f "${CLI_PATH}" ]; then
    echo "错误:找不到 APM CLI 工具:${CLI_PATH}"
    echo "请先安装工具:https://help.aliyun.com/document_detail/apm-cli"
    exit 1
fi

# 获取 dSYM 路径
DSYM_PATH="${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"

# 检查 dSYM 是否存在
if [ ! -d "${DSYM_PATH}" ]; then
    echo "错误:找不到 dSYM 文件:${DSYM_PATH}"
    exit 1
fi

echo "开始上传 dSYM 文件..."
echo "   路径:${DSYM_PATH}"

# 执行上传
"${CLI_PATH}" \
    --app-key "${APM_APP_KEY}" \
    --access-key-id "${ALIBABA_CLOUD_ACCESS_KEY_ID}" \
    --access-key-secret "${ALIBABA_CLOUD_ACCESS_KEY_SECRET}" \
    --platform ios \
    --file-path "${DSYM_PATH}"

# 检查上传结果
if [ $? -eq 0 ]; then
    echo "dSYM 上传成功"
else
    echo "dSYM 上传失败"
    # 注意:这里使用 exit 0 是为了不阻塞构建流程
    # 如果希望上传失败时中断构建,请改为 exit 1
    exit 0
fi
重要

如果使用环境变量需要删除脚本中对应的参数定义与执行时的传参

步骤3:配置脚本选项

在 Run Script Phase 中,进行以下配置:

  1. 取消勾选 Based on dependency analysis(确保每次构建都执行)

  2. 勾选 For install builds only(仅在 Archive 时执行,可选)

  3. Input Files 中添加:

    $(DWARF_DSYM_FOLDER_PATH)/$(DWARF_DSYM_FILE_NAME)

步骤4:配置环境变量(可选)

为了安全起见,建议不要在脚本中硬编码 AccessKey。您可以通过以下方式配置环境变量:

  1. 点击你的 Project -> Targets -> Build Settings

  2. 点击上方的 + 号,选择 Add User-Defined Setting

  3. 添加以下环境变量:

    • ALIBABA_CLOUD_ACCESS_KEY_ID

    • ALIBABA_CLOUD_ACCESS_KEY_SECRET

    • APM_APP_KEY

验证上传结果

  1. 查看命令行输出:成功上传会显示 dSYM 上传成功 或类似信息

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

  3. 选择符号表管理

CleanShot 2025-12-16 at 15