2022年5月に、Flutterアプリを作るための開発ツールである「Android Studio」がバージョン「Chipmunk」に、
また、FlutterのSDKが3.0にアップデートされましたが、
現時点(2022/5/13)では、アップデート適用時にいくつか留意すべき点がありますので注意が必要です。
もくじ
すでに作ったプロジェクトを開こうとすると「Trust and Open Project?」と聞かれる
Android Studio Chipmunkで、すでに作成したプロジェクトを開こうとすると
「Trust and Open Project?」
と題するダイアログが表示されて、開いても大丈夫かどうか聞かれることがありますので、
- 今開こうとしているプロジェクトのあるフォルダ内のプロジェクトがすべて信頼出来る場合は「Trust projects in・・・」にチェックを入れて、
- 今開こうとしているプロジェクトだけを信頼する場合は「Trust Project」ボタンのみを押して
プロジェクトを開いて下さい(「Trust Project」ボタンは「Trust projects in・・・」にチェックを入れている場合でも要押下)。
アップグレード前のFlutterSDKで作ったプロジェクトをビルドする前にやっておいた方がよさそうなこと
アップグレード前のFlutterのSDK(バージョン2.10.5以下)で作ったプロジェクトをそのままビルドすると、ビルドエラーが発生する可能性があるので、ビルド前に以下の作業を行って頂くと発生頻度が低くなると思います。
全プラットフォーム共通
1)pubspec.lockファイルの削除
2)Android StudioのTerminalから「flutter clean」
3)「pub get」
iOSのみ(Macのみ)
4)Podfile.lockファイルの削除
5)Android StudioのTerminalから「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; ^^^^^^^^^
というエラーが出て、ビルドに失敗する場合があります。
この場合は、
1)「pubspec.lock」ファイルを削除してから
2)Terminalから「flutter clean」して
3)再度「pub get」すると
なぜか解消しました(なぜかはよくわかりません)。
「pub get」すると「Failed to build intl_utils:generate:」エラーが発生
Flutter2.10.x以前で作ったプロジェクトをFlutter3.0にアップグレード後に「pub get」すると
アップグレード前は普通に出来ていた(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'; ・・・・
という謎の大量エラーが発生することがあります。
その場合は、
1)Terminalから「flutter pub cache repair」して(PCに保存しているパッケージのソースコードの修復。結構時間かかります)
2)キャッシュクリアしてからAndroid Studioを再起動すると
うまくいきました。
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
というエラーが出て、ビルドに失敗する場合があります。
これは「パッケージ」だけを使っている場合には発生しないようで、プラットフォーム固有の機能を使う「プラグイン」を使っている場合に発生するようです。
ぼくの知る限りでは「image_picker」パッケージを使ってるプロジェクトで発生しましたが、これについては
1)パッケージのバージョンを最新(2022/5/12時点:0.85+2)にして
2)Podfile.lockファイルを削除してから
3)Terminalから「flutter clean」して
4)「pub get」して
5)Terminalから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 ・・・
というエラーが出て失敗してしまう場合があります。
その場合は、Android Studioの設定画面(Windowsの場合は「File => Settings」、Macの場合は「Android Studio => Preferences」)から、以下の要領で「Use credential helper」にチェックを入れてやると解消しました。