Google Chrome OSでAndroid開発環境を整えた(AVD起動も可能)

# はじめに
開発マシン用にChromebookを購入しました
Intellijをインストールし、Androidアプリを開発可能な状態まで持っていけた事と、他の方が成功していないAVDによるAndroidエミュレーター起動までうまく行ったため方法を残します。

# 執筆時のバージョン

|Soft          |Ver    |
|:-:           |:-:    |
|Chrome OS     |108.0.5359.111|
|IntelliJ IDEA Ultimate|2022.3.1|

# Chrome OSでLinux開発環境の有効化
設定 > デベロッパー > Linux開発環境 > オンにする　をクリック
![Screenshot 2022-04-10 21.14.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/3cd96a89-c433-b8f7-677f-9d665127cba7.png)

次へをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/837ee797-1fc4-ab3f-2a2e-55da7ea58bb4.png)

ユーザー名は好きに付ける。ディクスサイズは20GB程度は必要。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/7805e047-5ea6-5d4b-3ed6-f4af20c7f41a.png)

しばらく待つ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/3b964e7b-657b-484b-9b30-637f60e4cdcc.png)

ターミナルアプリが立ち上がったらインストール完了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/66743258-063e-d1fc-09e1-d6d10253f603.png)

# 日本語入力、表示を有効化
下記のコマンドをターミナルに流し込んだら、日本語入力は可能な状態になる。

```
sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
source /etc/default/locale
sudo apt -y install fcitx5-mozc

echo "systemctl --user set-environment GTK_IM_MODULE=fcitx" >> ~/.sommelierrc
echo "systemctl --user set-environment QT_IM_MODULE=fcitx" >> ~/.sommelierrc
echo "systemctl --user set-environment XMODIFIERS=@im=fcitx" >> ~/.sommelierrc
echo "/usr/bin/fcitx5 -d" >> ~/.sommelierrc
fcitx5-configtool
```
# GitやKVMなど必要アプリのインストールとKVMの権限付与

```
sudo apt -y install adb git libsecret-1-0 gnome-keyring
sudo apt -y install qemu-kvm
sudo gpasswd -a "${USER}" kvm
```

# JetBrains Toolbox Appをインストールし、ToolboxからIntellijまたはAndroid Studioをインストール
下記のコマンドをターミナルに流すと、JetBrains Toolbox Appがインストールされ立ち上がる

```
wget -cO jetbrains-toolbox.tar.gz "https://www.jetbrains.com/ja-jp/toolbox-app/download/download-thanks.html?platform=linux"
tar -xvzf jetbrains-toolbox*.tar.gz
./jetbrains-toolbox-*/jetbrains-toolbox
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/5a34ffae-2f73-a45f-5021-9fa2ebf2b1f0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/e13ab97e-58c7-9900-3c5c-b85e617f792e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/9b1da0dc-c8d5-6221-6f60-2dd068df5852.png)

ここで、IntelliJ IDEA Ultimate、IntelliJ IDEA Community、Android Studioで必要なものをインストール。
Androidの開発であれば、どれを選択しても可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/78fc9d32-96a4-d11b-150a-2632821dcc12.png)

# AVDが立ち上がるように、ネストされた仮想環境の有効化
くわしくはChrome OSの構造を調べるとわかるが、今まで設定したLinux仮想環境とは、Chrome OS基盤に乗っかったtermina VMの中にネストされた、Debian Containerこそがその本体となる。
https://chromium.googlesource.com/chromiumos/docs/+/master/crostini_developer_guide.md

このDebian Containerはlxcという仮想化ソフトで実行されている。
それで、Android Studioなどで実行されるAVDはKVMという仮想化ソフトで実行されるが、いままでインストールしてきて分かる通り、この実行環境そのものが、lxcの中にいることが理解できると思う。

さて、lxcの実行環境はデフォルトの設定では、その中でネストされた仮想環境は走らないようになっているため、設定を書き換えてやる必要がある。

Chromeを立ち上げ、「ctrl」+「alt」+tでdeveloper shellに入れる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/e9cb9c3a-4f8b-992d-6542-a180e8aafc9e.png)

ここで、以下のコマンドを実行し、termina VMを起動し中に入る。

```
vmc start termina
```

VMの中に入ると、プロンプトの表示が変わるのがわかる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/b88fae1f-3483-d366-065c-a037e26b8479.png)

ここで、lxcのネストを許可するコマンドを実行し、VMをexitで抜ける

```
lxc config set penguin security.nesting true
exit
```

termina VMをストップし、exitでdeveloper shellからも抜ける

```
vmc stop termina
exit
```

これで、Android Studioなどから、KVM環境での仮想化、すなわちAVDが実行できるようになる。


# Chrome OS側のAndroidエミュレーターを実行したい場合
AVDではなく、Chrome OSに初期搭載されているAndroidエミュレーターにアプリをサイドロードできるように設定するには以下の画面の通り設定が必要です。この設定によりAndroid Studioなどから、開発中のアプリをサイドロードできるようになります。
実行速度はこちらの方が早いです。
また、設定画面にも出てきますが、設定をもとに戻したい場合、出荷状態にPowerwashする必要があります。

![Screenshot 2022-04-10 23.43.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/4093b78b-861f-8904-3a2c-7293359cfe96.png)

![Screenshot 2022-04-10 23.44.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/9282ddb5-aeca-d42d-5cdd-876dc4c50fa9.png)

![Screenshot 2022-04-10 23.45.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253664/d4c15e8f-1e58-450d-e3f6-4acb1b6cb342.png)

さらに、x64版のChromebookではAndroidのバージョンが11になったため、WiFi経由でサイドロードができるようになりました。こちらだとPowerwashすることなくもとに戻せるため、おすすめです。

しかしAVDのように、Android11と12などバージョンを切り替えてデバックすることはできません。あくまでChrome OSに搭載された1バージョンについてのデバックのみ可能です。

# 最後に
少し設定は面倒ですが、Chrome OSでもWindowsやmacOSのようにAndroidのフル開発環境が手に入るようになってきました。
開発が捗りますね。