共用方式為


Android NDK

這很重要

Visual Studio App Center 於 2025 年 3 月 31 日淘汰,但分析和診斷功能除外,這些功能將持續支援到 2026 年 6 月 30 日。 瞭解更多資訊。

Android NDK 可讓您使用 C 和 C++來實作 Android 應用程式的部分。 您可以使用 Android 應用程式的 Google Breakpad 用戶端連結庫,以原生程式代碼接收有效的堆疊追蹤。 堆疊追蹤可能只包含記憶體位址。 它們不會顯示讀取和了解當機所需的類別名稱、方法、檔名和行號。 若要取得為 Android NDK 應用程式翻譯的記憶體位址,您必須上傳每個組建的應用程式符號。

若要瞭解如何報告 NDK 當機,請參閱 Android 應用程式的 Android SDK 檔 ,或 Unity 應用程式的 Unity SDK 檔

如果您想要將 Breakpad 當機報告從其他平台傳送至 App Center,請參閱 上傳自定義當機報告的文件

未符號化的崩潰報告

未符號化的當機紀錄會顯示在 App Center 的診斷部分,因此即使在上傳符號之前,您仍可查看一些詳細資訊。 這些崩潰的遺漏符號會顯示在 [未符號化] 索引卷標中。如果上傳遺漏的符號,則未符號化的當機群組將會由符號化的當機群組取代。

備註

App Center 不支援來自系統連結庫的框架符號。 鑒於 Android 和其他平台的系統二進位檔高度分散 – 在任何指定的裝置/OS 版本組合上都可能不同 – App Center 不會提供系統二進位檔的符號本身,而且會自動略過系統二進位檔中的符號。

產生 .zip 檔案來上傳

App Center 有兩種方法可以取得必要的符號以進行符號化。 App Center 可以從專案中所使用的原生二進位檔產生它們,也可以直接上傳 Breakpad 符號。

選項 1:上傳原生二進位檔

將項目 obj/local/$ABI/ 目錄中的所有 .so 檔案放入 .zip 檔案中。

選項 2:上傳 Breakpad 符號

  1. 使用 Breakpad 工具鏈匯出符號,如 Breakpad 文件中「取得偵錯符號」一節所述。
  2. 使用下列結構建立 symbols.zip 檔案:

備註

如果您要從 macOS 上傳符號檔案,則必須清除符號檔案中任何無關的資料夾,例如,產生的__MACOS資料夾。要刪除這個資料夾,您可以使用指令 zip -d <symbols.zip> __MACOSX/\*

$ unzip -l symbols.zip
Archive:  symbols.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  07-22-13 15:07   symbols/
        0  07-22-13 15:07   symbols/libnative.so/
        0  07-22-13 15:07   symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/
    12468  07-22-13 15:07   symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/libnative.so.sym
        0  07-22-13 15:07   symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/
    12467  07-22-13 15:07   symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/libnative.so.sym
 --------                   -------
    24935                   6 files

上傳符號

備註

App Center 組建和散發服務可以自動將符號轉送至診斷服務。 如果您使用App Center來建置並自動將應用程式散發給使用者,則不需要手動取得並上傳符號檔,如下列步驟所述。

App Center 入口網站

  1. 登入 App Center 並選取您的應用程式。
  2. 在左側功能表中,流覽至 [ 診斷] 區段,然後流覽 [ 問題]。
  3. 如果您的應用程式尚未回報任何當機,您必須使用 API 或 CLI 來上傳 Breakpad 符號。
  4. 如果您的應用程式已經回報需要符號的當機,請檢查 未符號化 標籤,而且應該有一個缺少符號的版本組,請點擊它以顯示上傳檔案的功能表。
  5. App Center 為符號編製索引之後,系統將會為您建立損毀符號。

App Center API

透過 API 上傳符號的程式牽涉到一系列三個 API 呼叫:一個用來配置後端的空間、一個用來上傳檔案,另一個用來更新上傳的狀態。 第一個 API 呼叫的主體應該設定 symbol_typeBreakpad

  1. POST觸發一個對symbol_uploads API的請求。 此呼叫會在後端為您的檔案配置空間,並回傳 symbol_upload_idupload_url 屬性。
curl -X POST 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{JSON BODY}'
  1. 使用從第一個步驟返回的upload_url屬性,設置PUT請求的標頭:"x-ms-blob-type: BlockBlob",並提供您的檔案在磁碟上的位置。 此呼叫會將檔案上傳至後端記憶體帳戶。 深入瞭解 PUT Blob 要求標頭
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. symbol_uploads API提出請求,使用從第一步驟傳回的symbol_upload_id屬性。 在要求的正文中,請指定您想將上傳的狀態設定為 committed(成功完成)或 aborted(未成功完成)。
curl -X PATCH 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads/{symbol_upload_id}' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{ "status": "committed" }'

備註

符號上傳 API 不適用於大於 256MB 的檔案。 使用 App Center CLI 上傳這些檔案。 您可以遵循 App Center CLI 存放庫中的指示來安裝 App Center CLI。

App Center CLI

您也可以使用 CLI 來上傳符號檔:

appcenter crashes upload-symbols --breakpad {symbols file}

忽略符號

當 App Center 沒有所有符號檔以充分地符號化損毀報告時,這些損毀會被列在 未符號化 標籤中。如果您有存取權,則可以從此頁面上傳所需的符號。

如果您無法上傳符號,您可以選取資料表中的資料列並按下 [忽略版本] 按鈕,將它們標示為 [忽略]。 此按鈕會指示 App Center 處理損毀,並以檔案上的符號盡可能完整地加以符號化。 完成處理之後,它們會出現在 [ 當機 ] 索引標籤中,部分符號化。 也依賴於那些標記為忽略的相同符號ID的新當機,在進入並流經系統時,將會略過未符號化標籤。