たくさんの自由帳

WSL2 の中に Android Studio を入れてアプリ開発をしてみる

投稿日 : | 0 日前

文字数(だいたい) : 11180

どうもこんばんわ。
リトルプリンセスGO! 攻略しました。かわいいいい。特にシリアスとかもないのでひたすらかわいかったです。
えちえちも大体網羅されてていい!!!

Imgur

かわいい、かくかくしかじかだ

Imgur

Imgur

><なみだ目だ、かわいい、ちなみに年上ヒロイン

Imgur

Imgur

りっかちゃん!!
ここのお話すき、かわいい。最後の方の話、素直でよかった~。

Imgur

Imgur

ミーナさん!!まじで顔がいい。
この顔すき

Imgur

!?!?!?!?

Imgur

いい!!神ゲーです
主人公冥利につきてそう

Imgur

Imgur

ひたすらかわいいのでおすすめです!あまあまだった
ミーナさんのえちえちシーンとくによかった...

Imgur

本題

ASUS ROG Allyを買った、えちえちゲームようです。Surface壊れたんで。
(なので別にゲーミングな性能は必要なく、ただ大手のUMPCだから買ったってのがデカい)

ゲーミングな性能を持っているので、適当にAndroid Studioを入れてみたら、なんか普通に動いて、メモリこそ足りないものの、結構動いてた。はやい。
先述の通りメモリは足りないし、キーボードないんだけど、それはそうとビルド環境が持ち出せるのはなんかいいなあって。
(いやまあ使うか分からんのに512GBのストレージを無駄にしていいのかは怪しくなってきた。)

開発環境をローカルに入れるのは、、、

でもこれ、えちえちゲーム専用機にしたいからな~~
Android Studioやらこのブログの開発環境やらいれたらローカルの環境がぐちゃぐちゃになってしまいそう。。

あと、入れてもいいんだけど容量が足りなくなった時に簡単に消せるようにしたい。
多機能なゆえにAndroid Studioを完全にアンインストールするのはなんか面倒くさい記憶がある。

なんかアップデートしたのに古いバージョンのファイルが残ってたりで、気になる人は気になりそう。

Imgur

(↑なぜか残り続けるフォルダたち。古参ぶるな)

こんなこと言ってますが、今使ってるデスクトップは特に気にせずしています。
なのでAndroid Studio / Intellij IDEAが作ったGradleのキャッシュがホームディレクトリにあるし(~/.gradle)、
npmのグローバルインストールや、pnpmのシンボリックリンクだったりしてローカルを汚しまくってます。手遅れ。

WSL2

Windows Subsystem for Linux
WindowsLinuxの仮想マシンを動かせる。VMwareみたいなあれ。

MSが公式で出している方法。これでLinuxにしか無いソフトを使うことが出来ます!!!。
たまによくLinux / macOSのバイナリはあってWindowsだけ無いのを見かける、AnsibleとかRedisとか。
(どっちも使ったこと無いからWindowsで困ってないんだけどさ、、)

ただ、今回はLinuxの仮想マシンが欲しい訳じゃなく、
どっちかというと開発環境をその仮想マシンに閉じ込めてすぐ削除できるようにしたい

ちなみにfor Androidの方は使ったことないままサービス終了です。

最近?のWSLLinuxGUIアプリを動かすことができるようになったそうで、WSL2Linux環境にAndroid Studioや他の開発環境を入れればローカルは綺麗なまま、すぐ削除もできて素敵なのでは!??!
あと、LinuxGUIアプリを動かすドキュメント、そんなに難しく無さそう。

https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/gui-apps

アイコンのペンギンがかわいい。

Imgur

WSL を入れる

一度も入れたことがないので、ドキュメント通り。PowerShellを管理者権限で起動して、以下のコマンドを叩くだけ。
記憶が正しければ昔はPro エディションの Windowsが必要とかだったような。

wsl --install

(もし昔にWSLを使っていた場合はwsl --updateと叩くと更新できます)

Imgur

Wsl/CallMsi/Install/REGDB_E_CLASSNOTREG エラー

参考にしました、ありざいす
https://qiita.com/mfunaki/items/615e4bd5b356230164c1

一回試した時はなんなくインストールできたのに、クリーンインストールした後もう一回試そうとしたらこのエラーで出来なくなってしまった。

Imgur

というわけでGitHubのリリースからダウンロードして入れ直すのを試します。
https://github.com/microsoft/WSL/releases
既に最新版が入っているが、うまく行かないのでWSL自体のインストールから試す。

Imgur

msixの方は失敗したので(同じ ID を持つものの、コンテンツが異なるため、パッケージ...)、
msiの方をダウンロードして入れた。Intel / AMD CPUの方はx64って書いてある方を、Snapdragon CPUの方はarm64って書いてある方でいいはず?

Imgur

ねんのため再起動してみる。
これで晴れてwsl --installができるようになりました。やったぜ

Imgur

Ubuntu がインストールされる

デフォルトのディストリビューションはUbuntuになるそう。Linuxはあんまり触ったことなくDebian系じゃないとわからないので助かった。
(まぁそれすらもよく知らない、ラズパイがこれだった。)

wsl --installが終わると再起動しろって言われたので一旦再起動する。

Imgur

再起動したらUbuntuがスタートに表示されたので開いてみる。

Imgur

そしたら処理が進んで、Linuxのユーザー作成に進みました。スクショ取りそこねました。
インストールできました!!!

Imgur

2回目以降はスタートに表示されるUbuntuを押すことで起動できます。
スタートメニューからUbuntuを起動できる時代かあ。
VMware Playerで立ち上がるのを見守ってたあの頃

ちなみに自作PCの人が使うUbuntuとは違うと思いますがこれはデスクトップ環境が無いUbuntuだからですね。ラズパイを画面無しで使ってる気分。

WSL よく使うコマンド

https://learn.microsoft.com/ja-jp/windows/wsl/basic-commands

これはWindows側で叩くコマンドです。書くまでもないか。

インストールした Linux の状態

wsl -l -v

起動しているかとか。exitで抜けただけだと動きっぱなしになってる?

WSL 終了

wsl --shutdown

Cドライブを開けたいので別のドライブに入れたい

参考にしました、ありざいす

Cドライブは開けておきたい。ので試しにSD カードWSL2の環境を移動させたい。
しかし、直接SD カードに入れることは出来ないそうで、代わりにCドライブに入れたものを移動させる手段を皆やっているらしい。

引越し準備

まずはディストリビューション名を調べます。
wsl --list --verboseコマンドで見れます。

Imgur

NAMEの欄にあるものです。今回はUbuntu(そのままだった)ですね。

次にエクスポートします。
wsl --export {名前} {ファイル名}。今回の例だとwsl --export Ubuntu ubuntu.tarです。今いるフォルダに出来ます。

Imgur

エクスポートしたので、次は消します。
あとでエクスポートしたものをインポートするので消して良いはず。wsl --unregister {名前}でできます。
今回の例ではwsl --unregister Ubuntuですね。

Imgur

はい。消したので、wsl --list --verboseを叩いても何も無いよ!って返ってきます。

エクスポートしたファイルがどこに有るかですが、今のターミナルのパスですね。
馴染みがない場合は、pwdコマンドを叩くと今のパスが分かるので、エクスプローラーでそのパスへ移動するとubuntu.tarがあるはず。

Imgur

引っ越し先

まずは引っ越し先のドライブでPowerShellを開きます。
cdで移動してもいいですし、エクスプローラーで開いて空いてる部分を右クリックするとターミナルで開くがあるので押しても良いです。多分PowerShellだと思う。

Imgur

ターミナルで引っ越し先に移動したら、次に以下のコマンドを叩きます。
wsl --import {名前} {フォルダ} {tarファイルのパス}。今回の例ではwsl --import Ubuntu wsl C\Users\takusan23\ubuntu.tarですね。wslフォルダに展開される感じです。

Imgur

これでwslが戻ってきたはず!
wsl -d {名前}コマンドを叩けば起動するはず。今回の例ではwsl -d Ubuntuです。

Imgur

多分スタートメニューのUbuntuから起動できています。

root ユーザーでログインしているのをやめたい

起動してみるとわかるのですが、rootユーザーになっています。大いなる力には大いなる責任が伴う のあれ。
これは怖いのでできれば初期設定時に作ったLinuxユーザーに戻したいところです。毎回起動したら# su takusan23するのも面倒だし。

Imgur

というわけで戻します。テキストエディタにvimを使いますが何でも良いです(戦争回避)
rootユーザーで叩く必要があるのかは不明ですがそんな気がします。

このコマンドでテキストファイルを開きます。vim /etc/wsl.conf。私の場合は既にありました。

Imgur

そしたらvimが開くので、iを押して編集モードにし、一番最後の行へ移動し、2行書き足します。

[user]
default={ユーザー名}

ユーザー名はUbuntu初期設定時のあれです。
私の場合はdefault=takusan23です。

vimを使っていればEscキーを押し、:wqと入力しエンターを押すことで保存しターミナルへ戻ることが出来ます。

Imgur

これで一旦閉じて、もう一回スタートメニューからUbuntuを押せば、みごと初期設定時のユーザーで入れるようになりました。

Imgur

エクスプローラーで Linux のドライブの中身が見れる

すごい便利、仮想マシンじゃ出来ないんじゃないかなこれ

Imgur

デスクトップアプリを入れてみる

Firefox

手始めにブラウザを入れてみる。ガイドがあったのでそれに従う。 https://support.mozilla.org/ja/kb/install-firefox-linux#

UbuntuDebian系列なので、.deb パッケージのやつをやってみる。
が、apt経由で普通に入れることが出来そう。

順番通りにコマンドを叩けば良いはず。

sudo install -d -m 0755 /etc/apt/keyrings
sudo apt-get install wget
wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null

wgetない場合は一行目も叩く。

echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | sudo tee -a /etc/apt/sources.list.d/mozilla.list > /dev/null
echo '
Package: *
Pin: origin packages.mozilla.org
Pin-Priority: 1000
' | sudo tee /etc/apt/preferences.d/mozilla

↑これはまとめて貼り付ける

sudo apt-get update && sudo apt-get install firefox

YesかNoか聞かれるのでyでエンター。

Imgur

終わったら、firefoxコマンドで起動できます!!
たしかにデスクトップLinuxアプリがWindowsに表示されている...。謎技術すぎる。

firefox

Imgur

また、スタートメニューにもWSL2 Ubuntuの中にあるFirefoxのショートカットが表示されます。
まじで統合されまくっててすごい。

Imgur

ただし、日本語フォントがないので入れないといけない。

どういう仕組みでスタートメニューに登録されるの?

https://www.reddit.com/r/bashonubuntuonwindows/comments/q5a2lv/

デスクトップエントリと言う機能がLinuxにはあるらしく?、デスクトップ環境ありの Ubuntu(自作PCの人達が使ってる方の Ubuntu)だとアプリ一覧に表示させるのに使われているそう。
そしてWSL2でもデスクトップエントリを認識してLinux GUI アプリのショートカットを作ってくれる、、、らしい。

Android Studio

本題!!!!

ダウンロードする

UbuntuAndroid Studioを入れる方法ですが、本家通りでいいはず。
https://developer.android.com/studio/install#linux

もし↑のFirefoxを既に入れている場合、Android StudioのダウンロードページがLinux用に切り替わるはず。

Imgur

Imgur

curl でダウンロード

Firefox入れてない場合は、curlでダウンロードするなり必要。
ただAndroid Studioのダウンロードリンクを調べておく必要があります。調べたらcurlで落とせば。

Imgur

Imgur

mkdir ~/Downloads
cd ~/Downloads
curl -OL {ここにダウンロードリンク}

このコマンドだと適当にホームディレクトリにDownloadsフォルダを作ってそこにいれるようにしています。

インストール

ダウンロードできたら解凍します。sudoなのでパスワードいるかも。

cd /usr/local/
sudo tar zxvf ~/Downloads/android-studio-2024.2.1.12-linux.tar.gz

Imgur

解凍がおわると、android-studioフォルダが出来ているので、android-studioの中のbinの中にあるstudio.shってシェルスクリプトがあるのでそれを実行します。
2回目以降の起動もこの1行を叩けば良いです。

sh /usr/local/android-studio/bin/studio.sh

いや嘘偽りなくLinux GUI アプリが動いてるんだが、
すごい、謎すぎる。

Imgur

セットアップを進めます。
がんばれ~。ネタバレするとエミュレータはちょっと試した限り動かないっぽいので(おま環かも)、
Customで進めて、Android Virtual Deviceのチェックを外しても良いかもしれません。

Imgur

適当にプロジェクトを作ってみました!
ビルドは試せてませんがとりあえずは動いてそうです!!!

Imgur

すげ~~

毎回 sh コマンドを叩くのはめんどい

Firefox (Ubuntu)みたいにスタートメニューにおいて欲しい。
デスクトップエントリと呼ばれるファイルを作ればよいのですが、まず公式で案内されている方法があるので見ます。

https://developer.android.com/studio/install?hl=ja#linux

ひっそりと、ツールバー > Tools > Create Desktop Entryを実行するとデスクトップエントリが作れるよって書いてあるんですが、
WSL2だからなのかデスクトップ環境が無いものだと勘違いされたのか項目がありません。

ので、自分で書きます。
まずは以下のコマンドを叩いてandroid-studio.desktopを作ります。vimを使いますが何でも良いです。(戦争回避)

cd /usr/share/applications/
sudo vim android-studio.desktop

そして以下を貼り付けます。

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Android Studio
Comment=Android Studio
Exec=/usr/local/android-studio/bin/studio.sh
Icon=/usr/local/android-studio/bin/studio.svg

(↓のスクショは若干間違ってて、↑の文字列が正解です。)

Imgur

書けたら保存してターミナルに戻ります。
VimならEscキーを押し:wqでエンター。

これでスタートメニューに「Android Studio (Ubuntu)」が表示されるようになり、押すとWSL2上でAndroid Studioが起動できます!!
もしアイコンがペンギンのままで、反映されてなかったらWindowsを再起動してみてください。

Imgur

Imgur

ターミナルから起動するときと比べて、WSL2Ubuntuが起動していない場合はちょっとだけ時間かかります。
もちろんスタートメニューから押しても起動します。すごい。

Imgur

WSL2 の中にある Android Studio から実機を繋ぎたい

ちなみにエミュレータは1時間くらい戦ったけどダメそうでした。またやってみてもいいけど実機のほうが楽だし。。

Windows 側の用意

WSL2USBデバイスと接続する方法がちゃんとあります。
https://learn.microsoft.com/ja-jp/windows/wsl/connect-usb

まずはここから.msiのインストーラーをダウンロードし、ホストのWindows環境へインストールします。
https://github.com/dorssel/usbipd-win/releases

Imgur

次に端末を繋ぎます。
UMPCだともうポートが埋まってしまう。。。

そしたらWSL2Ubuntuを起動しておきます。ここから先は多分WSL2を起動しておく必要があると思います。

次に新しくPowerShell管理者権限で開き、以下のコマンドを叩きます。

usbipd list

出てきた一覧から、WSL2で使いたいUSBデバイスを探します。
以下例。

Connected:
BUSID   VID:PID     DEVICE
3-1     xxxx:xxxx   Pixel 8 Pro

今回はPixel 8 Proなので3-1ですね。ここは皆さん違うと思う。学校のクラスみたい
BUSIDの部分をそれぞれ以下のコマンド置き換えて、叩きます。私の場合は3-1ですね。

usbipd bind --busid {BUSID}
usbipd attach --wsl --busid {BUSID}

Imgur

WSL2 側の用意

次にWSL2Ubuntuのターミナルへ切り替え、ADBを使う準備をします。
おそらくこのままadbコマンドを叩いても権限が足りなくてAccess denied (insufficient permissions)みたいなエラーが出ちゃうんじゃないかなと思います。
ちなみにADBの所在は~/Android/Sdk/platform-tools/adbってあるはず。

01-28 02:16:11.932   510   510 E adb     : usb_libusb.cpp:598 failed to open device: Access denied (insufficient permissions)
01-28 02:16:11.932   510   510 I adb     : transport.cpp:1153 39171FDJG005SC: connection terminated: failed to open device: Access denied (insufficient permissions)
 
* failed to start daemon
adb: failed to check server version: cannot connect to daemon

というわけで公式を見ます。
どうやらユーザーの操作となんかaptから入れないといけない?
https://developer.android.com/studio/run/device#setting-up

というわけで、公式通りに以下の2つ叩きます。
ADBAccess denied (insufficient permissions)エラーは2行目のaptパッケージをインストールしたら直りました。再起動が必要かもしれません。

sudo usermod -aG plugdev $LOGNAME
apt-get install android-sdk-platform-tools-common

あとはもう一回adbコマンドを叩いてみる。

cd ~/Android/Sdk/platform-tools/
./adb devices

これで認識される(もしくはAndroid端末側に許可ダイアログが表示される)はずです!!

Imgur

後はWSL2上のAndroid Studioを起動します。
スタートメニューでも良いですし、以下のコマンドを叩いても良いです。

sh /usr/local/android-studio/bin/studio.sh

どうでしょうか?
Android Studioの実行で実機が選べるようになってますか?ビルドもできるはず

Imgur

ちなみに使い終わったら引っこ抜けばいいらしい。
だめな場合はUSB ハブを使わないとかしてみてください。

実機で動作確認

思ったよりもずっと速い。
仮想マシンとは思えない。

2回目以降は?

もう一回接続したい場合は、端末を繋いで、WSL2Ubuntuを起動した後、WindowsPowerShellで以下のコマンドを叩くだけでいいはず。これでWSL2側に認識されます。

usbipd attach --wsl --busid {BUSID}

あとはWSL2上のUbuntuAndroid Studioを起動すれば良い。

Imgur

WSL2 の環境を削除したい

Windows上のPowerShellで以下のコマンドを叩きます。

wsl -l

そしたら消したいLinuxのディストリビューションの名前が出てくるので、消したい名前を覚えて以下のコマンドを叩く。
例えばUbuntuだったらこれです。

wsl --unregister Ubuntu

これで容量が開放されるはずです。
もう一度入れたい場合は以下のコマンドでいいはず。

wsl --install

おわりに

積んでるエロゲやるために買ったのになんですかこの記事は

おわりに2

aptで調べるとショート動画のが出てくる!