Skip to content

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

Google Play Consoleでアプリをリリースする際、「このApp Bundleにはネイティブコードが含まれており、デバッグシンボルがアップロードされていません」という警告が表示される場合の解決方法について解説します。

問題の概要

FlutterアプリをビルドしてGoogle Play Consoleにアップロードする際、以下の警告が表示されます:

"This App Bundle contains native code, and you've not uploaded debug symbols. We recommend you upload a symbol file to make your crashes and ANRs easier to analyze and debug."

この警告は、アプリにネイティブコード(C/C++コード)が含まれているが、クラッシュレポートの解析に必要なデバッグシンボルが提供されていないことを示しています。

解決方法

方法1: 手動でデバッグシンボルをアップロード(推奨)

最も確実な方法は、ビルド後に生成されるネイティブライブラリを手動でzip化してアップロードする方法です。

bash
flutter build appbundle
bash
# ビルド後、以下のパスにディレクトリが生成されます
cd build/app/intermediates/merged_native_libs/release/out/lib
ls -la
  1. デバッグシンボルの確認

    • ビルド成功後、以下のパスにアーキテクチャ別のディレクトリが生成されます:
      • arm64-v8a
      • armeabi-v7a
      • x86_64
      • x86(場合によっては)
  2. zipファイルの作成

    • 上記のディレクトリをすべて選択してzipファイルに圧縮します
    • ファイル名は任意(例:native-debug-symbols.zip

macOSユーザー向け注意

macOSでzipを作成する場合、隠しファイル(__MACOSX.DS_Store)が含まれることがあります。これらはPlay Consoleでエラーになるため、以下のコマンドで削除してください:

bash
zip -d native-debug-symbols.zip "__MACOSX*" "*.DS_Store"
  1. Play Consoleへのアップロード
    • App Bundleをアップロード後、[ネイティブデバッグシンボル]セクションでzipファイルをアップロードします

方法2: 自動化スクリプトの追加(上級者向け)

毎回手動で行うのが面倒な場合、Gradleタスクを追加して自動化できます。

groovy
// デバッグシンボルを自動でzip化するタスク
tasks.register('zipNativeDebugSymbols', Zip) {
    from 'build/intermediates/merged_native_libs/release/mergeReleaseNativeLibs/out/lib'
    exclude 'armeabi*'  // 非推奨アーキテクチャを除外
    exclude 'mips'      // 非推奨アーキテクチャを除外
    archiveFileName = 'native-debug-symbols.zip'
    destinationDirectory = file('build/outputs/bundle/release')
}

// bundleReleaseタスク完了後にzip化タスクを実行
tasks.whenTaskAdded { task ->
    if (task.name == 'bundleRelease') {
        task.finalizedBy zipNativeDebugSymbols
    }
}

このスクリプトを追加後、flutter build appbundleを実行すると、自動的にnative-debug-symbols.zipが生成されます。

注意点とトラブルシューティング

非推奨アーキテクチャの除外

最近のPlay Consoleは、非推奨のアーキテクチャ(armeabi, mips)を含むzipファイルを拒否する場合があります。必ずこれらのアーキテクチャを除外してください。

よくある問題と解決策

  1. パスが見つからない場合

    • Android StudioやGradleのバージョンによってパスが異なる場合があります
    • 実際のプロジェクト構造を確認してパスを調整してください
  2. ビルドエラーが発生する場合

    bash
    # 詳細なエラー情報を表示
    flutter build appbundle --verbose
  3. NDKのバージョン問題

    • 古いNDKを使用している場合、デバッグシンボルの生成に問題が発生することがあります
    • Android StudioのSDK Managerで最新のNDKをインストールしてください

まとめ

Google Play Consoleのネイティブコード警告は、以下の手順で解決できます:

  1. flutter build appbundleでアプリをビルド
  2. 生成されたネイティブライブラリをzip化
  3. Play Consoleでデバッグシンボルとしてアップロード

自動化したい場合はGradleタスクを追加し、定期的なアプリ更新を効率化しましょう。

INFO

デバッグシンボルをアップロードすると、クラッシュレポートやANR(Application Not Responding)エラーの解析が容易になり、アプリの品質改善に役立ちます。