DUICUO

オープンソース ライブラリである Anbox を使用すると、Linux 上で Android アプリケーションを実行できます。

[[189417]]

Anbox はコンテナベースのアプローチを使用して、Ubuntu のような通常の GNU Linux システム上で完全な Android システムを起動します。

概要

Anbox は、Linux 名前空間 (user、pid、uts、net、mount、ipc) を使用して、コンテナー内で完全な Android システムを実行し、任意の GNU Linux ベースのプラットフォームで Android アプリケーションを提供します。

コンテナ内のAndroidシステムは、いかなるハードウェアにも直接アクセスできません。すべてのハードウェアアクセスは、ホストマシン上のanboxデーモンを介して処理されます。QEMUエミュレータに基づくAndroid実装では、GLおよびESアクセラレーションによるレンダリングを再利用しています。コンテナ内のAndroidシステムは、独立したパイプラインを使用してホストシステムと通信し、すべてのハードウェアアクセスコマンドをそのパイプラインを介して送信します。

詳細については、次のドキュメントを参照してください。

  • AndroidハードウェアOpenGL ESシミュレーション設計の概要
  • Android QEMU 高速パイプライン
  • Androidの「qemud」再利用デーモン
  • Android qemud サービス

Anboxは現在デスクトップでの使用に適していますが、Ubuntu Touch、Sailfish OS、Lune OSなどのモバイルOSでも使用されています。ただし、Androidアプリのマッピングは現在デスクトップ環境のみに対応しているため、他のユーザーインターフェースをサポートするには追加の作業が必要です。

Android ランタイム環境には、Android オープンソース プロジェクトのイメージをベースにした、最小限のカスタム Android システムが付属しています。現在使用されているイメージは Android 7.1.1 をベースにしています。

インストール

現在、インストールプロセスには、システムにコンポーネントを追加するための複数のステップが含まれています。これには以下が含まれます。

  • バインダーおよび ashmen のリリースされていないツリー外カーネル モジュールを有効にします。
  • udev ルールを使用して、/dev/binder および /dev/ashmem に正しい権限を設定します。
  • ユーザー セッションのスタートアップ タスクとして Anbox セッション マネージャーを起動できます。

プロセスを可能な限りシンプルにするため、必要な手順を「anbox-installer」という単一のSnap(https://snapcraft.io を参照)にまとめました。このインストーラーは必要な手順をすべて実行します。以下のコマンドを実行することで、Snap対応システムであればどこにでもインストールできます。

  1. $ スナップインストール--classic anbox-installer  

または、次のコマンドを使用してスクリプトをダウンロードしてインストールすることもできます。

  1. $ wget https://raw.githubusercontent.com/anbox/anbox-installer/master/installer.sh -O anbox-installer

下記のリストに記載されているものを除き、現時点ではすべてのLinuxディストリビューションをサポートしているわけではありませんのでご注意ください。サポートされているディストリビューションについては、以下のセクションをご覧ください。

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

  1. $ anboxインストーラー

インストールのプロセスをガイドします。

注:Anboxは現在プレアルファ版の開発段階です。本番環境に必要なすべての機能が備わっているとは期待しないでください。バグやクラッシュが発生する可能性は必ずあります。もし発生した場合は、遠慮なくご報告ください。

注:Anbox snapには現在、いかなる制約もないため、エッジチャネルからのみ取得できます。将来的には正しい制約の実現を目指していますが、Anboxの性質と複雑さを考えると、これは容易ではありません。

サポートされているLinuxディストリビューション

現在、以下の Linux ディストリビューションを公式にサポートしています。

  • Ubuntu 16.04 (ゼニアル)

テストされていないが、サポートされる可能性がある:

  • Ubuntu 14.04(信頼できる)
  • Ubuntu 16.10 (ヤッケティ)
  • Ubuntu 17.04 (ゼスティ)

Androidアプリをインストールして実行する

ソースコードからビルドする

Anbox ランタイムのビルドには特別な知識は必要ありません。ビルドシステムには CMake を使用します。ホストシステムには、以下のビルド依存関係が既に設定されているはずです。

  • libdbus
  • Googleモック
  • Googleテスト
  • libboost
  • libboostファイルシステム
  • libboostログ
  • libboost-iostreams
  • libboostプログラムオプション
  • libboostシステム
  • libboostテスト
  • libboostスレッド
  • libcap
  • libdbus-cpp
  • メサ (libegl1、libgles2)
  • glib-2.0
  • libsdl2
  • libprotobuf
  • protobuf コンパイラ
  • lxc

Ubuntu では、次のコマンドを使用してすべての依存関係をインストールできます。

  1. $ sudo apt install build-essential cmake cmake-data debhelper dbus \
  2. google-mock libboost-dev libboost-filesystem-dev libboost-log-dev \
  3. libboost-iostreams-dev libboost-program-options-dev libboost-system-dev \
  4. libboost-test-dev libboost-thread-dev libcap-dev libdbus-1-dev \
  5. libdbus-cpp-dev libegl1-mesa-dev libgles2-mesa-dev libglib2.0-dev \
  6. libglm-dev libgtest-dev liblxc1 libproperties-cpp-dev libprotobuf-dev \
  7. libsdl2-dev lxc-dev pkg-config protobuf-compiler

次に、次のコマンドを使用して Anbox をビルドします。

  1. $ mkdir ビルド
  2. CDビルド
  3. $ cmake 。
  4. $ 作る

次のように簡単なコマンドで、必要なバイナリをシステム内にインストールします。

  1. $ インストールする

Anbox スナップを構築する場合は、次の手順に従ってください。

  1. $ mkdir android-images
  2. $ cp /path/ を/android.img android-images/android.imgに移動します
  3. スナップクラフト

結果は .snap ファイルになり、snap をサポートするシステムにインストールできます。

  1. $ スナップインストール--dangerous --devmode anbox_1_amd64.snap  

Anboxの実行

Anboxをローカルでビルドして実行するには、もう少し学習する必要があります。「実行時の手順」のドキュメントを参照してください。

書類

プロジェクトのソースコードのサブディレクトリには、Anbox に関する追加のドキュメントがあります。

ご興味があれば、ぜひご覧ください:

  • 実行時の手順
  • Android イメージの構築

バグを報告する

Anbox の問題を発見した場合は、バグレポートを送信してください。

ご連絡ください

開発者とつながりたい場合は、FreeNode の #anbox IRC チャネルに参加できます。

著作権とライセンス

Anboxは、Android QEMUエミュレータなどの他のプロジェクトのコードを再利用しています。これらのプロジェクトは、ライセンスステートメント付きのサブディレクトリで外部から利用可能です。

Anbox ソース コード自体は、関連するソース コードで他のライセンスが宣言されていない限り、デフォルトで GPLv3 ライセンスになります。