Chromebookで動作するAndroidアプリにadbを接続する方法

# はじめに
ChromebookでAndroidアプリが動くようになりました。2016/7月現在対応端末はAsus Chromebook flipのみですが、年内には対応端末が増えるとアナウンスされています。

ChromebookでAndroidアプリを動作させる場合、ほとんどの場合問題なく動作します。が、OSが違うということもあり、独自の対応が必要になってくる場合も増えてくると思います。

ということで、ChromebookのAndroidコンテナにadbを通す方法を調べました。

(本稿はAndroid開発とWindowsの使い方とLinuxの使い方が大体分かってる人向きです)

# Chromebook flipを入手する
国内では2GBモデルが￥34000ぐらいです。ちょっとしたAndroidタブレットよりもずっと安いので皆でガンガン買いましょうｗ

https://www.amazon.co.jp/%E3%83%8E%E3%83%BC%E3%83%88%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3-Chromebook-C100PA-RK3288-%E3%82%BF%E3%83%83%E3%83%81%E3%83%91%E3%83%8D%E3%83%AB-10-1%E3%82%A4%E3%83%B3%E3%83%81/dp/B015W23ZW0/ref=sr_1_1?ie=UTF8&qid=1467715551&sr=8-1&keywords=Chromebook+flip

# Androidアプリが動くようにする
2016/7月現在、devチャネルで配布されているM53でしかAndroidアプリは動作しませんので、以下のリンクを参考にアップデートしてください。

https://ischool.co.jp/2016-06-18/
https://support.google.com/chromebook/answer/1086915?hl=ja

M53以降にアップデートすると、OS起動時にGoogle Playが自動的に入るのでサインインします。
サインイン出来たら、自分のアプリをインストールして動作確認しましょう。
（うまくサインイン出来ない例が報告されています）

# Developerモードに切り換える
デバッグ出来るようにするためには、ChromebookをDeveloperモードに切り換える必要があります。これはつまりAndroidで言うところのBootloader Unlockなので、ここから先はメーカー保証のサポート外の行為になります。
メーカー保証が大事な方はここから先には進まないでください。

https://www.chromium.org/chromium-os/poking-around-your-chrome-os-device#TOC-Putting-your-Chrome-OS-Device-into-Developer-Mode

最初に上記リンク先を上から下までちゃんと読んでください。

flipをdeveloperモードに切り換えるには、以下のページを参照してください。
http://take-root.net/gadgets/chromebook-developer-mode/

Developerモードに切り換える時にPowerWash(システムの初期化)が行われるので、先にユーザーデータのバックアップは取っておきましょう。

#Developerモードで何が出来るの？
ちょっと脱線。

- OSの書き換えが出来ます(本稿では触れません)
- ChromeOSのシェルが使えます(root権限で)
- androidのシェルが使えます(root権限で)
- androidアプリのサイドロード(Google Play以外のソースからのapkインストール)が出来ます

# Developerモードで覚えておくこと
ctrl-alt-\[=>\](F2キー)でシェル画面に切り換え　(VT2=virtual terminal 2と呼びます)
ctrl-alt-\[<=\](F1キー)でGUI画面に切り換え
Chrome上でctrl-alt-tでcrosh(シェルもどき)起動

---
VT2のログインアカウントは chronos / passなし　または、root / test0000

---
androidのシェルを呼び出す。(```adb shell```したような状態)

```
$ sudo android-sh
```
---
androidのシェルでコマンド実行。

```
$ sudo android-sh -c 'command line'
``` 

---
ChromeOS/Androidコンテナ共にroot権限が取れるので、セキュリティ的には凄くヤバイ状態です。運用には気をつけましょう。

# adbのつなぎ方(公式)
以下のリンク先に書かれています。
http://www.chromium.org/chromium-os/android-apps

# adbのつなぎ方(非公式)
~~Windowsではそのままでは使えないので、アレンジしました。~~
(2016/7/25追記 アップデートで手順が簡単になったので、以下公式を日本語で説明したものとなります）

(この後の記述では、特記しない場合VT2にchronosでログインした状態とします)

まず、diskへの変更を可能にします。(vt2)

``` 
$ sudo /usr/libexec/debugd/helpers/dev_features_rootfs_verification
$ sudo reboot
```
ここで一旦再起動されます。

次にsshを有効化します。(vt2)

```
$ sudo /usr/libexec/debugd/helpers/dev_features_ssh
```

次にAndroidコンテナでadbdを起動します。

GUI画面右下の時計パネル→設定を開き、Androidアプリ→設定をクリックします。

![chromesettings.png](https://qiita-image-store.s3.amazonaws.com/0/89529/daaa6766-1f78-d4e6-081c-5e0c276ba763.png)

すると、Androidコンテナの設定アプリが開きます。
いつものように、端末情報→ビルド番号を７回叩いて開発者向けオプションを出し、USBデバッグを有効にします。

ホストPC上からadbを接続します。

```
C:\> adb kill-server
C:\> adb connect <ChromebookのIPアドレス>:22
```
(ChromebookのIPアドレスは```ifconfig```コマンドで分かります)

```adb connect```でエラーが出なければOKです。

```
C:\> adb devices
```

を実行すると、Android設定アプリ上でRSAフィンガープリントの確認画面が表示されるので、チェックボックスにチェックを入れて、OKを押します。

後は普通のAndroidデバッグと同様にadbコマンドが使えるようになります。
再接続時は以下の様にします。

```
C:\> adb kill-server
C:\> adb connect <ChromebookのIPアドレス>:22
```

# Chromebookに最適化してね！
デバッグ出来るようになったらこっちのものなので、一つでも多くのアプリをChromebook対応していきましょう！

# 最後に
Chromebookはいいぞ