---
metadata:
  - name: generator
    content: Diplodoc Platform v5.64.0
alternate:
  - https://boost.yandex.com/doc/en/analytics/content/data-collection/upload-dsym.md
  - https://boost.yandex.com/doc/ru/analytics/content/data-collection/upload-dsym.md
  - https://boost.yandex.com/doc/zh/analytics/content/data-collection/upload-dsym.md
  - href: https://boost.yandex.com/doc/zh/analytics/content/data-collection/upload-dsym.md
    type: text/markdown
    title: Markdown version
  - href: https://boost.yandex.com/doc/zh/llms.txt?revision=r21738064
    rel: describedby
---
> **Documentation Index:** Fetch the complete configuration index at https://boost.yandex.com/doc/zh/llms.txt?revision=r21738064

# 上传 iOS 的 dSYM 文件

iOS 崩溃信息以[未符号化](https://developer.apple.com/library/archive/technotes/tn2151/_index.html)的崩溃日志形式发送。 从这些崩溃日志中提取分析数据很困难。 要分析崩溃日志，请上传 dSYM 文件到 Boost。

该 AppMetrica SDK 内置了一个名为 [helper](#helper) 的命令行工具，用于上传 dSYM 文件。 要基于[fastlane](https://docs.fastlane.tools)构建应用，请使用[上传插件](https://github.com/yandexmobile/metrica-plugin-fastlane)。 它帮助你在构建应用时设置自动上传 dSYM 文件。

## 应用构建时自动上传 {#auto}

使用 [fastlane](https://docs.fastlane.tools) 构建你的应用：

1. 安装 `appmetrica` fastlane 插件：

   ```bash translate=no
   fastlane add_plugin appmetrica
   ```

   要了解如何添加插件，请参见[fastlane 文档](https://docs.fastlane.tools/plugins/using-plugins/#add-a-plugin-to-your-project)。

2. 将以下内容添加到 `fastlane/Fastfile` 文件中：

   ```bash translate=no
   lane :release do
   # Your actions before.
   gym(
   workspace: "MyApp.xcworkspace",
   configuration: "Release",
   scheme: "MyApp",
   export_method: "app-store"        # Pass the correct export_method.
   )
   upload_symbols_to_appmetrica(post_api_key: "Post API key")
   # Your actions after.
   end
   ```

   您可以在Boost **设置**中获取 Post API 密钥。 它用于识别你的应用。

   {% note alert "" %}

   应用程序使用 [gym](https://docs.fastlane.tools/actions/gym/#gym) 操作并启用了导出进行构建。 如果你使用 Xcode 构建应用，上传到 App Store Connect 后应用会重新编译。 在这种情况下，你无法使用构建过程中生成的 dSYM 文件。

   {% endnote %}

3. 添加一个通过`助手`上传 dSYM 文件的阶段。 自版本 3.8.0 起，`helper` 工具已得到支持（适用于 AppMetrica SDK）。 它在 SDK 归档中。 [辅助工具参考](#helper).

   1. 在Xcode中打开项目。
   2. 在项目导航器中，选择项目文件。
   3. 在**目标**块中选择您的应用。
   4. 打开**构建阶段**标签。
   5. 点击 **+** → **新建运行脚本阶段**。
   6. 在**输入脚本**字段中添加以下内容：

      ```bash translate=no
      if [ -d "${PODS_ROOT}/AppMetricaCrashes" ]; then
      HELPER_PATH=`find "${PODS_ROOT}/AppMetricaCrashes" -name "helper"`
      if [ -x  "${HELPER_PATH}" ]; then
      "${HELPER_PATH}" auto --post-api-key="Post API key"&
      else
      echo "Crash helper was not found"
      fi
      fi
      ```

      {% note info "" %}

      `自动`模式使用`CONFIGURATION`环境变量。 如果构建使用 `调试` 配置，则不会上传 dSYM 文件。

      {% endnote %}

## 上传缺失的 dSYM 文件 {#after-upload}

如果在构建应用时没有上传 dSYM 文件，崩溃报告中会包含关于未符号化崩溃的警告。

![警告](../../_images/dsym-warning-zh.png){style="border: solid 1px #cccccc; max-width: 800px;"}

要对它们进行符号化，请上传缺失的 dSYM 文件。 您可以在应用的**设置**→**崩溃**页面查看缺失文件的列表Boost。

您可以上传缺失的 dSYM 文件：

{% list tabs %}

- 使用 fastlane


   1. 安装 `appmetrica` fastlane 插件：
      ```bash translate=no
      fastlane add_plugin appmetrica
      ```

      要了解如何添加插件，请参见[fastlane 文档](https://docs.fastlane.tools/plugins/using-plugins/#add-a-plugin-to-your-project)。

   2. 将以下内容添加到 `fastlane/Fastfile` 文件中：
      ```bash translate=no
      lane :refresh_dsyms do
      download_dsyms
      upload_symbols_to_appmetrica(post_api_key: "Post API key")
      clean_build_artifacts
      end
      ```

      在 `download_dsyms` 操作中，您可以指定所需的应用版本和构建号：
      ```bash translate=no
      ...
      download_dsyms(version: "1.0.0", build_number: "345")
      ...
      ```
      了解有关 `download_dsyms` 操作的更多信息，请参阅 [fastlane](https://docs.fastlane.tools/actions/download_dsyms/) 文档。

- 通过网页界面

   1. 找到包含 dSYM 文件的必要归档：

      {% cut "通过 Xcode Organizer" %}

      1. 在 Xcode 界面中，点击 **窗口** → **组织者**。
      2. 在**归档**标签页中，选择适当的应用版本。
      3. 点击 **下载 dSYM**。
         <img src="https://yastatic.net/s3/doc-binary/src/dev/appmetrica/ru/images/common/xcode-archives_organizer.png">

      {% endcut %}

      {% cut "通过 App Store Connect" %}

      1. 在 iTunes Connect 界面中，打开 **活动** 页面。
      2. 在**所有构建**标签页中，选择适当的构建号。
      3. 点击**下载 dSYM**。
         <img src="https://yastatic.net/s3/doc-binary/src/dev/appmetrica/ru/images/common/itunes-connect.png">

      {% endcut %}

      您可以使用在构建过程中生成的 dSYM 文件。

   2. 在Boost界面中，从左侧菜单进入应用设置。
   3. 打开 **崩溃** → **iOS**。
   4. 点击 **选择文件**，上传包含 `app.dSYM` 或 `app` 目录的 ZIP 归档。

- 使用辅助工具

   {% note alert "" %}

   此选项只适用于未使用 Bitcode 构建的应用程序。

   {% endnote %}

   要使用插件，请安装版本 3.8.0 或更高的 AppMetrica SDK。
   要将缺失的 dSYM 文件上传到 Boost，请在终端中运行以下命令：

   ```bash translate=no
   helper -k <post-api-key> <file_path>
   ```
   `文件路径` — dSYM 文件列表或存储这些文件的文件夹。

   [辅助工具参考](#helper).

{% endlist %}

## 辅助工具参考 {#helper}

{% note info "" %}

`helper` 工具自 3.8.0 版本的 AppMetrica SDK 起受支持。 它在 SDK 归档中。

{% endnote %}

Helper 是一个命令行工具，可以让您上传 dSYM 文件到 Boost。

```bash translate=no
$ helper [auto] [-o | --package-output-path=<path>] [-v | --verbose]
         [--version] -k <post-api-key> | --post-api-key=<key> [file ...]
```

**参数**

#|
|| `auto` | 自动上传模式。 在这种模式下，`助手` 使用以下变量：
- `配置` — 用于定义配置。 如果构建使用 `Debug` 配置，则不会上传 dSYM 文件。
- `DWARF_DSYM_FOLDER_PATH` — 用于查找 dSYM 文件。 通常这取决于 `BUILT_PRODUCTS_DIR` 变量。
- `AMA_POST_API_KEY` — [发布 API 密钥](*发布 API 密钥)。 如果指定，您可以在自动模式下使用短 `helper auto&` 命令。 ||
   || `‑k` | 发布 API 密钥。 您可以在 **设置** 中获取 Post API 密钥 Boost。 它用于识别你的应用。 ||
   || `‑o` | 临时文件存储文件夹的路径。

默认情况下，使用系统文件夹。 ||
|| `‑v` | 允许显示额外信息。 ||
|| `‑‑version` | 输出版本。 ||
|| `文件` | 存储 dSYM 文件的文件夹列表。

默认情况下，使用本地工作文件夹。||
|#

`&` 允许您同时运行 `helper`，而不会阻塞整个项目的构建。 示例命令：
```
helper auto --post-api-key="发布 API 密钥"&
```

## 了解更多 {#learn-more}

- [崩溃和错误报告](https://boost.yandex.com/doc/zh/analytics/content/mobile-reports/crashes-and-errors.md)
- [苹果文档](https://developer.apple.com/library/archive/technotes/tn2151/_index.html)

<!-- source: zh/analytics/content/_includes/feedback-button.md -->
如果您没有找到所需答案，可以通过反馈表单提交您的问题。 请尽可能详细地描述问题。 如果可能，请附上截图。

<a href="../troubleshooting/feedback-new">
  <span class="button">联系支持</span>
</a>

<a href="../troubleshooting/feedback-docs">
  <span class="button">为文档提出改进建议</span>
</a>
<!-- endsource: zh/analytics/content/_includes/feedback-button.md -->

[*Post API key]: 您可以在Boost **设置**中获取 Post API 密钥。 它用于识别你的应用。