PR
Google Play ConsoleProguard R8 / ProGuard難読化コード難読化解除

【ReactNative】この App Bundle に関連付けられている難読化解除ファイルはありません〜対処方法〜

google in smartphone Google Play Console

ReactNative/Expo Bare 環境で、Google Play Console(GPC) にアプリのaabファイルをアップロードしてから下記のような警告が出た場合のシンプルな対処方法をご紹介します。

スポンサーリンク

警告メッセージ

この App Bundle に関連付けられている難読化解除ファイルはありません。難読化コード(R8 / ProGuard)を使用している場合、難読化解除ファイルをアップロードすると、クラッシュと ANR をより簡単に分析、デバッグできるようになります。R8 / ProGuard の使用は、アプリサイズの縮小につながります。

開発環境(Expo Bare)

  • “typescript”: “^5.2.2”
  • “expo”: “~49.0.13”,
  • “react”: “18.2.0”,
  • “react-native”: “0.72.6”

対処

Proguard を有効にする

Proguard を実行して、リリース ビルドの Java バイトコードを縮小します。

Proguard は、APK のサイズをわずかに小さくできるツールです。 これは、アプリが使用していない React Native Java バイトコード (およびその依存関係) の部分を削除することによって行われます。

Proguard を有効にするには、android/app/build.gradle を編集します。

// android/app/build.gradle

/**
 * Set this to true to Run Proguard on Release builds to minify the Java bytecode.
 */
// def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean()
def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: true).toBoolean()

プロジェクト固有の保持オプションを追加する(オプション)

特に expo-notifications を実装している場合は以下の -keep オプションを追加しないと、通知機能が無効になるのでご注意ください。

// android/app/proguard-rules.pro に下記のように追加する

# Add any project specific keep options here:
# expo-notifications
-keep class expo.modules.notifications.NotificationsScoper { *; }

これで完了です!

後は、再度 Android App Bundle ファイルを生成し GPC へアップロードして警告が出るか確かめるだけです!

ProGuard を有効にしても警告が消えない場合(2026 年 7 月 追記)

上の手順で難読化(ProGuard / R8)を有効にしても、Google Play Console の「難読化解除ファイルはありません」という警告が消えない、というケースがあります。これは警告が実際には2 段階を求めているためです。

  1. 難読化(R8 / ProGuard)を有効にする ← 本文の手順
  2. ビルド時に生成される mapping.txt を Play Console にアップロードする ← ここが必要

難読化を有効にすると、クラス名やメソッド名が意味の分からない名前に置き換わります。そのままだとクラッシュのスタックトレースが読めないため、元の名前に戻すための対応表が mapping.txt です。これをアップロードして初めて警告が解消し、Play Console 上でクラッシュが読める形になります。

mapping.txt の場所

リリースビルドを実行すると、次の場所に生成されます。

android/app/build/outputs/mapping/release/mapping.txt

アップロード手順(手動の場合)

  1. Play Console で対象アプリを開く
  2. 該当のリリース(内部テスト・製品版など)を開く
  3. App Bundle の一覧から、対象バージョンの「難読化解除ファイル」欄を確認する
  4. 上記の mapping.txt をアップロードする

バージョンごとに毎回必要です。アプリを更新してビルドし直すたびに mapping.txt も新しくなるため、リリースのたびにアップロードします。

EAS Build を使っている場合

Expo の EAS Build でビルドしている場合は、生成された App Bundle(AAB)に mapping.txt が自動的に含まれます。手動アップロードが不要になるケースもあるため、まずは EAS でビルドした AAB をそのままアップロードして、警告が消えるかを確認してください。

ネイティブコードを含むアプリの注意:同じ画面で「デバッグシンボルをアップロードしていません」という別の警告が出ることがあります。これは難読化とは別で、C/C++ などのネイティブコード用です。必要な場合は build.gradleandroid.defaultConfig.ndk.debugSymbolLevel = 'FULL' を追加すると、AAB にシンボルが自動で含まれます。

※ この追記は Google 公式ヘルプおよび複数の事例に基づく整理であり、当方の環境での再検証は行っていません。

参考リンク

Enabling Proguard to reduce the size of the APK

コメント

タイトルとURLをコピーしました