今回はUbuntuデスクトップにAndroidアプリをインストール・
Anbox:Android in a Box
「Anbox」
さっそくAnboxをインストールしてみましょう。Anboxはインストーラーと本体のそれぞれを個別のsnapパッケージとして提供しています。メジャーなLinuxディストリビューションはたいていの場合snapを使えるはずですが、
Ubuntuの場合は次の手順でインストールします。まずはsnapパッケージとして提供されているインストーラーのインストールからです。
$ sudo snap install --classic anbox-installer anbox-installer 1 from 'morphis' installed $ snap list Name Version Rev Developer Notes anbox-installer 1 10 morphis classic core 16-2 1577 canonical -
「--classic
」
次にインストーラーを実行します。途中同意画面などが表示されますので、
$ anbox-installer Android in a Box - Installer IMPORTANT: THIS IS ALPHA LEVEL SOFTWARE. EXPECT INSTABILITY AND BUGS !!!!! IMPORTANT: ALSO PLEASE BE AWARE THAT WE DON'T PROVIDE FULL CONFINEMENT FOR THE SNAP YET !!!! PLEASE NOTE: This script will require root access on your system to install all necessary things. It will prompt you to enter your password when required. What do you want to do? 1. Install Anbox 2. Uninstall Anbox Please enter your choice [1-2]: 1 This is the installer for the anbox runtime environment. It will install certain things on your system to ensure all requirements are available for anbox to work correctly. In summary we will install the following things: * Add the anbox-support ppa ppa:morphis/anbox-support to the host system * Install the anbox-modules-dkms deb package from the ppa which will add kernel modules for ashmem and binder which are required for the Android container to work. * Configure binder and ashmem kernel modules to be loaded automatically on boot. * Add an upstart job for the current user shibata which will start the anbox runtime on login. * Add a X11 session configuration file to allow the system application launcher (Unity7, Gnome Shell, ..) to find available Android applications. Please type 'I AGREE' followed by pressing ENTER to continue or type anything else to abort: I AGREE Starting installation process ... (中略) Done! To ensure all changes made to your system you should now reboot your system. If you don't do this no Android applications will show up in the system application launcher.
このインストーラーは次のことを行います。
- PPAであるppa:morphis/
anbox-support の追加 - 上記PPAからanbox-modules-dkmsパッケージのインストール
- 起動時にbinderモジュールとashmemモジュールをロードするように設定
( /etc/
)modules-load. d/ anbox. conf - 上記モジュールが作るデバイスファイルに対するudevルールを追加
( /etc/
)udev/ rules. d/ 99-anbox. rules snap
コマンドでanboxパッケージをedgeチャンネルから「 --devmode
」でインストール - Androidアプリケーション用のDesktopファイルディレクトリとして
「 $HOME/
」snap/ anbox/ common/ app-data を追加 ( /etc/
)X11/ Xsession. d/ 68anbox - インストール時のユーザーに対して、
ログイン時にAnboxセッションマネージャーを起動するように設定 ( $HOME/
または.config/ upstart/ anbox. conf $HOME/
).config/ systemd/ user/ anbox. service - 注:上記の各種設定ファイルは将来的にPPAのanbox-commonパッケージからインストールするようになります
Anboxを使うためには、adb
コマンドもあったほうが便利です。というわけで、android-tools-adb
パッケージもインストールしておきましょう。
$ sudo apt install android-tools-adb
ここまで進めたら、
特にサードパーティのカーネルモジュールとDKMSをインストールするため、
BinderはAndroid独自のメッセージングシステムで、
snap版のanboxパッケージは今のところedgeチャンネルにのみ存在します。また、--devmode
」--devmode
」--devmode
」/var/
にinterfaceへの接続記録を残すといった対応が行われます
Anboxアプリケーションマネージャー
Anboxを利用するためには、/var/
」/snap/
をオプション付きで実行しているため、

すでにいくつかのアプリはインストール済みです。ただし当然のことながらGoogleの認証を経ていない環境ですので
$ adb install base.apk
特定のapkファイルの入手方法はいくつか存在します。もしインストール済みのAndroidスマートフォンが存在するのであれば、adb
コマンドで取得する方法が一番簡単かもしれません。なお、
$ adb devices (対象のスマートフォンのデバイスIDを確認する) $ adb -s デバイスID shell pm list packages (インストール済みのパッケージリストが表示される) $ adb -s デバイスID shell pm path パッケージ名 (apkファイルのPATHが表示される) $ adb -s デバイスID pull apkファイルのPATH
ちなみにapkファイルを入手したからといって必ずAnboxで動くとは限りません。むしろ動かないアプリのほうが多いかもしれません。
他にも
FLOSSアプリストア「F-Droid」
「F-Droid」
F-Droidアプリをインストールしておけば、
$ wget https://f-droid.org/FDroid.apk $ adb install FDroid.apk


インストールしたアプリに対して、$HOME/
」
Anboxの仕組み
Anbox自体はLXCを使って実装されています。つまりAndroidエミュレーターのルートファイルシステムをコンテナと起動し、anbox
コマンドは、
LXCそのものはホストにインストールされたLXCではなく、anbox
コマンドの本体はC++で書かれたアプリケーションです。LXCのC++ APIを使ってAndroidコンテナを管理しつつ、
この仕組みはUbuntuだからこそ実現できるというものではなく、