Androidの互換ソフトウェアAnboxをUbuntu 20.04で試す(楽になってた)

Posted by 雅楽斎 on Wednesday, April 29, 2020

TOC

PC上でのAndroid環境の中で異端なAnbox

PC上でAndroidを動かす場合、開発用に提供されるの環境やアプリ実行用のパッケージがありますが、一般的にそれらはエミュレーションとして環境を再現します。一方でAnboxはAndroid環境を再現しますが、母艦のOSとリソース(メモリとストレージ)を共有する為に無駄がなく、ある意味では一番まっとうなアプローチと言える選択肢です。

先に限界を書きます

Anboxを使ったことがある人は真っ先にその完成度の進捗が気になるところだと思います。基本的には完成度は実用レベルには遠いというところは変わっていないと感じています。

インストールしたのはsnap(edge)から、Androidのバージョンは7.1.1、N6F26Qです。

おおよその傾向

使ってみたアプリで私の環境で動かなかったものは以下になります。マルチメディア系とよく作りこんである系統のアプリは軒並み厳しい動作です。

追記:メディアの再生は作業をすることで改善できました。インストール手順に追記しています。

  • 音楽(プリインストール)
  • Edge(落ちる起動直後にAnboxを巻き込んで固まる)
  • Kiwi Browser(落ちる)
  • Google Chrome(ページを読み込み終わっても何も表示されない)
  • VLC(動画再生しようとすると落ちる)
  • MX Player Pro(動画再生しようとすると落ちる)
  • NewPipe(動画再生画面が真っ黒。アプリは落ちない)
  • Librera Pro(epubを開いても何も表示せずに落ちる)

動いたものは以下になります。

  • X-plore
  • F-Droid
  • Google Play
  • Google日本語入力
  • Twitpane Plus(コンテンツの再生は静止画のみ(追記:動画も再生可)、ビルトインブラウザは何も表示しない)
  • Termux(文字入力の追従が1文字分遅れる)
  • キャラリー(静止画)
  • ファイルマネージャ(プリインストール)
  • DuckDuckGo(URL入力が不安定)
  • VLC
  • MX Player Pro
  • NewPipe

また、パフォーマンスについてもかなりもっさりでハードウェアアクセラレーションが効かないとこんな感じなんだなと実感できます。

Anboxのインストール

Anboxはashmemとbinderをkernelモジュールとして組み込んだ上でsnapパッケージをインストールするというのがUbuntuでの一番簡単なインストール方法でしたが、しばらく使わないうちにここが変わりました。1

PPAの追加とanbox-mudules-dkmsは不要

具体的には、これまでPPAを追加してanbox-modules-dkmsというパッケージをインストールする必要がありますが、Ubuntu 20.042の場合はこの作業は不要です。

本当に不要かどうかは以下のコマンドでモジュールが既に組み込まれているか確認します。【追記】デフォルトだとashmem_linuxbinder_linuxはモジュールとしてロードされないようなので、lsmodコマンドで確認するのはmodprobeコマンドでモジュールをロードしてからになります。

$ lsmod | egrep '(ashmem|binder)'

結果が出力されない場合はmodprobeコマンドを実行

# modprobe ashmem_linux binder_linux

これで以下のような表示になれば、現在のkernelでモジュールをロードできることになります。

$ lsmod | egrep '(ashmem|binder)'
ashmem_linux           20480  21
binder_linux          180224  40

unable to access '/ dev / binder': No such file or directory · Issue #20 · anbox/anbox-modules

hello, trouble on the last command. $ sudo modprobe ashmem_linux $ sudo modprobe binder_linux $ lsmod | grep -e ashmem_linux -e binder_linux binder_linux 151552 0 ashmem_linux 20480 0 $ ls -alh /de...

binderについてはBinderFSがkernel5.0自体にマージされたこと、ashmemについてもUbuntuのkernelではデフォルトで含まれるようになった?ようで、今回ここは飛ばします。

kernelのヘッダファイルをインストール

# apt-get install linux-headers-generic

snapパッケージをインストール

# snap install --devmode anbox --edge

今回インストールするのはedgeです。betaでできなくてedgeだとできることがあるかなと見込んでいたので。

【追記】2020年9月時点のsnapパッケージのインストール方法について

新規にセットアップしたThinkPad X270にAnboxをインストールしようとしたら大ハマリしました。

  • betaのバージョン 186 4-56c25f1
  • 問題のあるedgeのバージョン 198 4+gitr5ab92ef

【画像で分解説明】実用性に全振り!中古のLenovo ThinkPad X270に手を入れて最強の作業環境を構築

色々やってみた結果、一度betaのパッケージをインストールしてedgeのパッケージにアップグレードしないと思ったとおりにインストールできません。betaのパッケージは391MB、edgeのパッケージは406MBあります。パケットが無駄に必要ですね。

Ubuntu 20.04 Cannot install · Issue #1580 · anbox/anbox

Running Ubunutu 20.04.1 amd64: steven@archangel:~/Downloads$ sudo snap install --devmode --edge anbox error: cannot perform the following tasks: - Run install hook of "anbox" snap if present (run h...
# snap install anbox --beta --devmode
anbox 4-56c25f1 from morphis installed
# snap install anbox --edge --devmode
anbox 4+gitr5ab92ef from morphis installed
# snap info anbox
name:      anbox
summary:   Android in a Box
publisher: morphis
store-url: https://snapcraft.io/anbox
license:   unset
description: |
  Runtime for Android applications which runs a full Android system
  in a container using Linux namespaces (user, ipc, net, mount) to
  separate the Android system fully from the host.
commands:
  - anbox
  - anbox.android-settings
  - anbox.appmgr
  - anbox.collect-bug-info
  - anbox.shell
services:
  anbox.container-manager: simple, enabled, active
snap-id:      Nr9K6UJaIOD8wHpDEQl16nabFFt9LLEQ
refresh-date: today at 09:05 JST
channels:
  latest/stable:    –                                    
  latest/candidate: –                                    
  latest/beta:      4-56c25f1     2020-01-02 (186) 391MB devmode
  latest/edge:      4+gitr5ab92ef 2020-08-20 (198) 406MB devmode
installed:          4+gitr5ab92ef            (198) 406MB devmode

betaを先にインストールせずにedgeをインストールすると以下のようになります。liblxc.s0.1が見つからないというエラーが表示されますが、単純にliblxc.so.1をインストールすればよいという話ではなく、snapパッケージの中のliblxc.so.1が見当たらないという話なので、ホストのUbuntuで何をやってもこのエラーは解決できません3

ERROR while loading shared libraries: liblxc.so.1 not found · Issue #1574 · anbox/anbox

Please check that no similar bug is already reported. > Yes and issue was closed with out solution! Make sure you are running the latest version of Anbox > Issue is with snap refresh --devmode --ed...
# snap install --devmode anbox --edge
error: cannot perform the following tasks:
- Run install hook of "anbox" snap if present (run hook "install": 
-----
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
/snap/anbox/198/usr/bin/anbox: error while loading shared libraries: liblxc.so.1: cannot open shared object file: No such file or directory
-----)

追記:メディア対応

No sound and videos not playing in iTube and browser · Issue #904 · anbox/anbox

Please check that no similar bug is already reported. Have a look on the list of open bugs at https://github.com/anbox/anbox/issues => checked none with the same error except a camera issue which w...
# cd /var/snap/anbox/common/rootfs-overlay/system/etc
# wget https://raw.githubusercontent.com/anbox/anbox/master/android/media/media_codecs.xml
# wget https://raw.githubusercontent.com/anbox/anbox/master/android/media/media_codecs_google_audio.xml
# wget https://raw.githubusercontent.com/anbox/anbox/master/android/media/media_codecs_google_telephony.xml
# wget https://raw.githubusercontent.com/anbox/anbox/master/android/media/media_codecs_google_tv.xml
# wget https://raw.githubusercontent.com/anbox/anbox/master/android/media/media_codecs_google_video.xml
# wget https://raw.githubusercontent.com/anbox/anbox/master/android/media/media_profiles.xml
# snap stop anbox
# snap set anbox rootfs-overlay.enable=true
# snap start anbox

ちなみに、Anboxのsnapパッケージで設定できる項目は以下の通りです。

# snap get anbox
Key             Value
rootfs-overlay  {...}
# snap get anbox rootfs-overlay
Key                    Value
rootfs-overlay.enable  true

adbのインストール

# apt-get install android-tools-adb

OSの再起動(必須)

パッケージのインストールが終わったらUbuntuを再起動します。これをしないとadbでanboxに接続できず、追加アプリのインストールができませんでした。

追加アプリのインストール

$ anbox.appmgr

またはメニューにも「その他」で登録されるアイコンで起動します。戻るボタンはEscキーです。

さすがにこれでは難しいので、手っ取り早く追加アプリを入れられるようにadbからインストールします。

F-Droid

$ wget https://f-droid.org/FDroid.apk
$ adb install FDroid.apk

これで一通りx86でも対応できるアプリはF-Droidからインストール可能になります。

F-DroidからNewPipeをインストールすればYoutubeの動画を楽しめます(動画・音楽再生以外)

アプリの設定で日本・日本語に設定すればこうなります。

再生画面はこんな感じです。

Termux

TermuxもF-Droidからインストールできますので、dropbearをインストールしてSSHサーバを起動すれば、AnboxにSSHログインしてターミナルの操作もできます。

$ pkg install apt
$ apt-get install neofetcch
$ apt-get install dropbear
$ passwd
(sshログイン用パスワード設定(公開鍵認証しない場合は必要)
$ dropbear -w -T 2 -j -k -p 2222 -I 600

PC側からAnboxにログインします。(Anbox側のユーザー名はu0_a52)

$ ssh u0_a52@192.168.250.2 -p 2222
$ neofetch
         -o          o-            u0_a52@anbox 
          +hydNNNNdyh+             ------------ 
        +mMMMMMMMMMMMMm+           OS: Android 7.1.1 x86_64 
      `dMMm:NMMMMMMN:mMMd`         Host: Android Anbox 
      hMMMMMMMMMMMMMMMMMMh         Kernel: 5.4.0-26-generic 
  ..  yyyyyyyyyyyyyyyyyyyy  ..     Uptime: 32 mins 
.mMMm`MMMMMMMMMMMMMMMMMMMM`mMMm.   Packages: 57 (dpkg), 1 (pkg) 
:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM:   Shell: bash 5.0.16 
:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM:   Resolution: 1200x1920 
:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM:   Terminal: /dev/pts/1 
:MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM:   CPU: Intel m3-8100Y (4) @ 3.400GHz 
-MMMM-MMMMMMMMMMMMMMMMMMMM-MMMM-   Memory: 3884MiB / 15928MiB 
 +yy+ MMMMMMMMMMMMMMMMMMMM +yy+
      mMMMMMMMMMMMMMMMMMMm                                 
      `/++MMMMh++hMMMM++/`                                 
          MMMMo  oMMMM
          MMMMo  oMMMM
          oNMm-  -mMNs

OpenGapps

F-Droidで賄えないアプリはどうしてもGoogle Playからダウンロードせざるを得ないと思います。物凄く色々やっているので、以下の手順を実行する場合はシェルスクリプトの内容を確認したほうがいいと思います。

GitHub - geeks-r-us/anbox-playstore-installer: Install script that automates installation of googles playstore in anbox

Install script that automates installation of googles playstore in anbox - GitHub - geeks-r-us/anbox-playstore-installer: Install script that automates installation of googles playstore in anbox

導入は物凄く面倒だったんですが、自動化するシェルスクリプトが公開されています。必要であれば導入する程度でいいと思います。PC側で以下を実行します。

$ wget https://raw.githubusercontent.com/geeks-r-us/anbox-playstore-installer/master/install-playstore.sh
$ chmod +x install-playstore.sh

不足パッケージは実行時に教えてくれるので、指摘されたらインストールします。

$ ./install-playstore.sh 
lzip is not installed. Please install lzip.
Example: sudo apt install lzip

シェルスクリプトはを実行します。結構時間がかかります。

$ ./install-playstore.sh 
Restarted.
/var/snap/anbox/common/rootfs-overlay
/home/hogehoge/anbox-work
Extracting anbox android image
Parallel unsquashfs: Using 4 processors
1836 inodes (8401 blocks) to write

[=============================================================-] 8401/8401 100%

created 1659 files
created 280 directories
(略)
:arm64_dyn:M::\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7::/system/lib64/arm64/houdini64:P
Modify anbox features
persist.sys.nativebridge=1
ro.opengles.version=131072
Restart anbox
Restarted.

anbox.appmgrを起動するとGoogle Playが追加されています。

Google Playのパーミッションを変更します。

Settings -> Apps -> Google Play services-> Permissions

Google Playを起動すると、いつも通りのログイン画面が表示されるので、Googleアカウントで認証します。

Google日本語入力は日本語配列の入力方法が欲しいのでインストールしています。

今の所こんな感じになっています(解像度を変えても保持してくれないので、起動する度に形を変えていますが)

ファイルのパス

Anbox上のファイルは/var/snap/anbox/common/data/media/0/からアクセスできます。ただ、rootユーザーでないと入れないのとユーザーが未知のユーザーなので、adb pushadb pullを使ってやり取りするのが正しい方法ではあります。

# ls -la /var/snap/anbox/common/data/media/0
合計 0
drwxrwx--- 1 101023 101023 196  5月  9 09:57 .
drwxrwx--- 1 101023 101023   8  4月 29 08:06 ..
drwxrwxr-x 1 101023 101023   0  4月 29 08:06 Alarms
drwxrwxr-x 1 101023 101023   8  4月 29 08:49 Android
drwxrwxr-x 1 101023 101023  22  4月 29 10:12 DCIM
drwxrwxr-x 1 101023 101023  58  4月 29 10:52 Download
drwxrwxr-x 1 101023 101023  30  4月 29 10:48 Librera
drwxrwxr-x 1 101023 101023  14  4月 29 09:04 Movies
drwxrwxr-x 1 101023 101023   0  4月 29 08:06 Music
drwxrwxr-x 1 101023 101023   0  4月 29 08:06 Notifications
drwxrwxr-x 1 101023 101023   0  4月 29 08:06 Pictures
drwxrwxr-x 1 101023 101023   0  4月 29 08:06 Podcasts
drwxrwxr-x 1 101023 101023   0  4月 29 08:06 Ringtones
drwxrwxr-x 1 101023 101023   0  4月 29 09:07 Subtitles
drwxrwxr-x 1 101023 101023   0  5月  9 09:57 TwitPane

改善されると嬉しいポイント

  • サウンドが出ないのと一切動画が再生できないのが改善
  • ハードウェアアクセラレーション
  • アプリの安定性(たまに動作が遅くなる)
  • より新しいAndroidの採用

最後にシステム情報はこんな感じです。

スポンサーリンク


  1. 公式のインストール手順が追従していませんが https://github.com/anbox/anbox/blob/master/docs/install.md [return]
  2. おそらく19.10以降 [return]
  3. /snap/anboxの下に潜って作業する必要がある [return]

comments powered by Disqus