Android Deobfuscation
重要
Visual Studio App Center 已排定於 2025 年 3 月 31 日淘汰。 雖然您可以繼續使用 Visual Studio App Center,直到完全淘汰為止,但有數個建議的替代方案可以考慮移轉至。
ProGuard、DexGuard 和 R8 是優化和模糊處理 Android 應用程式程式代碼的工具。 它會移除未使用的程式代碼、使用語意遮蔽名稱重新命名類別、欄位和方法,讓程式代碼基底變得更小且難以反向工程。 若要在Android應用程式中啟用 ProGuard 或 R8 的混淆,請遵循 官方的 Android 開發人員檔。
在 Android 應用程式中啟用 ProGuard、DexGuard 或 R8 後,您的堆疊追蹤必須已取消搜尋。 當您上傳mapping.txt
在每個組建上建立的檔案時,App Center 會自動清除 Java、Kotlin 和 React Native Android 應用程式的堆疊追蹤。 此檔案會將原始類別、方法和功能變數名稱對應至模糊化名稱,讓堆疊追蹤可讀取。
App Center 組建和散發服務可以自動產生對應檔案,並將其上傳至診斷服務。 如果您使用App Center來建置應用程式並自動散發給終端使用者,則不需要手動取得並上傳對應檔案,如下列步驟所述。
上傳 mapping.txt 檔案
App Center 入口網站
mapping.txt
從應用程式模組的組建目錄下載檔案- 登入 App Center 並選取您的應用程式
- 在左側功能表中,流覽至 [ 診斷] 區 段
- 選取 對應
- 按下右上方的 [上傳對應 ] 按鈕
- 填入版本名稱和版本代碼 (這些必須符合該組建的 Gradle 組態,才能讓對應適用於特定組建)
mapping.txt
從應用程式模組的組建目錄上傳檔案。- 按一下 [儲存] 按鈕。
App Center API
透過 API 上傳對應檔案的程式包含一系列三個 API 呼叫:一個在後端配置空間、一個用來上傳檔案,另一個用來更新上傳的狀態。 第一個 API 呼叫的主體應該設定 symbol_type
為 AndroidProguard
, build
以及 version
分別對應至版本代碼和版本名稱的屬性,以及 file_name
。
POST
觸發對 symbol_uploads API 的要求。 此呼叫會在後端為您的檔案配置空間,並傳symbol_upload_id
回 和upload_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}'
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}'
- 使用從第一
PATCH
個步驟傳回的屬性,向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-mappings --mapping {mapping file} --version-name {version name} --version-code {version code}
注意
App Center 無法檢查您是否已上傳正確的 mapping.txt
檔案。 建議您在建立.apk檔案之後直接上傳檔案,或者如果您想要稍後上傳檔案,請將它推送至程式代碼存放庫。
從 App Center 中的組建轉送對應
如果組建設定 為產生 mapping.txt
檔案,App Center 組建會以可用的下載方式產生檔案。 自動散發組建,或稍後手動散發它,會將檔案轉送 mapping.txt
至診斷,以取消混淆傳入損毀報告。 發佈組建之後,不需要手動上傳 mapping.txt
檔案。
刪除對應檔案
GET
向symbols_list API 提出要求。 這會擷取您所上傳對應檔案的標識碼。DELETE
使用對應檔案標識碼向symbols_upload API 提出要求。 這會刪除指定的對應檔。