イントロダクション
AndroidStudioがデカすぎる。
使わずに開発できる方法はないか調べてみたところflake.nixを使うといいらしい。
このNixのインストール手法として、公式よりもDeterminateSystemsのインストーラーを推奨する記事が多かったため、本記事ではそちらを採用している。
また、Nixの操作でWSLとUbuntuを事前にインストールしておく必要があるためそちらの方法も紹介しておく。
OSはWindows11。VSCodeは既にインストール済みの前提で進める。
WSLのインストール
- スタート画面でPowerShellと検索 ⇒ 「Windows PowerShell」を管理者として実行
- 以下を実行
wsl --install - 完了したらバージョン確認
「既定のバージョン: 2」といった文言が出てきたらOK
wsl --status
Ubuntuのインストール
- 同じくWindows PowerShellを管理者権限で実行
- 以下を実行
wsl --install -d Ubuntu
- アカウント名とパスワードを作成
- 「exit」と入力し、一旦抜ける
- wslコマンドで起動するか確認⇒起動したらインストール完了済
Nixのインストール
wsl実行中の状態で以下を実行
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install --determinate
パスワード入力して上手くいけば完了
sdkmanagerのインストール
JDKのダウンロード
・URL: https://adoptium.net/
・Windows x64のJDKを選択してダウンロード
JDKのインストール
・インストーラーを実行
・デフォルトのままでOK
・インストールパスをメモ(例:C:\Program Files\Eclipse Adoptium\jdk-25.0.1.8-hotspot)
JAVA_HOMEの設定
PowerShell(管理者)で以下を実行(インストールしたパスに置き換え):
setx JAVA_HOME "C:\program Files\Eclipse Adoptium\jdk-25.0.1.8-hotspot"
setx PATH "$env:PATH;%JAVA_HOME%\bin"
動作確認
echo $env:JAVA_HOME
java -version
・正しいパスが表示される
・Javaバージョンが表示される
sdkmanagerを確認
& "C:\Android\cmdline-tools\latest\bin\sdkmnager.bat" --version
正常にバージョン番号が出ればOK
エミュレータ作成
Android Commandline-Toolsをダウンロード
- 公式ページ:
https://developer.android.com/studio?hl=ja#command-line-tools-only - Windows版Zipをダウンロード
- 「Android」フォルダを作成
- 「Android」フォルダ内に解凍
- 「cmdline-tools」フォルダ内に「latest」フォルダを作成
- 「cmdline-tools」内にあったディレクトリを全部「latest」内に移動
フォルダ構造は以下のようになる
C:\Android\cmdline-tools\latest\bin
└ sdkmanager.exe
Android SDKコマンドラインツール確認
絶対パスでバージョン確認:
& "C:\Android\cmdline-tools\latest\bin\sdkmanager.bat" --version
正常に出力されれば準備完了
必要なSDKコンポーネントのインストール
PowerShellで以下を実行
& "C:\Android\cmdline-tools\latest\bin\sdkmanager.bat" `
"platform-tools" `
"platforms;android-34" `
"system-images;android-34;google_apis;x86_64" `
"emulator"
説明:
・platform-tools → adb
・emulator → エミュレータ本体
・system-images → 仮想デバイスのOS
・platforms → SDKプラットフォーム
AVD(Android仮想デバイス)の作成
エミュレータ管理コマンド:
& "C:\Android\cmdline-tools\latest\bin\avdmanager.bat" create avd -n unko -k "system-images;android-34;google_apis;x86_64"
これでunkoというエミュレータが作成される
エミュレータの起動
& "C:\Android\emulator\emulator.exe" -avd unko
Androidが起動すれば成功
ANDROID_HOMEの設定
powershellで以下を実行
[Environment]::SetEnvironmentVariable(
"ANDROID_HOME",
"C:\Android",
[EnvironmentVariableTarget]::User
)
PATHの設定
$paths = @(
"C:\Android\cmdline-tools\latest\bin",
"C:\Android\platform-tools",
"C:\Android\emulator"
)
$current = [Environment]::GetEnvironmentVariable("Path", "User")
$new = $current + ";" + ($paths -join ";")
[Environment]::SetEnvironmentVariable("Path", $new, "User")
実行後、PowerShellを再起動する
adbの確認
再起動したpowershellで以下を実行
adb version
adbのバージョンが出ればOK
adb devices
「List of devices attached」と表示されたらOK
VSCodeのセットアップ
WSLのインストール
VSCodeを普通に開き、Extensions(左側の四角いマーク) → "WSL"をインストール
AndroidSDKの有効化
mkdir -p ~/.config/nixpkgs
nano ~/.config/nixpkgs/config.nix
で編集モードに入り、下記コードを最終行の下に右クリックでコピペして追加
{
allowUnfree = true;
}
Ctrl+O → Enter で保存したあと、
Ctrl+X で抜ける
Android開発用のflake.nixを置く
以下でAndroidアプリ開発用フォルダを作成し、移動しておく
mkdir -p ~/android-dev
cd ~/android-dev
flake.nix例:
{
description = "Flake to manage my Java workspace.";
inputs.nixpkgs.url = "nixpkgs/nixpkgs-unstable";
outputs = inputs:
let
system = "x86_64-linux";
pkgs = inputs.nixpkgs.legacyPackages.${system};
in {
devShell.${system} = pkgs.mkShell rec {
name = "java-shell";
buildInputs = with pkgs; [
jdk11
android-tools
];
shellHook = ''
export JAVA_HOME=${pkgs.jdk11}
PATH="${pkgs.jdk11}/bin:$PATH"
'';
};
};
}
flakeの環境に入ってVSCodeを起動
nix develop
code .
これでVSCodeがAndroid開発用のJDK/SDK/adbを使った状態で動くようになる。
Android実機の接続について(重要)
手順:
sudo apt install usbipd
Windows PowerShell(管理者)
usbipd wsl list
usbipd wsl attach --busid 1-7
これで
adb devices
がWSL2でも開くようになる。
参考