Ubuntu 16.04: Anboxでコンテナ上でAndroidアプリケーションを動かす

Linuxコンテナ上でAndroidアプリケーションを動かすAnboxが良い感じなので簡単に外観を紹介します。本記事はUbuntu 16.04上で試しています。

1 Anbox

AndroidアプリケーションをLinuxコンテナ上で実行するフレームワークです。コンテナのタイプはシステムコンテナです(アプリケーションコンテナではありません)。以下の特徴があります。

  • コンテナを実現するのにLXCを使っています。Windowsで動かすにはDockerのようにVirtualBoxが必要になるかもしれません。
  • anboxdというデーモンがAndroidアプリケーションのOpenGLESアクセスとホストマシンのOpenGLライブラリを仲介します。
  • ashmem等のカーネルモジュールがdkmsパッケージとして提供されます。
  • systemdはanbox.xxx.serviceを起動します。anbox.xxx.serviceはAndroidルートファイルシステムをマウントし、その中にあるinitを起動します。このinitはAndroidの各種サービスとanboxdを起動します。
  • initの延長でadbdも動作しており、adb経由の操作も可能です。adb devicesではemulaterとして表示されます。
  • anboxdの起動後にAndroidアプリケーションのアイコンがラウンチャに追加されます。
  • Anboxマネージャ経由、あるいはラウンチャに追加されたアイコン経由で、Androidアプリケーションを起動できます。

現状だとAndroidエミュレータと同様にGoogle Playなしのルートファイルシステムです。今後、Google Playありのルートファイルシステムになると思います。

2 Anboxのインストール

インストールするには以下のコマンドを実行します。anbox-installer自体はsnapとして提供されていますが、snap非対応のディストリでも特に問題はないでしょう。

$ sudo snap install --classic anbox-installer
$ printf "1\nI AGREE\n" | anbox-installer
$ sudo reboot

アンインストールするには以下のコマンドを実行します。

$ printf "2\nI AGREE\n" | anbox-installer
$ sudo reboot

3 実行例

Androidのルートファイルシステムがマウントされます。

0001_mount.png

UnityのラウンチャにAnboxとAndroidアプリケーションのアイコンが追加されます。

0002_icon.png