Open4
Flutterの環境構築で困ったとき
Flutterの環境構築をしていて詰まったポイントがあったのでそれをメモ
使用環境は以下の通り
M1 Mac 2020
mac OS Monterey 12.3
AndroidSDKにおけるエラー
flutter doctorを実行したところ、以下の二つのエラーが発生した
[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
✗ cmdline-tools component is missing
Run `path/to/sdkmanager --install "cmdline-tools;latest"`
See https://developer.android.com/studio/command-line for more details.
✗ Android license status unknown.
Run `flutter doctor --android-licenses` to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.
エラー:コマンドラインツールがない
まず一つ目のこちらのエラーコマンドラインツールがないよというエラー
cmdline-tools component is missing
解決stepとしては以下の通り
- AdnroidStudioを起動
- More Actionsをクリック
- SDK Managerを選択
- SDK toolsタブを選択
- Andoird SDK Command-line Tools(latest)をチェックしApply
- 確認ダイアログが出たらOKを押す
- インストールが終わったら、FInishボタンを押す
※分かりにくい部分のみスクリーンショットを添付する
Step 1,2,3
Step 4,5
エラー:ライセンスのステイタスが不明
Android license status unknown.
解決策1:ライセンスの承認
エラーに表示される通り、ライセンスの承認を行う
flutter doctor --android-licenses
5 of 7 SDK package licenses not accepted. 100% Computing updates...
Review licenses that have not been accepted (y/N)? y
Accept? (y/N): y
All SDK package licenses accepted
これができればいいが、私の環境ではflutter doctor --android-licenses
を実行すると
以下のエラーが発生した
error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/prefs/AndroidLocationsProvider has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Android sdkmanager tool was found, but failed to run
(/Users/${username}/Library/Android/sdk/cmdline-tools/latest/bin/sdkmanager): "exited code 1".
Try re-installing or updating your Android SDK,
visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions.
その場合は以下の解決策2を使用して解決することができた
解決策2:SDKコマンドラインツールズのダウングレード
以下のStepでSDKコマンドラインツールズのダウングレードを行う
- Android studioでAndroid SDK command-line Tools(latest)のアンチェックを行う
- 右下の”Show package Details”をクリックし、バージョン一覧を表示する
- Android SDK command-line Tools 8.0を選択
- Applyをクリックする
-
/Users/${username}/Library/Android/sdk/cmdline-tools
配下に8.0という名前のファイルが作成されているはずなので、名前をlatestに変更する
% mv 8.0 latest
Step1,2,3,4の参考スクリーンショット
参考
GitHub issues
Xcodeにおけるエラー
[!] Xcode - develop for iOS and macOS
✗ Xcode installation is incomplete; a full installation is necessary for iOS development.
Download at: https://developer.apple.com/xcode/download/
Or install Xcode via the App Store.
Once installed, run:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
エラー:Xcodeのインストールが不完全
書いてある通りにコマンドを事項することで解決することが可能
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
Warning:Cocoapodsが期限切れ
CocoaPods 1.10.1 out of date (1.11.0 is recommended).
CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to
your plugin usage on the Dart side.
Without CocoaPods, plugins will not work on iOS or macOS.
For more info, see https://flutter.dev/platform-plugins
To upgrade see https://guides.cocoapods.org/using/getting-started.html#installation for
instructions.
この場合は、gemを再インストールすることで解決できる
$ [sudo] gem install cocoapods
参考