Googleアプリ配布関係

製品版リリースの作成でaabファイルアップロード後の確認画面で出る2つの警告文について

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

警告
この App Bundle にはネイティブ コードが含まれ、デバッグ シンボルがアップロードされていません。クラッシュや ANR を簡単に分析、デバッグできるよう、シンボル ファイルをアップロードすることをおすすめします。

結論から言うと、その2つの警告は無視して公開しても問題ありません
特に個人開発アプリや小規模アプリでは、最初のリリース時点では対応しないケースも多いです。

今回の内容を見る限り、Google Play Consoleが「推奨設定」を案内しているだけで、公開をブロックするエラーではありません

難読化解除ファイル(mapping.txt)がありません

この App Bundle に関連付けられている難読化解除ファイルはありません。
(R8 / ProGuardを使用している場合)

これは、

  • R8でクラス名やメソッド名を短縮した
  • 例:com.example.myapp.UserProfileManager ↓ a.b.c.a

のような変換をした場合に必要になるファイルです。

R8は変換後に、

mapping.txt

という「変換前 → 変換後」の対応表を作ります。

例えば:

UserProfileManager -> a.b.c
loadUserData       -> d.e

のようなものです。

Google Playのクラッシュ解析では、

Exception at a.b.c:123

では人間には分かりませんが、

mapping.txtがあると、

Exception at UserProfileManager.swift:123

のように復元できます。

ネイティブコードのデバッグシンボル

この App Bundle にはネイティブ コードが含まれ、デバッグ シンボルがアップロードされていません。

これは主に、

  • C/C++
  • NDK
  • Unity
  • Flutter
  • 一部のライブラリ

などが内部でネイティブコードを使っている場合です。

Kotlin + Jetpack Composeだけでも、Android標準ライブラリ内部でネイティブコードを含む場合があるため表示されることがあります。

これも、

「クラッシュ時の詳細解析がしやすくなる」

という意味で、公開可否には関係ありません。

R8とは?

簡単に言うと、

Androidアプリを小さく、高速化し、解析されにくくする仕組み

です。

主な機能は3つあります。

① 不要コード削除(縮小)

例えば、

class Test {
    fun unusedFunction() {
    }
}

のような、使われていないコードを削除します。

APK/AABサイズ削減


② 難読化

例えば:

元:

class PaymentManager {
    fun purchaseSubscription()
}

変換後:

class a {
    fun b()
}

アプリ解析を多少困難にします。


③ 最適化

例えば:

if (true) {
    doSomething()
}

のような不要な処理を整理します。

R8対応

app/build.gradle.kts の設定だけです。

現在:

android {
    buildTypes {
        release {
            isMinifyEnabled = false
        }
    }
}

なら、

android {
    buildTypes {
        release {
            isMinifyEnabled = true
            isShrinkResources = true
            proguardFiles(
                getDefaultProguardFile(
                    "proguard-android-optimize.txt"
                ),
                "proguard-rules.pro"
            )
        }
    }
}

に変更します。

するとAAB作成時に、

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

が生成されます。

これをGoogle Play Consoleにアップロードできます。


ただし、最初の公開ではおすすめ設定は?

今回の状況なら、私は以下をおすすめします。

初回リリース

✅ R8なし
✅ 警告は無視
✅ 公開する

理由:

  • クラッシュ解析基盤がまだ不要
  • R8有効化でライブラリ関連エラーが出ることがある
  • デバッグしやすい状態を維持できる

ユーザーが増えたら

その時点で:

  1. Firebase Crashlytics導入
  2. R8有効化
  3. mapping.txtアップロード
  4. Native debug symbols対応

という流れで十分です。


AppleのApp Store Connectでいう「不足しています」系ではなく、Google Play側の「より運用しやすくするなら設定してください」というレベルなので、安心してリリース作業を進めて大丈夫です。

スクリーンショット

フィーチャーグラフィックのサイズ:1024 * 500

Google Play Console のスクリーンショットは、実機に近く、かつ Play ストアの要件を満たす解像度で撮るのが重要です。

2026年現在、Android Studio の Device Manager で用意されている公式エミュレータの中では、以下がおすすめです。

用途推奨エミュレータ解像度備考
スマートフォン(9:16)Pixel 81080 × 2400現在の標準的なスマホ。Play Console提出に最も無難
スマートフォン(9:16寄り)Pixel 7a1080 × 2400Pixel 8とほぼ同等
7インチタブレットNexus 7 (2013)1200 × 1920画面比率が9:16に近く、7インチカテゴリ向き
10インチタブレットPixel Tablet1600 × 2560Google公式の現行タブレット。Play掲載用としておすすめ

ただし、Google Play Console の現在の要件では、

  • Phone screenshots
  • 7-inch tablet screenshots(任意)
  • 10-inch tablet screenshots(任意)

となっており、タブレット対応をアピールしたい場合のみ提出すればよいケースもあります。

スマートフォン

Pixel 8 (1080×2400)

  • Android 15 も利用可能
  • 現在の主流サイズ
  • Play Store掲載画像として見栄えが良い

7インチタブレット

Nexus 7 (1200×1920)

  • Play Console の 7-inch tablet 枠に適している
  • 縦向きで撮影しやすい

10インチタブレット

Pixel Tablet (1600×2560)

  • Google純正
  • 現行タブレットUIの確認にも使える
  • 高解像度で掲載画像が綺麗

Device Managerで作成する場合

Device Manager → Create Device

  • Phone → Pixel 8
  • Tablet → Nexus 7
  • Tablet → Pixel Tablet

を選択し、

  • Portrait(縦向き)
  • ナビゲーションバーを非表示
  • 通知を非表示
  • アプリの主要画面のみ表示

で撮影すると審査・掲載用として見栄えが良くなります。

なお、あなたのアプリが Jetpack Compose のレスポンシブ対応をしているなら、Pixel 8、Pixel Tablet の2種類だけでも十分なことが多いです。Play Console のタブレット最適化審査を意識するなら、さらに Nexus 7 を追加して 3サイズ分撮影するのがおすすめです。

デモモード

エミュレーターでそのままキャプチャすると、上部のステータスバーに「あやふやな時刻」「中途半端なバッテリー残量」「エラー通知」などが映り込んでしまいます。撮影前にデモモードを有効にすると、時刻が「9:00」、Wi-Fi・バッテリー表示が「MAX」に固定された綺麗な状態になります。

  1. エミュレーターの設定アプリを開く
  2. System > Developer options(デベロッパー モード)を開く
  3. Demo mode(デモモード)を選択し、Enable Demo Mode と Show Demo Mode をONにする

ADB(Android Debug Bridge)を使用すると、ターミナル(Windowsの場合はコマンドプロンプトやPowerShell、Macの場合はターミナル)からコマンドを流し込むだけで、一瞬にしてエミュレーターを完璧なスクリーンショット用の状態(時刻固定、バッテリー100%、通知なし)に切り替えることができます。

以下のコマンド群をターミナルにコピー&ペーストして実行してください。※エミュレーターが起動している状態で行います。

1. デモモードを一括でONにするコマンド

以下の行をすべてコピーし、ターミナルに貼り付けて実行します(Mac/Windows共通)。

Bash

# 1. デモモードの使用を許可する
adb shell settings put global sysui_demo_allowed 1

# 2. デモモードを開始する
adb shell am broadcast -a com.android.systemui.demo -e command enter

# 3. 時計を 12:00 に固定する(hhmm の数字を変えれば好きな時刻にできます)
adb shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm 1200

# 4. Wi-Fiアイコンを最大レベルで表示する
adb shell am broadcast -a com.android.systemui.demo -e command network -e wifi show -e level 4

# 5. モバイルデータ通信アイコンを非表示にする(Wi-Fiのみにする場合)
adb shell am broadcast -a com.android.systemui.demo -e command network -e mobile show -e datatype none -e level 0

# 6. バッテリーを100%(充電中マークなし)にする
adb shell am broadcast -a com.android.systemui.demo -e command battery -e level 100 -e plugged false

# 7. 余計な通知アイコンをすべて非表示にする
adb shell am broadcast -a com.android.systemui.demo -e command notifications -e visible false

コマンドが成功すると、一瞬でステータスバーが「12:00 / Wi-Fi MAX / バッテリー100% / 通知ゼロ」の美しい状態に固定されます。

2. デモモードをOFFにする(元に戻す)コマンド

撮影が終わり、元の状態(実際の時刻や通知を表示する状態)に戻したい場合は、以下のコマンドを1行実行するだけです。

Bash

adb shell am broadcast -a com.android.systemui.demo -e command exit

エラーが出る場合(adb: command not found など)

ADBの環境変数が通っていない可能性があります。Android StudioのTerminalタブ(画面下部)を開いてそこから実行すると、パスが通っていることが多いためスムーズに実行できます。

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