在發布版本中加入原生符號

根據預設,應用程式的發布子版本會去除原生程式碼程式庫。這項去除作業包括移除應用程式所用任何原生程式庫中的符號表和偵錯資訊。去除原生程式碼程式庫可大幅縮減檔案大小,但由於缺少資訊 (例如類別和函式名稱),因此無法在 Google Play 管理中心診斷當機問題。如要偵錯當機情形,您必須在 Play 管理中心為應用程式加入偵錯符號檔案。

上傳符號檔案

Google Play 管理中心會在「Android Vitals」下方,回報原生程式碼發生錯誤事件。只需執行幾個步驟,即可為應用程式產生並上傳原生除錯符號檔案。這個檔案可在 Android Vitals 中啟用符號化的原生當機堆疊追蹤 (包括類別和函式名稱),協助您在實際工作環境中對應用程式進行偵錯。這些步驟取決於專案中使用的 Android Gradle 外掛程式版本,以及您使用 Android App Bundle (建議) 或 APK。

Android Gradle 外掛程式 4.1 以上版本

如果您在專案中建構 Android App Bundle (AAB),可以設定建構作業,自動在 AAB 中加入原生偵錯符號檔,這樣一來,您發布應用程式時,這個檔案就會上傳至 Play 管理中心。如要在發布版本中加入這個檔案,請在應用程式的 build.gradle.kts 檔案中加入以下內容:

android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }

請從下列清單中選取偵錯符號級別:

  • 使用 SYMBOL_TABLE 取得 Play 管理中心符號化堆疊追蹤中的函式名稱。這個級別支援空值標記
  • 使用 FULL 在 Play 管理中心的符號化堆疊追蹤中取得函式名稱、檔案和行數。

如果您在專案中建構的是 APK,請使用先前顯示的 android.buildTypes.release.ndk.debugSymbolLevel 設定,分別產生原生偵錯符號檔案。手動將原生偵錯符號檔案上傳至 Google Play 管理中心 (這個程序類似上傳對應檔案來去模糊化堆疊追蹤)。在建構程序中,Android Gradle 外掛程式會在下列專案位置輸出這個檔案:

app/build/outputs/native-debug-symbols/<var>variant-name</var>/native-debug-symbols.zip

Android Gradle 外掛程式 4.0 以下版本 (以及其他建構系統)

在建構程序中,Android Gradle 外掛程式會在專案目錄中保留未移除的程式庫副本。這個目錄結構與下列內容相似:

app/build/intermediates/cmake/universal/release/obj/
├── armeabi-v7a/
│   ├── libgameengine.so
│   ├── libothercode.so
│   └── libvideocodec.so
├── arm64-v8a/
│   ├── libgameengine.so
│   ├── libothercode.so
│   └── libvideocodec.so
├── x86/
│   ├── libgameengine.so
│   ├── libothercode.so
│   └── libvideocodec.so
└── x86_64/
    ├── libgameengine.so
    ├── libothercode.so
    └── libvideocodec.so
  1. 壓縮以下目錄的內容:

    cd app/build/intermediates/cmake/universal/release/obj
    zip -r symbols.zip .
    
  2. 手動symbols.zip 檔案上傳至 Google Play 管理中心。