入れ方めっちゃあるやんけ
Flutter楽しいですよねー! 高パフォーマンスなアプリが iOS/Android 用にサクサク作れます。
僕らのチームの場合「開発初期は殆ど iPhone」で進めて、
「リリースが近づくと Android もテストを始める」感じです。
で、いつも問題になるのが android-sdk のインストール法...いつも忘れちゃう
出来れば Mac に重たい AndroidStudio を入れなく無いので、ビルドだけサーバに回そうと思ったのですが、「CLI のみのインストール」にとにかく罠が多いのです。
ここでは僕らのチームの最適解として、なるべく最小の手間で使えるようにしたいと思います。
CI/CD関連の方にも参考にして頂けるのかなと思います。
(flutter そのものの入れ方は割愛します。 fvm でも snap でもお好みの方法でどうぞ)
ubuntu の apt レポは神
sudo apt update && sudo apt install android-sdk openjdk-17-jdk
いきなりですが、まずコレを。
公式のガイドは「CLIのみ」の人を全く相手にしていません。
解説読むだけ混乱しますので ubuntu を信じましょう
インストールされたものを ${HOME}
に
デフォルトでは、/usr/lib/android-sdk/cmdline-tools
にインストールされるのですが、
ここに置いてあると sudo
しないと触れなくなってしまいます。
(flutter doctor --android-licenses
などのコマンドが sudo
必要な状態になっちゃう)
flutterコマンドは sudo しない事が推奨されていますので、サクッとコピーor移動して、権限も書き換えておきます
sudo cp -rf /usr/lib/android-sdk ~/
sudo chown -R $(id -u):$(id -g) ~/android-sdk
ここでやっと cmdline-tools
を入れる
色んなサイトで「ここから入れろ」と言われるページです。CLIユーザの事は何も考えてません。
https://developer.android.com/studio
一番下の Linux のzipを選択、クリックしてライセンス画面を表示、
ライセンスに同意すると下のボタンがクリッカブルになりますので、右クリックしてこんな感じのURLを取得します
https://dl.google.com/android/repository/commandlinetools-linux-10406996_latest.zip
これをサーバ機の~
にでも wget します
wget https://dl.google.com/android/repository/commandlinetools-linux-10406996_latest.zip
ここでハマった!!!!
unzip して、 ~/android-sdk
に放り込み... と最近のsdkではディレクトリ名でバージョン管理をするんだそうで。
unzip commandlinetools-linux-10406996_latest.zip
mkdir -p ~/android-sdk/cmdline-tools/latest
mv ~/cmdline-tools/* ~/android-sdk/cmdline-tools/latest/
が正しい位置となります。あちこちのサイトに /latest/
部分が抜けたガイドがありますのでご注意下さい。
.zshrc/.bashrc に環境変数を設定
ビルドには javac
が必要です。一緒に設定しておきます
いろんなガイドで $ANDROID_SDK_ROOT
という変数名も出てくるのですが、これは要らないみたい。
# JDK
JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH
# android sdk
export ANDROID_HOME=${HOME}/android-sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools/bin
上記を .zshrc/.bashrc
の最後に追記したら、
. ~/.zshrc
などとして再読み込みします
あとは sdkmanager
がやってくれるはず
これで標準的なcliツール群が使えるようになりました。このようにして必要な最低APIレベルのプラットフォームツールをインストールします
sdkmanager "platform-tools" "platforms;android-29" "build-tools;29.0.3"
もし下記のエラーが出た方、$ANDROID_SDK_ROOT
や PATH
が通っているか確認してください
❯ sdkmanager "platform-tools" "platforms;android-29" "build-tools;29.0.3"
Error: Could not determine SDK root.
Error: Either specify it explicitly with --sdk_root= or move this package into its expected location: <sdk>/cmdline-tools/latest/
Flutter ドクター
最終的に下記の状態になればOKです。
ヘッドレスサーバなので、chromeなどはインストールしていません。
flutter pub get && flutter build apk
などとして、ビルドが通ることを確認しましょう!
❯ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.16.0, on Ubuntu 22.04.3 LTS 6.2.0-36-generic, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✗] Chrome - develop for the web (Cannot find Chrome executable at google-chrome)
! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[✓] Linux toolchain - develop for Linux desktop
[!] Android Studio (not installed)
[✓] Connected device (1 available)
[✓] Network resources
終わりです
他にもっと楽なやり方ありそうな気がしますが、
とりあえず動きましたので一旦忘れようと思います。
最後まで読んでいただいてありがとうございました!