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化してアップロードする方法です。
flutter build appbundle
# ビルド後、以下のパスにディレクトリが生成されます
cd build/app/intermediates/merged_native_libs/release/out/lib
ls -la
デバッグシンボルの確認:
- ビルド成功後、以下のパスにアーキテクチャ別のディレクトリが生成されます:
arm64-v8a
armeabi-v7a
x86_64
x86
(場合によっては)
- ビルド成功後、以下のパスにアーキテクチャ別のディレクトリが生成されます:
zipファイルの作成:
- 上記のディレクトリをすべて選択してzipファイルに圧縮します
- ファイル名は任意(例:
native-debug-symbols.zip
)
macOSユーザー向け注意
macOSでzipを作成する場合、隠しファイル(__MACOSX
や.DS_Store
)が含まれることがあります。これらはPlay Consoleでエラーになるため、以下のコマンドで削除してください:
zip -d native-debug-symbols.zip "__MACOSX*" "*.DS_Store"
- Play Consoleへのアップロード:
- App Bundleをアップロード後、[ネイティブデバッグシンボル]セクションでzipファイルをアップロードします
方法2: 自動化スクリプトの追加(上級者向け)
毎回手動で行うのが面倒な場合、Gradleタスクを追加して自動化できます。
// デバッグシンボルを自動で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ファイルを拒否する場合があります。必ずこれらのアーキテクチャを除外してください。
よくある問題と解決策:
パスが見つからない場合:
- Android StudioやGradleのバージョンによってパスが異なる場合があります
- 実際のプロジェクト構造を確認してパスを調整してください
ビルドエラーが発生する場合:
bash# 詳細なエラー情報を表示 flutter build appbundle --verbose
NDKのバージョン問題:
- 古いNDKを使用している場合、デバッグシンボルの生成に問題が発生することがあります
- Android StudioのSDK Managerで最新のNDKをインストールしてください
まとめ
Google Play Consoleのネイティブコード警告は、以下の手順で解決できます:
flutter build appbundle
でアプリをビルド- 生成されたネイティブライブラリをzip化
- Play Consoleでデバッグシンボルとしてアップロード
自動化したい場合はGradleタスクを追加し、定期的なアプリ更新を効率化しましょう。
INFO
デバッグシンボルをアップロードすると、クラッシュレポートやANR(Application Not Responding)エラーの解析が容易になり、アプリの品質改善に役立ちます。