Flutter3.0及びAndroid Studio「Chipmunk」へのアップグレード時の注意点(まとめ:動画なし)

このページには広告が含まれる場合があります。

 

2022年5月に、Flutterアプリを作るための開発ツールである「Android Studio」がバージョン「Chipmunk」に、

Android Studio「Chipmunk」の起動画面

 

また、FlutterのSDKが3.0にアップデートされましたが、

Flutter 3のイメージ画像

現時点(2022/5/13)では、アップデート適用時にいくつか留意すべき点がありますので注意が必要です。

 

すでに作ったプロジェクトを開こうとすると「Trust and Open Project?」と聞かれる

Android Studio Chipmunkで、すでに作成したプロジェクトを開こうとすると

「Trust and Open Project?」

と題するダイアログが表示されて、開いても大丈夫かどうか聞かれることがありますので、

「Trust and Open Project?」のダイアログ。フォルダ内のすべてか、今のプロジェクトだけを信頼するかを選ぶ

  • 今開こうとしているプロジェクトのあるフォルダ内のプロジェクトがすべて信頼出来る場合は「Trust projects in・・・」にチェックを入れて、
  • 今開こうとしているプロジェクトだけを信頼する場合は「Trust Project」ボタンのみを押して

プロジェクトを開いて下さい(「Trust Project」ボタンは「Trust projects in・・・」にチェックを入れている場合でも要押下)。

 

アップグレード前のFlutterSDKで作ったプロジェクトをビルドする前にやっておいた方がよさそうなこと

アップグレード前のFlutterのSDK(バージョン2.10.5以下)で作ったプロジェクトをそのままビルドすると、ビルドエラーが発生する可能性があるので、ビルド前に以下の作業を行って頂くと発生頻度が低くなると思います。

全プラットフォーム共通

1)pubspec.lockファイルの削除

プロジェクトのpubspec.lockファイルを削除する

 

2)Android StudioのTerminalから「flutter clean」

Android StudioのTerminalで「flutter clean」を実行する

3)「pub get」

pubspec.yamlから「Pub get」を実行し、「exit code 0」になればOK

 

iOSのみ(Macのみ)

4)Podfile.lockファイルの削除

iosフォルダのPodfile.lockを削除する

5)Android StudioのTerminalから「ios」フォルダに移動 => 「pod repo update」

iosフォルダに移動して「pod repo update」を実行する

 

(これらをやっておくと、以下でご紹介しているトラップは発生頻度が低くなると思います)

 

「Error: Member not found: ‘UnicodeChar’.」というビルドエラーが発生

Flutter2.10.x以前で作ったプロジェクトをFlutter3.0にアップグレード後にビルドすると、アップグレード前はちゃんと動いていたにも関わらず、

../../../../flutter/.pub-cache/hosted/pub.dartlang.org/win32-2.3.3/lib/src/structs.g.dart:661:31: Error: Member not found: 'UnicodeChar'.
  int get UnicodeChar => Char.UnicodeChar;
                              ^^^^^^^^^^^
../../../../flutter/.pub-cache/hosted/pub.dartlang.org/win32-2.3.3/lib/src/structs.g.dart:662:38: Error: Setter not found: 'UnicodeChar'.
  set UnicodeChar(int value) => Char.UnicodeChar = value;
                                     ^^^^^^^^^^^
../../../../flutter/.pub-cache/hosted/pub.dartlang.org/win32-2.3.3/lib/src/structs.g.dart:664:29: Error: Member not found: 'AsciiChar'.
  int get AsciiChar => Char.AsciiChar;
                            ^^^^^^^^^
../../../../flutter/.pub-cache/hosted/pub.dartlang.org/win32-2.3.3/lib/src/structs.g.dart:665:36: Error: Setter not found: 'AsciiChar'.
  set AsciiChar(int value) => Char.AsciiChar = value;
                                   ^^^^^^^^^

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

「Error: Member not found: 'UnicodeChar'」のビルドエラー

この場合は、

1)「pubspec.lock」ファイルを削除してから

プロジェクトのpubspec.lockファイルを削除する

2)Terminalから「flutter clean」して

Android StudioのTerminalで「flutter clean」を実行する

3)再度「pub get」すると

pubspec.yamlから「Pub get」を実行し、「exit code 0」になればOK

なぜか解消しました(なぜかはよくわかりません)。

 

「pub get」すると「Failed to build intl_utils:generate:」エラーが発生

Flutter2.10.x以前で作ったプロジェクトをFlutter3.0にアップグレード後に「pub get」すると

pubspec.yamlから「Pub get」を実行し、「exit code 0」になればOK

アップグレード前は普通に出来ていた(exit code 0)のに、

/Users/telulullc/flutter/bin/flutter --no-color pub global run intl_utils:generate
Failed to build intl_utils:generate:
Error: Couldn't resolve the package 'intl_utils' in 'package:intl_utils/intl_utils.dart'.
Error: Couldn't resolve the package 'intl_utils' in 'package:intl_utils/src/generator/generator_exception.dart'.
Error: Couldn't resolve the package 'intl_utils' in 'package:intl_utils/src/utils/utils.dart'.
../../../flutter/.pub-cache/hosted/pub.dartlang.org/intl_utils-2.6.1/bin/generate.dart:3:8: Error: Not found: 'package:intl_utils/intl_utils.dart'
import 'package:intl_utils/intl_utils.dart';
・・・・

という謎の大量エラーが発生することがあります。

pub getで「Failed to build intl_utils:generate」のエラーがたくさん出る

その場合は、

1)Terminalから「flutter pub cache repair」して(PCに保存しているパッケージのソースコードの修復。結構時間かかります)

Terminalで「flutter pub cache repair」を実行する

 

2)キャッシュクリアしてからAndroid Studioを再起動すると

File→「Invalidate Caches / Restart」から「Invalidate and Restart」を押す

うまくいきました。

 

iOSアプリとしてビルドすると「Requested but did not find extension point with identifier Xcode.・・・」というエラーが発生

Flutter2.10.x以前で作ったプロジェクトをFlutter3.0にアップグレード後にiOSアプリとしてビルドすると、アップグレード前はちゃんと動いていたにも関わらず、

xcodebuild[75892:3182634] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
xcodebuild[75892:3182634] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore

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

iOSビルドで「Requested but did not find extension point with identifier Xcode.IDEKit」のエラーが出る

これは「パッケージ」だけを使っている場合には発生しないようで、プラットフォーム固有の機能を使う「プラグイン」を使っている場合に発生するようです。

ぼくの知る限りでは「image_picker」パッケージを使ってるプロジェクトで発生しましたが、これについては

1)パッケージのバージョンを最新(2022/5/12時点:0.85+2)にして

pubspec.yamlで、image_pickerのバージョンを最新(0.8.5+2)にする

2)Podfile.lockファイルを削除してから

iosフォルダのPodfile.lockを削除する

3)Terminalから「flutter clean」して

Android StudioのTerminalで「flutter clean」を実行する

4)「pub get」して

pubspec.yamlから「Pub get」を実行し、「exit code 0」になればOK

5)Terminalからiosフォルダに移動して「pod repo update」

iosフォルダに移動して「pod repo update」を実行する

すると解消しました。

 

Gitコマンドでpushしようとすると「Invocation failed Unexpected end of file from server」エラーが発生

Android Studio内で使えるGitコマンドで「push」しようとすると、Android Studioのアップグレード前は問題なく出来ていたのに、

Invocation failed Unexpected end of file from server
java.lang.RuntimeException: Invocation failed Unexpected end of file from server
  at git4idea.GitAppUtil.sendXmlRequest(GitAppUtil.java:30)
  at git4idea.http.GitAskPassApp.main(GitAskPassApp.java:58)
Caused by: java.net.SocketException: Unexpected end of file from server
  at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:866)
  at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689)
  at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:863)
  at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:689)
  at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1615)
  at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1520)
  at org.apache.xmlrpc.DefaultXmlRpcTransport.sendXmlRpc(DefaultXmlRpcTransport.java:87)
  at org.apache.xmlrpc.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:72)
  at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:194)
  at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:185)
  at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:178)
  at git4idea.GitAppUtil.sendXmlRequest(GitAppUtil.java:27)
  ... 1 more
・・・

というエラーが出て失敗してしまう場合があります。

Gitでpushしようとすると「Invocation failed Unexpected end of file from server」のエラーが出る

その場合は、Android Studioの設定画面(Windowsの場合は「File => Settings」、Macの場合は「Android Studio => Preferences」)から、以下の要領で「Use credential helper」にチェックを入れてやると解消しました。

設定のVersion Control→Gitで「Use credential helper」にチェックを入れる

 

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

イチオシ

40代から感じるモヤモヤを解消できる 無料動画セミナー

あすコロ式・40代からの人生アップデート【新】戦略

アラフォーでキャリアを失ったバリバリ左脳人間・スピリチュアル耐性ゼロの元金融マンが、人生どん底から立ち上がる過程でたどり着いた「人生再構築メソッド」。40代・50代を過ぎて多くの人が感じる「このままでいいんかな?」「この先どうしたらいいかわからない」というモヤモヤを解消し、人生後半戦をアップデートさせる【新】戦略。

今すぐ無料で動画セミナー(80分)を見る ▶

TOP