2 ポイント 投稿者 GN⁺ 2025-02-03 | 1件のコメント | WhatsAppで共有
  • Waydroidは、WaylandベースのGNU/Linuxデスクトップ上で完全なAndroidシステムをコンテナとして起動し、AndroidアプリをLinuxアプリのように一緒に実行できるようにするプロジェクト
  • Linux名前空間とLXC、binderインターフェースを活用し、Androidコンテナが必要なハードウェアへ直接アクセスでき、arm、arm64、x86、x86_64のGNU/Linuxプラットフォームをサポート
  • AndroidアプリはLinuxのアプリケーションフォルダーに統合でき、Multi-Window Mode、Full UI Mode、Fullscreen Modeといった利用環境別の実行モードを提供
  • ランタイムはLineageOSベースの最小限にカスタマイズされたAndroidシステムイメージで構成されており、現在のイメージはAndroid 13ベース
  • インストール後はwaydroid-containerサービスを開始し、アプリメニューで初回起動ウィザードを進める必要があり、Waydroid-Linuxベータ版ディストリビューションはlive modeではなくインストール環境で動作

WaydroidのAndroid-on-Linuxアーキテクチャ

  • Waydroidは、一般的なGNU/LinuxシステムのWaylandベースのデスクトップ環境上で完全なAndroidシステムをコンテナとして起動する方式を採用
  • コンテナ内部のAndroidはLinux名前空間を使用
    • user
    • pid
    • uts
    • net
    • mount
    • ipc
  • AndroidシステムはLXCとbinderインターフェースを通じて必要なハードウェアへ直接アクセス
  • 対応プラットフォームはGNU/Linuxベースのarm、arm64、x86、x86_64
  • プロジェクトは無料のオープンソースで、リポジトリはGitHubにある

デスクトップ統合と実行モード

  • AndroidアプリはLinuxアプリケーションと並んでデスクトップ上で動作し、WaydroidはAndroidアプリをLinuxのアプリケーションフォルダーに追加
  • 実行モードは利用方法に応じて分かれる
    • Multi-window mode: Androidのfreeform window定義を拡張して複数の機能を追加
    • Full UI Mode: ゲームやフルスクリーンのエンターテインメント向けにAndroid UI全体を表示
    • デスクトップ・キオスク向けのFullscreen Modeを利用可能
  • パフォーマンス面では、WaylandとAOSP mesaを使用して可能な限りネイティブに近い動作を目指す
  • Androidランタイム環境はLineageOSベースの最小限にカスタマイズされたAndroidシステムイメージとともに提供され、現在のイメージはAndroid 13ベース

ドキュメント、インストール、Waydroid-Linuxベータ

  • ドキュメントとIssue管理は別リンクで確認可能
  • systemdディストリビューションでの迅速なインストール手順は、ディストリビューション別のインストール文書に従ったうえで、自動起動されていなければwaydroid-containerサービスを開始し、アプリケーションメニューからWaydroidを起動して初回起動ウィザードを進める
  • 初回起動中に求められた場合は、OTAリンクとしてSystem OTAとVendor OTAを入力
  • Waydroid-Linux Betaは、Waydroidが実現できる統合の可能性を示すために作られた完全統合ディストリビューション
    • 初期アルファリリースはUbuntu 20.04(focal)から開始
    • 現在はUbuntu 22.04(jammy)とDebian 12(bookworm)も含む
    • 実行可能な作業範囲を広げるためのさまざまなツールとスクリプトを含む
  • WaydroidはLXCとbinder用のカーネルモジュールを使用するため、Waydroid-Linuxはlive modeでは動作せず、正常に動作させるにはインストールが必要
  • ベータ版のダウンロード項目はREADME.mdの確認を求めており、例としてUbuntu 22.04 KDE-Plasma、Ubuntu 22.04 Gnome、Debian 12 Beta、Ubuntu 21.10 Beta、以前のアルファリリースが提供されている

1件のコメント

 
GN⁺ 2025-02-03
Hacker Newsのコメント
  • これがフロントページに載ったのは意外。かなりよく知られたソフトウェアだから
    残念なのは、Waydroidで動くGoogle提供イメージがないこと。たとえば汎用システムイメージのようなもの。ネットで拾った任意のROMにパスワードを入れるのは気が進まない
    https://source.android.com/docs/core/tests/vts/gsi

    • 「ネットで拾った任意のROM」と見るのは難しい。LineageOSは長年確立されたプロジェクトで、特定デバイスに必要なファームウェアを除けば完全に自由・オープンソースソフトウェア
      Waydroidのようにコミュニティの支援と継続的な提供が必要なプロジェクトにとっては自然な選択肢。GoogleはAndroidの基盤であるAOSPに元からあった多くの自由・オープンソース部分を何年にもわたって削り続けてきたため、LineageOSのようなプロジェクトが代替コンポーネントを開発する必要があった。それでもLineageOSがAOSPに加える変更は、Googleを含む大半のスマートフォンメーカーより少ないと思う
    • 任意と言えるかな? LineageOSはかなり確立されたプロジェクト。むしろGoogle提供イメージに個人情報を入力するほうが抵抗がある。自分のデータを収集して広告を見せるのがGoogleの中核的なビジネスモデルだから
    • 正直、Google提供イメージよりLineageOSのほうを信頼している
    • 参考までに、Firefoxも以前フロントページに載ったことがある。許されることだよ :)
    • GoogleはDockerで動くイメージを提供している
  • MacでDocker DesktopやOrbStackのようなもので起動できるコンテナ化されたAndroidがあればいいのに
    Dockerイメージを改造して、root化した中間者プロキシをあらかじめ設定しておき、Androidアプリを載せてネットワークトラフィックやAPI呼び出しをずっと簡単に観察したい

    • 今すぐ手軽にやりたいなら、Waydroidを起動したあとWaydroid用に作られたネットワーク名前空間の中でWiresharkを実行すればいい
      sudo ip netns exec wireshark
    • プロキシ設定は分からないけど、redroidは実質Dockerコンテナ内のAndroidだよ
  • これがFuriLabsがAndroidアプリ統合をうまく作り上げた土台だった。もちろんフォークして[0]大幅に手を入れたけど、LinuxフォンでAndroidアプリを使えるようにしたユーザー体験は素晴らしかった
    [0] https://github.com/FuriLabs/waydroid

    • FuriLabsのJesusです。FOSDEMの締め作業中だけど、質問やフィードバックがあれば答えられます :)
  • Furiphone FLX1はこれを積極的に活用していて、本当に良い。普通のAndroidスマホに求めることの大半はできる
    もちろん自分の求めるものは多くないけど、SignalやSpotifyに使っている人も知っている。素晴らしいプロジェクトで、Linuxフォンにぴったり

    • このスレッドで初めて見て調べてみたけど、良さそう。1台欲しいけど、FAQには「完全なGoogle Play Storeとその要件を必要とするアプリは動作せず、一部の銀行アプリも含まれる」とある
      結局、携帯を2台持ち歩く必要がありそう。銀行やクレジットカードのアプリは毎日必要な必須アプリだし、一部のアカウントはデスクトップブラウザでも携帯アプリでの認証なしではログインすらできない。個別の支払いでも頻繁に携帯アプリでの確認が必要になる。より自由なユーザー体験のために口座を変えられる状況でもない
      金融以外でも、主な仕事ではGoogle製品群を使わなければならないし、別の仕事ではDiscordも使う必要があった。こちらは機能が減ってもブラウザで何とかなるかもしれないけど、銀行・クレジットカードアプリはそうはいかない
      これはWaydroidやFLX1への不満ではなく、その作業と創意工夫には感謝している。完全に自由・オープンソースなスマホを所有して自作することを長く夢見てきたし、その作業量も分かっている。昔はNokia N900も2台使っていた
      ただ、時代は変わったし、今の日常生活で求められるアプリやプロトコルを自由・オープンソースベースのシステムの上で、あるいは並行して動かせる方法が見つかってほしい
    • このスマホはほぼ完璧。TRRSコネクタ、uSDカード、ユーザー交換可能なバッテリー、米国販売までそろっている
      ただしOLEDパネルがない点は致命的な欠点になり得る
    • Furiphone FLX1がどんな感じか気になる。オンラインのレビューが少なすぎる
    • USB-CポートでDP Alt Modeをサポートしてる?
    • FuriOSでもちゃんと動くFlatpak版Signalがある
  • 昔買ったアプリが3つある。スウェーデン語辞書、ドイツ語-スウェーデン語辞書、英語-スウェーデン語辞書
    まだインストールはできるけど、アプリストアではもう配信されていない。会社のNorstedtsは案の定サブスクリプションモデルに移行した。これらのアプリをデスクトップで使うためにWaydroidを使っていて、とても満足している

  • 多くのアプリはGoogleやSamsungのような「公式」Androidディストリビューション上で動くことに依存していて、WaydroidのLineageベースのディストリビューションでは動かない
    https://gitlab.com/android_translation_layer/android_transla... のようなWine風アプローチは、アプリに「公式」Androidディストリビューション上で動いていると思わせるのに役立つかもしれない

    • こういうふうにアプリをごまかすには、エミュレートしなければならない特定のAPI群がある。"本物の" Androidでは、Magiskモジュールが一部を偽装したり、microGがGoogleサービス全体を再実装したりして対応している
      ATLのWine風アプローチはAPIをまねるという点では確かにもっと直感的だけど、それでもATL向けの別個の再実装が必要。対してWaydroidはAndroid環境全体を動かすので、MagiskやmicroGを再利用できる可能性がある
  • これを見るたびに「すごいな! Linux対応アプリがない素敵なAndroidアプリを実行できるかも」と思うけれど、毎回これといって思い浮かばない。絶対に必要なAndroidアプリってあるだろうか?

    • Organic MapsOSMAndがある。自分が見つけたオープンソースのデスクトップ地図ソフトウェアより優れている
      Organic MapsにはデスクトップLinux版もあるが、機能の同等性にはまだ遠い。ただ、Organic Maps向けの優れたデスクトップUIを作ろうというこの助成金[1]のおかげで変わるかもしれない
      [1] https://nlnet.nl/project/OrganicMaps-ConvergentUI/
    • メールクライアントのFairEmailが好きだ。変に聞こえるかもしれないが、自分が使ったどのデスクトップメールクライアントよりも優れているかもしれない
    • 自分にとって重要なのは、アプリベースの認証が必要な銀行アプリのようなものだ。もちろん残念ながら、こういう解決策はWaydroidのような環境ではあまりうまく動かない。アプリがコンテナ内にあることを検知して機能をブロックするからだ
    • 主にSteam Deckでモバイルゲームをやりたい人に勧められているのを見かける
    • 設定を変えるのに専用アプリが必要な「スマートギター」がある。それが自分が「スマート」フォンを使い続けている唯一の理由だ
  • このコンテナはハードウェアUSBデバイスにアクセスできるのか? PEQ入りのMoondrop FreeDSP USB-Cケーブルを持っているが、ひどいAndroidアプリでしか動かない
    手元のAndroidタブレットはタッチスクリーンの出来も悪く、EQ設定を変えるのに時間がかかりすぎる。普通にLinuxノートPCでやりたい

    • できるようだ。AndroidにフォーカスがあるときにUSBデバイスを挿すと、誤ってそのUSBデバイスをつかんでしまうほどだ: https://github.com/waydroid/waydroid/issues/778
      たとえそうでなくても、結局はLinuxコンテナなのだから、udevルールを少しいじればどうにでも動かせるはずだ
  • こうしたプロジェクトで相変わらず欠けているように見えるものがいくつかある。ホストのハードウェア3Dアクセラレーションを、ほとんどのスマートフォンが標準対応しているOpenGL ESやVulkanのバージョンで使う部分が不足している
    また、多くのアプリには、スマートフォン上で動いていないことを検知する組み込みの仕組みがあり、cpuinfoを見て申告されたデバイスと照合したうえで終了してしまう
    デバイス側で期待されるARM対応も増え続けており、要求スループットもそれに伴って上がっている。だから、ありふれた最新のモバイルARM SoCですらエミュレートするのに必要なx86ホスト性能は、どんどん高くなっている
    最後に、対応するAndroidバージョンはほぼ常に最新より3〜4世代遅れている。アプリは古いAndroidのサポートをすぐ打ち切るか、旧OSでは機能や最適化が少ない状態で動く。このプロジェクトのAndroidベースのバージョンは2020年のものだ
    逸話レベルではあるが、この分野で最も互換性と最適化が優れたエミュレーションスタックを持つBlueStacksでさえ、7800X3D / RTX 3090で動かすと、ほとんどのゲームは昨年のSnapdragon 8搭載スマートフォンでネイティブ動作させるより遅い

  • 驚くべきなのは、複数のAndroidコンテナをLXC上で動かせるように、これを抽象化した人がいないことだ
    Waydroidではイメージが1つしかない。自分が見る限り、かなりパッチの入ったカスタムLinuxカーネルを使っているようだったし、きちんと調べたわけではないが、LXCインターフェース側はかなり単純に見えた

    • Waydroidはホストカーネルを使う