🥰

Android Studio を入れずに Android 開発環境を構築する

2022/11/03に公開約2,600字

モチベーション

Flutter や React Native を開発するには Android SDK が必要だが、 VS Code で開発するならわざわざ Android Studio をインストールしたくない. Androidのネイティブアプリケーションを開発する場合でも、IDE のエラーなのか Android のエラーなのか問題の切り分けが面倒なので最小構成で開発したい.

(あとは宗教上の理由で JetBrains 製品を極力使いたくない🙂)

幸い、Google がコマンドラインツールを提供しているのでそれを使って Android Studio に依存しない形で Android 開発環境を構築する.

Java を入れる

お好みの方法で.

sdkmanager を入れる

Android SDK の各種モジュールを管理するために sdkmanager をインストールする.

curl -L https://dl.google.com/android/repository/commandlinetools-mac-8512546_latest.zip -o commandlinetools-mac-8512546_latest.zip
unzip commandlinetools-mac-8512546_latest.zip

$HOME に以下の構成になるように展開結果を配置する.

$HOME
└── android
     └── cmdline-tools
        └── tools
            ├── NOTICE.txt
            ├── bin
            ├── lib
            └── source.properties

$HOME/android/cmdline-tools/tools/bin に PATH を通す. bin 以下には sdkmanager や avdmanager がある.

動作確認

sdkmanager --version

必要なモジュールをインストールする

以下のコマンドで必要なモジュールをインストールする. モジュール一覧は sdkmanager --list で表示されるので必要なものをそこから探す.

sdkmanager --install platform-tools
sdkmanager --install emulator

インストールしたモジュールはそれぞれ $HOME/android/platform-tools,  $HOME/android/emulator に保存される.

各 android バージョン向けのモジュールを追加する.

sdkmanager --install "build-tools;30.0.3"
sdkmanager --install "build-tools;30.0.3"  "platforms;android-30" 

エミュレーターを作成する

エミュレーターを作成するにはシステムイメージが必要なので先にインストールする. これも sdkmanager --list の結果から検索できる. 以前は M1 Mac でエミュレーターの作成にワークアラウンドが必要だったが2022/10月時点では特に必要ない.

sdkmanager --install "system-images;android-30;default;arm64-v8a"

エミュレーターを作成する. ここで --device を指定しないとうまくエミュレーターが起動しない.

avdmanager create avd --name android30 --device "pixel"  --package "system-images;android-30;default;arm64-v8a"

avd に関係するリソースは ~/.android/avd 以下に保存される.

emulator を起動する. $HOME/android/emulator/emulator コマンドを使う. emulator30 は自分が emulator を作成した時に指定した名前にする.

emulator -avd android30

キーボードの設定

Android emulator はデフォルトではタッチ操作モードになっていて、システムのキーボードからの入力を受けつけない.

キーボードから入力できるようにするには ~/.android/avd 以下にある android30.avd/config.ini で以下のように設定する.

- hw.keyboard = no
+ hw.keyboard = yes

dns の設定

android エミュレーターからネットワークに接続するために dns に 8.8.8.8 を追加する.

OSX であれば system preferences > network > advanced > dns > 8.8.8.8 を追加する.

動作確認

emulator -avd android30

Flutter であれば以下のコマンドでアプリケーションの動作確認をできる.

flutter devices
flutter run -d <flutter devices で確認した emulator の名前> 

もし、flutter devices コマンドで emulator が見つからない時は、環境変数 ANDROID_SDK_ROOT=$HOME/android が指定されているか確認する.

Discussion

ログインするとコメントできます