Android Deobfuscation
重要
Visual Studio App Center は、2025 年 3 月 31 日に廃止される予定です。 完全に廃止されるまで Visual Studio App Center を引き続き使用できますが、移行を検討できる推奨される代替手段がいくつかあります。
ProGuard、DexGuard、R8 は、Android アプリのコードを最適化および難読化するためのツールです。 未使用のコードを削除し、意味的にあいまいな名前を持つクラス、フィールド、メソッドの名前を変更し、コード ベースを小さくし、リバース エンジニアリングを困難にします。 Android アプリで ProGuard または R8 で難読化を有効にするには、 Android Developer の公式ドキュメントに従ってください。
Android アプリで ProGuard、DexGuard、または R8 が有効になっている場合、スタック トレースを無効にする必要があります。 各ビルドで作成されたファイルをアップロードすると、App Center によって Java、Kotlin、React Native Android アプリのmapping.txt
スタック トレースが自動的に解除されます。 このファイルは、元のクラス、メソッド、およびフィールド名を難読化された名前にマップし、スタック トレースを読み取り可能にします。
App Center Build and Distribution サービスでは、マッピング ファイルを自動的に生成し、診断サービスにアップロードできます。 App Center を使用してアプリをビルドしてエンド ユーザーに自動配布する場合は、以下の手順で説明するように、マッピング ファイルを手動で取得してアップロードする必要はありません。
mapping.txt ファイルのアップロード
App Center ポータル
- アプリ モジュールの
mapping.txt
ビルド ディレクトリからファイルをダウンロードする - App Center にログインし、アプリを選択する
- 左側のメニューで、[ 診断 ] セクションに移動します。
- マッピングの選択
- 右上にある [ マッピングのアップロード ] ボタンをクリックします
- [バージョン名] と [バージョン コード] を入力します (特定のビルドでマッピングを機能させるには、そのビルドの Gradle 構成と一致する必要があります)。
- アプリ モジュールの
mapping.txt
ビルド ディレクトリからファイルをアップロードします。 - [保存] ボタンをクリックします。
App Center API
API を介してマッピング ファイルをアップロードするプロセスには、バックエンドに領域を割り当てる API 呼び出し、ファイルをアップロードする API 呼び出し、アップロードの状態を更新する API 呼び出しの 3 つがあります。 最初の API 呼び出しの本文では、バージョン コードとversion
バージョン名に対応する プロパティと、 file_name
にそれぞれ を設定symbol_type
AndroidProguard
build
する必要があります。
POST
symbol_uploads API への要求をトリガーします。 この呼び出しにより、バックエンドにファイル用の領域が割り当てられ、 プロパティと プロパティがupload_url
返されますsymbol_upload_id
。
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
手順で返された プロパティを使用して、 ヘッダー"x-ms-blob-type: BlockBlob"
を使用して要求を行PUT
い、ディスク上のファイルの場所を指定します。 この呼び出しにより、ファイルがバックエンド ストレージ アカウントにアップロードされます。 PUT BLOB 要求ヘッダーの詳細を確認してください。
curl -X PUT '{upload_url}' \
-H 'x-ms-blob-type: BlockBlob' \
--upload-file '{path to file}'
- 最初の
PATCH
手順から返された プロパティを使用して、symbol_upload_id
symbol_uploads API に要求を行います。 要求の本文で、アップロードの状態をアップロード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 は、256 MB を超えるファイルでは機能しません。 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}
注意
適切mapping.txt
なファイルをアップロードした場合、App Center はチェックできません。 .apk ファイルを作成した直後にファイルをアップロードするか、後でアップロードする場合はコード リポジトリにプッシュすることをお勧めします。
App Center でのビルドからのマッピングの転送
ファイルを生成mapping.txt
するようにビルドが構成されている場合、App Center ビルドでは、使用可能なダウンロードとしてファイルが生成されます。 ビルドを自動的に配布するか、後で手動で配布すると、ファイルが mapping.txt
診断に転送され、受信クラッシュ レポートが無効になります。 ビルドを配布した後にファイルを mapping.txt
手動でアップロードする必要はありません。
マッピング ファイルの削除
GET
symbols_list API に要求を行います。 これにより、アップロードしたマッピング ファイルの ID が取得されます。DELETE
マッピング ファイル ID を使用して、symbols_upload API に要求を行います。 これにより、指定したマッピング ファイルが削除されます。