blog.anqou.net
rss
author
tags

NixOS で Waydroid を使い Kindle を読む

Kindle には Linux の公式なサポートが無いため、Linux で Kindle を使いたい場合は Wine を使うか、何かしらの形で Android を立ち上げる必要があります。今回 NixOS(+ Hyprland)で Waydroid を使って Android を立ち上げ、その上で Kindle を立ち上げることができたので、手順を紹介します。

主な情報源は NixOS Wiki です。また NixOS ではないですがこちらの記事も参考にしました。

#Waydroid のインストールと起動

Waydroid 自体は virtualisation.waydroid.enable = true で入ります。

追加で、今後の作業のために waydroid-helper もインストールしておきます。このソフトウェアは動作に unzipfakeroot が必要になるのですが、単にインストールするだけだとこれらのコマンドを見つけられないようなので(パッケージの PATH の指定がまずい?)、合わせて入れておきます。

インストール後、Waydroid を初期化します:

sudo waydroid init

その後起動します:

sudo systemctl start waydroid-container
waydroid session start

コマンドを実行すると固まるので、別のターミナルを立ち上げて以下を打つと Android の画面が表示されます:

waydroid show-full-ui

NVIDIA GPU 搭載マシンで画面が真っ暗で表示されない場合、Waydroid の設定を変更します。 /var/lib/waydroid/waydroid_base.prop を以下のように書き換えます:

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

画面が表示されることを確認します。

#Google Play Store の有効化

Kindle をインストールするためには Google Play Store を使用する必要があります。これをインストールするために waydroid-helper を使います。 waydroid-helper を起動し “Extensions” から “LiteGapps” で “LiteGapps-Lite” の “Show” を選択して、選択肢から LiteGapps をインストールします。

また同じ “Extensions” から “ndk_translation” で “ndk_translation-chromeos_guybrush” をインストールしておきます。

ここで show-full-ui で Waydroid を起動すると、確かに Google App Store はインストールされているのですが、一方で Google App Store が使えないという旨の通知が届いているのを確認できます。これを解決するために、Android ID を Google に登録します。まず sudo waydroid shell でシェルを起動し、以下のコマンドを打って Android ID を取得します:

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 を https://www.google.com/android/uncertified/ から登録すると Google Play Store が使えるようになります。

#Kindle のインストール

前の手順までで Google Play Store が使えるようになったので、これを開いて持っている Google アカウントでログインしたあと Kindle をインストールすると、 Kindle が使えるようになります。

ちなみに Kindle をインストールしたあとであれば、わざわざ show-full-ui で Android の画面を表示せずとも、desktop file として Kindle が登録される(ような)ので、そこから Kindle のみを起動できます。Rofi の -drun でも起動できるようになります。 Waydroid の起動なども必要に応じて行われるようなので便利です。

#作業に失敗して全てをやり直す場合

途中の作業でミスをして Waydroid が立ち上がらなくなってしまった場合、以下のコマンドを実行すると最初からやり直せます:

sudo systemctl stop waydroid-container
sudo rm -r /var/lib/waydroid/* ~/.local/share/waydroid