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 ポータル

  1. アプリ モジュールの mapping.txt ビルド ディレクトリからファイルをダウンロードする
  2. App Center にログインし、アプリを選択する
  3. 左側のメニューで、[ 診断 ] セクションに移動します。
  4. マッピングの選択
  5. 右上にある [ マッピングのアップロード ] ボタンをクリックします
  6. [バージョン名] と [バージョン コード] を入力します (特定のビルドでマッピングを機能させるには、そのビルドの Gradle 構成と一致する必要があります)。
  7. アプリ モジュールの mapping.txt ビルド ディレクトリからファイルをアップロードします。
  8. [保存] ボタンをクリックします。

App Center API

API を介してマッピング ファイルをアップロードするプロセスには、バックエンドに領域を割り当てる API 呼び出し、ファイルをアップロードする API 呼び出し、アップロードの状態を更新する API 呼び出しの 3 つがあります。 最初の API 呼び出しの本文では、バージョン コードとversionバージョン名に対応する プロパティと、 file_nameにそれぞれ を設定symbol_typeAndroidProguardbuildする必要があります。

  1. POSTsymbol_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}'
  1. 最初の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}'
  1. 最初のPATCH手順から返された プロパティを使用して、symbol_upload_idsymbol_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 手動でアップロードする必要はありません。

マッピング ファイルの削除

  1. GETsymbols_list API に要求を行います。 これにより、アップロードしたマッピング ファイルの ID が取得されます。
  2. DELETEマッピング ファイル ID を使用して、symbols_upload API に要求を行います。 これにより、指定したマッピング ファイルが削除されます。