[Flutter/Android]「エラー: シンボルを見つけられません・・・場所: クラス VERSION_CODES.○」の対処法

FlutterのプロジェクトをAndroidアプリとして実行しようとすると、まれに

Running Gradle task 'assembleDebug'...
/Users/***/flutter/.pub-cache/hosted/pub.dartlang.org/geolocator_android-2.1.0/android/src/main/java/com/baseflow/geolocator/location/LocationMapper.java:29: エラー: シンボルを見つけられません
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
                                                    ^
  シンボル:   変数 S
  場所: クラス VERSION_CODES

という意味不明なエラーが出て、ビルドに失敗する場合があります。

これは、Androidのネイティブコードを操作しているFlutterのプラグイン(≠パッケージ)を入れている場合(geolocatorや音再生関係のパッケージ等)に起こりうるのですが、

(注)Flutterにおける「プラグイン(Plugin)」とは、「Dartコードで書かれたAPIと1つ以上のプラットフォーム固有の実装を組み合わせたもの」を指します。

A specialized Dart package that contains an API written in Dart code combined with one or more platform-specific implementations. Plugin packages can be written for Android (using Kotlin or Java), iOS (using Swift or Objective-C), web, macOS, Windows, or Linux, or any combination thereof.

この例でいうと、Flutterで位置情報を取得するためのパッケージである「geolocator」が、Androidのネイティブ側のコードで「Build.VERSION_CODES.S」を参照しているが、それが見つけられないという参照エラーが起こっていることを示していますので、

(注)VERSION_CODES.Sの「S」はAPIレベル「31」を指します。英文字と数字の対応表は以下の通り

「android/app/build.gradle」ファイルから、「compileSdkVersion」と「targetSdkVersion」の数値を「VERSION_CODES.」の「」に対応するAPIレベルの数値に変更してやるとエラーが解消します(この例の場合は「S」なので「31」)。

(詳しくは、以下の動画で解説していますので、よろしければご覧下さい)

こんな記事も読まれています

おすすめコンテンツ




Flutter(フラッター)


みんプロ作成アプリ




TOP