[Linux] Waydroidを使ってAndroidアプリを動かす

Linux
この記事は約7分で読めます。

※当サイトは広告収入で運営されているため、広告が表示される場合があります。

Waydroid とは

WaydroidはLinuxネームスペースを使ってLinuxカーネルのコンテナ内で完全な Android システムを実現するためのアプリケーションです。Waylandディスプレイサーバ専用に作られたプロジェクトです。

要するに一種の Android エミュレーターです。以下のような特徴があります。

  • LXCおよびバインダーインターフェースを介してハードウェアに直接アクセスするので動作が軽快です。
  • Mesaを介してGPUアクセラレーションを行なえます。
  • オープンソース・プロジェクトなのでライセンス問題を気にせず安心して使えます。
  • LineageOS という軽量な Android カスタムOS が標準でついてきます。

ただまだベータ段階であり Wayland を巻き込んでデスクトップ環境ごと落ちることがたまにあるので安定したソフトウェアとは程遠いです。単純な SNS アプリを使用していてもフリーズして落ちることがありました。それでも良ければ使いましょう。

Waydroid の動作条件

  1. CPU 要件
    • armeabi-v7a (ARM 32bit)
    • arm64-v8a (ARM 64bit)
    • x86 (32bit)
    • x86_64(64bit)
  2. GPU 要件
    • Intel 内蔵 GPU (Arc シリーズは不明)
    • AMD GPU
    • NVIDIA GPU では動作しないので内蔵GPUかソフトウェアレンダリングに切り替えなけらばなりません。
  3. セッションマネージャー
    • Wayland のみで動作しますが、X11でもネストすれば動作可能です。

インストール

本記事は Waydroid 公式ホームページを参考に作成しましたので、英語が読解できる方は最初からそちらをご覧担ったほうがわかりやすいでしょう。

1. カーネルを用意する(Arch Linux)

※ Ubuntu や Fedora ならば必要のないステップです。

Arch Linux で Waydroid を起動すると以下のようなエラーメッセージが表示されます。

Failed to load binder driver
modprobe: FATAL: Module binder_linux not found in directory /lib/modules/6.6.8-arch1-1
Binder node "binder" for waydroid not found

どうやら Arch Linux の標準カーネルにはバインダーモジュールが付属していないため、ドライバが読み込めないようです。 解決方法としては3つあります。

  1. Linux−Zen カーネルを使う
    • linux-zen カーネルにはドライバを読み込むのに必要なモジュールが含まれています。
      ただビデオプレイバック機能が機能せず、YouTube アプリなどが真っ暗に表示されてしまいます。
      $ sudo pacman -S linux-zen
  2. DKMS モジュールをインストール
    • AURにある binder_linux-dkms をインストールしカーネルモジュール binder_linux をロードします
    • linux-headers パッケージが必要です
  3. カーネルを自分でビルドする

Zen カーネルをインストールするのが一番お手軽です。

ArchWiki – Waydroid

2. Androidをダウンロード・インストールする

Android OS をダウンロードし、 Waydroid 上にインストールします。

Waydroid を初めて起動すると下のような初期設定を行えるウィンドウが表示されます。

ここでどこのサーバから Android OS を引っ張ってくるか設定できます。Waydroid はデフォルトで Lineage OS をインストールするように設定されています。 Lineage OS はサポートが終了してしまった古いデバイスに継続的なアップデートを提供することを目的としたカスタムROMです。

何もインストールされていない「VANILLA(バニラ)」とGoogleストア同梱版「GAPPS(ギャップス)」があります。F-DroidやAurora Storeなどの代替アプリマネージャーを使う場合は不要です。

「Download」ボタンを押すとダウンロードとインストールが行われます。

無事にインストールが完了し、再び Waydroid を起動するとAndroid のホーム画面が起動します。

3. デバイス認証を行う

Waydroidを起動すると狂ったようにデバイスが未承認であるという通知が表示されます。

Google から許可を得ていない Android デバイスは Google のサービスにアクセスできませんのでデバイスの登録申請をしなければなりません。やり方は至って簡単なので怖がる必要はありません。

まずは Waydroid のシェルを起動します。

 $ sudo waydroid shell

続けて下記のコマンドを入力します。

ANDROID_RUNTIME_ROOT=/apex/com.android.runtime ANDROID_DATA=/data ANDROID_TZDATA_ROOT=/apex/com.android.tzdata ANDROID_I18N_ROOT=/apex/com.android.i18n sqlite3 /data/data/com.google.android.gsf/databases/gservices.db "select * from main where name = \"android_id\";"

以下のような実行結果が表示されるので android_id | 後の ID を Google Play デバイス登録ページにコピペします。

Sign in - Google Accounts

数時間後〜数日でPlayストアの利用許可がおりますのでのんびり待ちましょう。筆者は丸1日かかりましたが、2週間くらいかかったという人もいました。

設定を行う

マルチウィンドウモードにする

GNOME Shell や Plasma デスクトップに統合する形の「マルチウィンドウモード」にします。ホストOSで下記のコマンドを入力し、Waydroid をマルチウィンドウモードで起動するように設定します。

$ waydroid prop set persist.waydroid.multi_windows true

Waydroidコンテナを再起動します。

$ sudo systemctl restart waydroid-container

トラブルシューティング

GPU支援機能を無効にしたい

nVidia製GPU のように Waydroid がサポートしていない GPU だと動作しないことがあります。こういったときは GPUアクセラレーション機能なしで強制的に動作させることができます。

Waydroid の設定ファイルを編集します。

$ sudoedit /var/lib/waydroid/waydroid.cfg

以下の2行を [properties] セクションに挿入します。

ro.hardware.gralloc=default
ro.hardware.egl=swiftshader

最後に設定を適用させます。

$ sudo waydroid upgrade -o

Waydroidを終了させたい

コマンドライン

物理ボタンがないので Waydroid を GUI から終了・停止させる方法はありません。

ホストPCから以下のコマンドを実行することで簡単に Waydroid セッションを終了させることができます。

$ waydroid session stop

アイコンを作る

デスクトップにランチャーを作成してワンクリックで Waydroid セッションを終了させるようにします。

$ nano ~/.local/share/applications/waydroid.stop.desktop
[Desktop Entry]
Type=Application
Name=Waydroid PowerOff
Exec=waydroid session stop
Icon=~/.local/share/waydroid/data/icons/com.android.traceur.png

おわり

※アイキャッチ画像の背景には Bing Image Creater を使用しています。

コメント

タイトルとURLをコピーしました