Monday, July 6, 2020 / Chromebook, Android

Chromebook に Androidアプリをサイドロードする、非デベロッパーモード

Chromebook に Android アプリを入れるには Google Play Store 経由が普通ですが、 開発中のアプリを ストア経由でなく直接 adb でインストールできないものかと思って 調べたところ普通にできることが判明。 今まで、Chromebook 自体をデベロッパーモードに変えないとそういうことができないと思っていたので これはうれしい。

やり方は chromebook sideload apk などでググればわかることですが、備忘録として自分がやった手順をまとめます。 テストで使用したのは ASUS C101PA で ChromeOS Version 83.0.4103.119、モードは通常( 一般モード )で チャネルも Stable です。

Step1: ADB Debugging を有効に

Chromebook の設定画面から Crostini(Linux) を有効にして、それから Develop Android appsEnable ADB Debugging を有効にします。 再起動後に確認ダイアログが出るので confirm で進めます。

確認ダイアログが出る前にログインしてしまうとうまくいきません。再起動後、確認ダイアログで confirm ボタンをクリックしてからログインの順です。

Step2: adb コマンドをインストール

Linuxターミナルを起動して sudo apt install adb します。

Step3: adb の設定

Linuxターミナルで adb tcpip 5555 します。
Allow USB Debugging ダイアログが出るので許可するで進めます。

次に、このChromebook に割り当てられた IP を確認するために adb shell して、 ip addr show します.

inet 100.115.92.2/30 brd 100.115.92.3 scope global arc0

のような表示が出るので、この IPアドレス 100.115.92.2 をメモします。

100.115.92.2 の IPアドレスではなく Local Loopback の 127.0.0.1 の IPアドレス を使っても問題ないようです.

Step4: 接続

adb connect します:

$ adb connect 100.115.92.2
connect to 100.115.92.2:5555

これでエラーが出なければ成功です。

接続しているデバイスを確認:

$ adb devices
List of devices attached
100.115.92.2:5555     device
emulator-5554         device

のように表示されました。 2つデバイスが接続されています。

Step5: apk を install

手元にあったリリース用 apk を(ここでは foo.apk とする)インストール:

adb -s 100.115.92.2 install -r foo.apk

複数デバイスが接続されているので -s オプションでインストール先のデバイスを指定しなければなりません。

これで意図通りインストールできました。 Chromebookのアプリランチャに普通に登録されています。

すばらしい。
あとは、(A案)開発できるだけの十分なスペックを持つ Chromebook を入手するか、 (B案)別の開発マシンで apk を生成して、それをテスト用の Chromebook に持ってきてインストールする、のスムーズな流れを考えなければならない。

ちなみに、別のマシンで開発して adb のネットワーク接続経由で Chromebook に android アプリをインストールする、という流れを実現させるには やはりChromebook自体を 開発者モード にする必要がありそう。詳しく試してまで確認してはいないが。素直にスペックの高い Chromebook を買えって話かな。

追伸: Android Studio からアプリを実行

これならローカルの Chromebook に インストールした Android Studio からアプリ実行できそうなので、試しました。 結論として普通に実行できました。

C101PA と C434TA とにインストールしようとしたところ、C101PA は CPU が未対応で Android Studio インストールできない、 C434TA は普通にインストールできました。

開発手順は、ChromeOS 固有の特別操作などはない。 ただし、手元の C434TA はメモリが 4G しかないためか、Android Studio から開発中のアプリを実行しようとすると Gradle build daemon disappeared unexpectedly エラーになり、アプリが起動しません。

回避方法は stackoverflow にあるように

org.gradle.jvmargs=-Xmx1024m

を プロジェクトホームディレクトリにある gradle.properties に設定すれば回避できました。

ちなみにデフォルトは -Xmx2048m に設定されていた。ホストマシンに 4Gしかメモリ無いのに 2Gを割り当てるのはさすがに無理があるかも。

まとめ:C434TA で動くには動きましたが、まともに開発するにはこのスペックでは到底難しそうです。素直に推奨スペック以上のマシンを入手しなければならない。