みなさん、こんにちは。
以前のブログで、Xubuntu 22.04 のVirtualBoxにAndroid-x86を導入してKindleアプリを動作させるという記事を書きました。
残念ながらKindleを動作させることはできなかったのですが、当時のブログでは試していない環境がありました。WaydroidでKindleを動作させることです。今回、Wayland化したXubuntu 22.04にWaydroidを導入し、Kindleアプリの動作を試みましたので、その顛末を共有したいと思います。
結論から先に言うと、今回も残念ながら失敗してしまったのですが、Androidアプリの動作環境としてはWaydroidは軽くて優秀でしたので、同じような挑戦を考えている方の参考になればと考え、記事にしてみました。
目標はLinuxでKindleを読むこと
私は普段、Xubuntu 22.04をメインのOSとして使用しています。Linux環境は開発作業には非常に快適なのですが、こと電子書籍、特にKindleを読むとなると、公式のデスクトップアプリが存在しないため、VirtualBoxでWindowsを立ち上げてKindle for PCを利用するしかありませんでした。しかし、KindleのためにわざわざWindowsを立ち上げるのは使い勝手が悪すぎます。
Linux上でKindleアプリを使う際に一番使い勝手がよい方法はAndroidアプリをシームレスに動作させることです。そのためのコンテナ技術がWaydroidです。Xubuntu 22.04 のデスクトップ環境である Xfce4は残念ながらWaydroidが導入できませんので、デスクトップ環境から整えることになりました。
Waylandセッションの準備とWaydroidの導入
Waydroidはその名の通り、Waylandディスプレイサーバープロトコル上で動作することが前提となっています。私のXubuntu環境はデフォルトではX11セッションですが、Waylandセッションも利用可能です。
Wayland化については以下に記事を書きましたのでご参考ください。
1. Waylandセッションの選択:Enlightenmentを試す
Waylandセッションとしては、Xfce4と同等以下の軽さを期待して、まずはEnlightenmentデスクトップ環境を試すことにしました。ログインマネージャーからEnlightenmentセッションを選択し、起動します。
2. 必要なアプリのインストール
まずはターミナルを開き、Waydroidの導入に必要なパッケージをインストールします。
sudo apt update
sudo apt install curl ca-certificates
curl
はインターネット経由でファイルをダウンロードするためのコマンドラインツール、ca-certificates
はSSL/TLS通信に必要な認証局証明書です。
3. Waydroidセットアップスクリプトのダウンロードと実行
次に、Waydroidの公式リポジトリをシステムに追加し、Waydroidをインストールするための準備を行います。
curl -s https://repo.waydro.id | sudo bash
このコマンドは、Waydroidの公式リポジトリ情報を取得し、システムのパッケージソースリストに追加します。
4. Waydroidのインストール
リポジトリの準備が整ったので、apt
コマンドでWaydroid本体をインストールします。
sudo apt install waydroid
依存関係のあるパッケージも同時にインストールされます。
5. Waydroidサービスの起動確認
Waydroidはシステムサービスとして動作するコンテナを持っています。インストール後、このサービスが正常に起動しているか確認します。
systemctl status waydroid-container.service
実行結果に active(running)
と表示されていれば、Waydroidコンテナサービスは正常に動作しています。もしそうでなければ、sudo systemctl start waydroid-container.service
で起動を試みてください。
WaydroidのARMアプリ対応 – libhoudiniの導入
多くのAndroidアプリはARMアーキテクチャ向けにビルドされています。一方、私のPCはx86_64アーキテクチャです。そのため、x86_64環境でARMアプリを動作させるための互換レイヤーが必要になります。Intelが開発したlibhoudini
というライブラリがこの役割を果たしてくれます。
1. KindleインストールのためGoogle Play Store対応イメージを導入
Waydroidは標準でAndroid Open Source Project (AOSP) ベースのシステムイメージを使用しますが、Kindleアプリを簡単にインストールするためにはGoogle Play Storeが利用できるイメージが必要です。-s GAPPS
オプションを付けて初期化することで、Googleアプリが含まれたイメージを導入できます。
sudo waydroid init -s GAPPS -f
-f
オプションは、既存のイメージがあっても強制的に上書きします。これにより、Google Play Storeを含むAndroid環境が構築されます。
2. ChromeOSのセットアップイメージからlibhoudiniを抽出
libhoudini
はプロプライエタリなライブラリであり、直接配布されていません。そのため、ChromeOSのリカバリイメージなどから抽出する必要があります。幸い、この作業を簡単にしてくれるツールが公開されています。
まず、libhoudini
を含むリポジトリをクローンします。
git clone https://github.com/BlissRoms-x86/android_vendor_google_chromeos-x86.git
次に、クローンしたディレクトリに移動し、抽出スクリプトを実行します。
cd android_vendor_google_chromeos-x86/
bash ./extract-files.sh
これにより、カレントディレクトリ以下に proprietary/houdini
というディレクトリが作成され、その中に libhoudini.so
などの必要なファイルが格納されます。
3. システムイメージの拡張とlibhoudiniのコピー
ダウンロードしたシステムイメージは、libhoudini
を追加するには容量が不足している場合があります。そのため、イメージファイルを拡張します。
まず、ファイルシステムをチェックします。
sudo e2fsck -f /var/lib/waydroid/images/system.img
次に、イメージサイズを2300MBに拡張します。このサイズは環境によって調整が必要かもしれません。
sudo resize2fs /var/lib/waydroid/images/system.img 2300M
拡張したイメージをマウントし、先ほど抽出したlibhoudini
関連のファイルをコピーします。
mkdir /tmp/waydroid
sudo mount -o rw /var/lib/waydroid/images/system.img /tmp/waydroid
sudo cp -r ./proprietary/houdini/* /tmp/waydroid/
注意: cp
コマンドを実行するカレントディレクトリは、extract-files.sh
を実行した android_vendor_google_chromeos-x86
ディレクトリである必要があります。
4. build.propの書き換え
libhoudini
をシステムに認識させるために、Androidシステムのプロパティファイルである build.prop
を編集します。
sudo vi /tmp/waydroid/system/build.prop
以下の項目を変更または追加します。
変更する箇所:
ro.product.cpu.abi=x86_64
ro.product.cpu.abilist=x86_64,x86,arm64-v8a,armeabi-v7a,armeabi
ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi
ro.product.cpu.abilist64=x86_64,arm64-v8a
新たに追加:
ro.dalvik.vm.isa.arm=x86
ro.dalvik.vm.isa.arm64=x86_64
ro.enable.native.bridge.exec=1
ro.dalvik.vm.native.bridge=libhoudini.so
これらの設定により、AndroidシステムはARMアーキテクチャのアプリケーションをlibhoudini
を通じてx86アーキテクチャ上で実行できるようになります。
編集が終わったら、ファイルを保存してエディタを終了します。
5. システムイメージのアンマウント
変更を反映させるため、システムイメージをアンマウントします。
sudo umount /tmp/waydroid
これでlibhoudini
の導入作業は完了です。
トラブル発生 – Enlightenmentの不安定さとGnomeへの移行
意気揚々とWaydroidのフルUIを起動しようとしました。
waydroid show-full-ui
しかし、ここで問題が発生しました。Waylandセッションとして使用していたEnlightenmentが非常に不安定で、Waydroidが起動後しばらくすると落ちてしまう現象が頻発したのです。それだけでなく、Enlightenment自体の挙動も時折怪しくなることがあります。いろいろ試してはみたのですが、現時点ではEnlightenmentのWayland対応はまだ完全ではないのかもしれない、という結論に至りました。
このままでは検証が進まないため、Enlightenmentの使用を諦め、よりWayland対応が進んでいるとされるGnomeセッションに切り替えることにしました。一度ログアウトし、ログインマネージャーからGnomeセッションを選択して再度ログインします。
Gnomeセッションで改めて waydroid show-full-ui
を実行すると、今度はWaydroidが比較的安定して起動するようになりました。デスクトップ環境の選択は、Waydroidの安定性に大きく影響するようです。
Google Play Certificationの取得
Gnome環境でWaydroidを起動すると、画面上部に「このデバイスはPlayプロテクト認定を受けていません」といった趣旨の通知が表示されます。これは、Google Play Storeを正常に利用するために必要なデバイス認証が得られていないことを意味します。
この問題を解決するため、以下の手順でデバイスを登録します。
- WaydroidのフルUIが表示されている状態で、ホストOS側で新たにターミナルを開きます。
- Waydroidのシェルに入ります。
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が表示されます。android_id|************************************
この************************************
の部分が、お使いのWaydroidインスタンスのAndroid IDです。この値をコピーしておきます。 - ウェブブラウザでGoogleデバイス登録ページを開きます。
- 先ほど取得したAndroid IDをページの入力欄に貼り付け、「登録」ボタンをクリックします。
登録が完了したら、Waydroidのウィンドウ、ターミナルを一旦すべて終了させます。Google側のサーバーに情報が反映されるまで数分程度待ってから、再度 waydroid show-full-ui
を実行してWaydroidを起動します。
今度は「認定を受けていません」という通知は表示されず、デバイスが正常に登録されたことが確認できました。これでGoogle Play Storeを問題なく利用できるはずです。

Google Play StoreからのKindleインストール
いよいよKindleアプリのインストールです。
- Waydroidのアプリ一覧から「Play ストア」アイコンをクリックします。
- Googleアカウントへのログインを求められるので、画面の指示に従ってログインします。
- ログイン後、Play ストアの検索バーで「Kindle」と入力し、Kindleアプリを検索してインストールします。

インストール自体は特に問題なく、スムーズに完了しました。

Kindle起動試行…そして沈黙
期待に胸を膨らませ、インストールされたKindleアプリのアイコンをクリックします。

しかし…待てど暮らせど、Kindleアプリは起動しません。アイコンをクリックしても何の反応もないのです。何度か試してみましたが、結果は同じでした。
念のため、他のアプリ、例えば「SmartNews」などをインストールして起動してみたところ、こちらは問題なく起動し、記事を読むこともできました。このことから、Waydroidの基本的な動作やlibhoudini
によるARMアプリの互換性自体は機能しているものの、Kindleアプリ特有の何らかの要因でWaydroid上では動作しない、という可能性が考えられます。
ひょっとすると、DRM(デジタル著作権管理)や、アプリが特定のデバイス環境を要求するセーフティネットのような仕組みが影響しているのかもしれません。
結論:WaydroidでもKindleは動かなかった…
残念ながら、今回の挑戦ではWaydroidをもってしてもLinux環境でAndroid版Kindleアプリを動作させるという目標は達成できませんでした。Enlightenmentの不安定さという予期せぬ回り道もありましたが、Gnome環境への移行、libhoudini
の導入、Google Play Certificationの取得と、一つ一つのステップはクリアできただけに、最後の最後でKindleが起動しなかったのは非常に残念です。
Linuxで快適にKindleの蔵書を読むための確実な方法は、まだ見えないままです。手軽さという点ではWaydroidに期待していただけに、少し肩を落としています。
今回の試行錯誤が、同じようにLinuxでKindleを読みたいと考えている方々の何らかの参考情報になれば幸いです。もし、どなたかLinux上でKindleアプリを安定して動作させる方法をご存知でしたら、ぜひ教えていただけると嬉しいです。
本日も最後までお読みいただきありがとうございました。
それでは、よいKindleライフを!
参考サイト
今回のWaydroid導入にあたり、以下のサイトを参考にさせていただきました。素晴らしい情報をありがとうございます。
- Ubuntu22.04でAndroidコンテナWaydroidを使う – https://netlog.jpn.org/r271-635/2025/01/ubuntu_android_waydroid.html
ピンバック: Linux環境でKindleを使いたい! – Xubuntu 22.04 と Bodhi Linux 7.0.0 で試したあれこれ - ビューローみかみ