LoginSignup
1
0

android-sdk を ubuntu22.04 で【Flutterビルド用にCLIだけ入れる】

Last updated at Posted at 2023-11-21

入れ方めっちゃあるやんけ

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_ROOTPATH が通っているか確認してください

❯ 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

終わりです
他にもっと楽なやり方ありそうな気がしますが、
とりあえず動きましたので一旦忘れようと思います。
最後まで読んでいただいてありがとうございました!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0