2 คะแนน โดย GN⁺ 2025-02-03 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Waydroid เป็นโปรเจกต์ที่บูตระบบ Android ทั้งชุดเป็นคอนเทนเนอร์บนเดสก์ท็อป GNU/Linux ที่ใช้ Wayland ทำให้รันแอป Android ร่วมกับแอป Linux ได้เหมือนเป็นแอป Linux
  • ใช้ Linux namespaces, LXC และอินเทอร์เฟซ binder เพื่อให้คอนเทนเนอร์ Android เข้าถึงฮาร์ดแวร์ที่จำเป็นได้โดยตรง และรองรับแพลตฟอร์ม GNU/Linux แบบ arm, arm64, x86, x86_64
  • แอป Android สามารถผสานเข้าไปในโฟลเดอร์แอปพลิเคชันของ Linux ได้ และมีรูปแบบการรันตามสภาพแวดล้อมการใช้งาน เช่น Multi-Window Mode, Full UI Mode และ Fullscreen Mode
  • รันไทม์ประกอบด้วยอิมเมจระบบ Android ที่ปรับแต่งให้น้อยที่สุดบนพื้นฐาน LineageOS โดยอิมเมจปัจจุบันอิง Android 13
  • หลังติดตั้ง ต้องเริ่มบริการ waydroid-container แล้วเรียกใช้ตัวช่วยตั้งค่าครั้งแรกจากเมนูแอป และดิสโทร Waydroid-Linux Beta ทำงานในสภาพแวดล้อมที่ติดตั้งแล้ว ไม่ใช่ live mode

โครงสร้าง Android-on-Linux ของ Waydroid

  • Waydroid ใช้วิธีบูตระบบ Android ทั้งชุดเป็นคอนเทนเนอร์ใน สภาพแวดล้อมเดสก์ท็อปที่ใช้ Wayland บนระบบ GNU/Linux ทั่วไป
  • Android ภายในคอนเทนเนอร์ใช้ Linux namespaces
    • user
    • pid
    • uts
    • net
    • mount
    • ipc
  • ระบบ Android เข้าถึงฮาร์ดแวร์ที่จำเป็นได้โดยตรงผ่าน LXC และอินเทอร์เฟซ binder
  • แพลตฟอร์มที่รองรับคือ arm, arm64, x86, x86_64 บน GNU/Linux
  • โปรเจกต์นี้เป็นโอเพนซอร์สฟรี และมีที่เก็บโค้ดอยู่บน GitHub

การผสานกับเดสก์ท็อปและโหมดการรัน

  • แอป Android ทำงานบนเดสก์ท็อปเคียงข้างแอปพลิเคชัน Linux และ Waydroid จะเพิ่มแอป Android เข้าไปในโฟลเดอร์แอปพลิเคชันของ Linux
  • โหมดการรันแบ่งตามรูปแบบการใช้งาน
    • Multi-window mode: ขยายข้อกำหนด Android freeform window เพื่อเพิ่มฟังก์ชันหลายอย่าง
    • Full UI Mode: แสดง UI Android แบบเต็ม สำหรับเกมและความบันเทิงแบบเต็มหน้าจอ
    • สามารถใช้ Fullscreen Mode สำหรับเดสก์ท็อปและคีออสก์ได้
  • ด้านประสิทธิภาพ ตั้งเป้าให้ทำงานใกล้เคียงเนทีฟมากที่สุดเท่าที่ทำได้ โดยใช้ Wayland และ AOSP mesa
  • สภาพแวดล้อมรันไทม์ Android มาพร้อมอิมเมจระบบ Android ที่ปรับแต่งให้น้อยที่สุดบนพื้นฐาน LineageOS และอิมเมจปัจจุบันอิง Android 13

เอกสาร การติดตั้ง และ Waydroid-Linux Beta

  • ดูเอกสารและการจัดการ issue ได้จากลิงก์แยกต่างหาก
    • เอกสาร: docs.waydro.id
    • รายงานบั๊ก: GitHub Repo
    • ที่เก็บโค้ดพัฒนา: GitHub
    • เอกสารการติดตั้งบนเดสก์ท็อป: installation docs
    • ดาวน์โหลดอิมเมจด้วยตนเอง: SourceForge
  • ขั้นตอนติดตั้งอย่างรวดเร็วสำหรับดิสโทรที่ใช้ systemd คือทำตามเอกสารติดตั้งของแต่ละดิสโทร จากนั้นหากบริการไม่ได้เริ่มอัตโนมัติ ให้เริ่มบริการ waydroid-container แล้วเปิด Waydroid จากเมนูแอปพลิเคชันเพื่อดำเนินตัวช่วยตั้งค่าครั้งแรก
  • หากมีการร้องขอระหว่างการรันครั้งแรก ให้ป้อน System OTA และ Vendor OTA ด้วยลิงก์ OTA
  • Waydroid-Linux Beta คือดิสโทรที่ผสานรวมอย่างสมบูรณ์ ซึ่งสร้างขึ้นเพื่อแสดงให้เห็นความเป็นไปได้ในการผสานรวมที่ Waydroid สามารถทำได้
    • รุ่น alpha แรกเริ่มจาก Ubuntu 20.04(focal)
    • ปัจจุบันรวม Ubuntu 22.04(jammy) และ Debian 12(bookworm) ด้วย
    • มีเครื่องมือและสคริปต์หลายอย่างเพื่อขยายขอบเขตงานที่ทำได้
  • เนื่องจาก Waydroid ใช้ LXC และโมดูลเคอร์เนลสำหรับ binder Waydroid-Linux จึงไม่ทำงานใน live mode และต้องติดตั้งก่อนจึงจะทำงานได้ตามปกติ
  • รายการดาวน์โหลด Beta กำหนดให้อ่าน README.md และมีรุ่นตัวอย่างให้ใช้ เช่น Ubuntu 22.04 KDE-Plasma, Ubuntu 22.04 Gnome, Debian 12 Beta, Ubuntu 21.10 Beta และรุ่น alpha ก่อนหน้า

1 ความคิดเห็น

 
GN⁺ 2025-02-03
ความคิดเห็นบน Hacker News
  • แปลกใจที่เรื่องนี้ขึ้นหน้าแรก เพราะเป็นซอฟต์แวร์ที่ค่อนข้างเป็นที่รู้จักอยู่แล้ว
    สิ่งที่น่าเสียดายคือไม่มี อิมเมจที่ Google จัดให้ ที่รันบน Waydroid เช่น อิมเมจระบบทั่วไป อะไรทำนองนั้น การกรอกรหัสผ่านลงใน ROM ใด ๆ ที่ดาวน์โหลดมาจากอินเทอร์เน็ตรู้สึกไม่ค่อยสบายใจ
    https://source.android.com/docs/core/tests/vts/gsi

    • จะเรียกว่า “ROM ใด ๆ ที่ดาวน์โหลดมาจากอินเทอร์เน็ต” ก็คงไม่ถูกนัก LineageOS เป็นโปรเจกต์ที่มีมาอย่างยาวนานและมั่นคงมาก และยกเว้นเฟิร์มแวร์ที่จำเป็นสำหรับอุปกรณ์เฉพาะแล้ว ก็เป็นซอฟต์แวร์เสรีและโอเพนซอร์สทั้งหมด
      สำหรับโปรเจกต์อย่าง Waydroid ที่ต้องอาศัยการสนับสนุนจากชุมชนและการจัดส่งอย่างต่อเนื่อง นี่เป็นตัวเลือกที่เป็นธรรมชาติ Google ได้ค่อย ๆ ถอดส่วนที่เป็นเสรีและโอเพนซอร์สจำนวนมากซึ่งเดิมมีอยู่ใน AOSP ฐานของ Android ออกไปตลอดหลายปีที่ผ่านมา ทำให้โปรเจกต์อย่าง LineageOS ต้องพัฒนาคอมโพเนนต์ทดแทนเอง ถึงอย่างนั้น การแก้ไขที่ LineageOS ทำกับ AOSP ก็น่าจะน้อยกว่าผู้ผลิตโทรศัพท์ส่วนใหญ่ รวมถึง Google ด้วย
    • จะมองว่าเป็นของสุ่ม ๆ ได้ไหม? LineageOS เป็นโปรเจกต์ที่ค่อนข้างมั่นคงแล้ว กลับกัน ฉันยิ่งไม่อยากกรอกข้อมูลส่วนตัวลงในอิมเมจที่ Google จัดให้มากกว่า เพราะการเก็บข้อมูลของฉันและแสดงโฆษณาคือโมเดลธุรกิจหลักของ Google
    • พูดตรง ๆ ฉันเชื่อถือ LineageOS มากกว่าอิมเมจที่ Google จัดให้
    • อ้างอิงไว้หน่อย Firefox ก็เคยขึ้นหน้าแรกมาก่อนเหมือนกัน เรื่องแบบนี้เกิดได้ :)
    • Google มีอิมเมจที่รันใน Docker ให้
  • ถ้ามี Android แบบคอนเทนเนอร์ ที่เปิดบน Mac ได้ด้วย Docker Desktop หรือ OrbStack ก็คงดี
    อยากแก้ Docker image เพื่อตั้งค่า man-in-the-middle proxy ที่รูทไว้ล่วงหน้า แล้วเอาแอป Android ขึ้นไป เพื่อสังเกตทราฟฟิกเครือข่ายและ API call ได้ง่ายขึ้นมาก

    • ถ้าอยากทำแบบง่ายตอนนี้ ให้รัน Waydroid แล้วเปิด Wireshark ภายใน network namespace ที่สร้างไว้สำหรับ Waydroid
      sudo ip netns exec wireshark
    • ไม่แน่ใจเรื่องการตั้งค่า proxy แต่ redroid โดยพื้นฐานแล้วคือ Android ใน Docker container
  • นี่เป็นพื้นฐานที่ FuriLabs ใช้ทำการผสานรวมแอป Android ได้ดี แน่นอนว่าพวกเขาฟอร์กไป [0] และปรับแก้ไปมาก แต่ ประสบการณ์ผู้ใช้ ที่ทำให้ใช้แอป Android บนโทรศัพท์ Linux ได้นั้นยอดเยี่ยมมาก
    [0] https://github.com/FuriLabs/waydroid

    • ผม Jesus จาก FuriLabs ตอนนี้กำลังปิดงาน FOSDEM อยู่ แต่ถ้ามีคำถามหรือฟีดแบ็กก็ตอบได้ครับ :)
  • Furiphone FLX1 ใช้สิ่งนี้อย่างจริงจัง และดีมากจริง ๆ ทำสิ่งส่วนใหญ่ที่อยากทำบนโทรศัพท์ Android จริง ๆ ได้
    แน่นอนว่าสิ่งที่ฉันต้องการมีไม่มากนัก แต่ก็รู้จักคนที่ใช้กับ Signal และ Spotify อยู่ เป็นโปรเจกต์ที่ยอดเยี่ยมและเหมาะกับโทรศัพท์ Linux มาก

    • เพิ่งเห็นในเธรดนี้เป็นครั้งแรกแล้วลองดู น่าสนใจดี อยากซื้อสักเครื่อง แต่ใน FAQ ระบุว่า “แอปที่ต้องการ Google Play Store แบบเต็มและข้อกำหนดของมันจะไม่ทำงาน ซึ่งรวมถึงแอปธนาคารบางตัว”
      สุดท้ายคงต้องพกโทรศัพท์สองเครื่อง แอปธนาคารและบัตรเครดิตเป็นแอปจำเป็นที่ต้องใช้ทุกวัน และบางบัญชีแม้แต่บนเบราว์เซอร์เดสก์ท็อปก็ยังล็อกอินไม่ได้ถ้าไม่มีการยืนยันผ่านแอปมือถือ การชำระเงินแต่ละรายการก็มักต้องยืนยันผ่านแอปมือถือด้วย ไม่ได้อยู่ในสถานการณ์ที่จะเปลี่ยนบัญชีเพื่อประสบการณ์ผู้ใช้ที่เสรีกว่านี้ได้
      นอกจากเรื่องการเงินแล้ว งานหลักก็ต้องใช้ชุดผลิตภัณฑ์ของ Google และอีกงานหนึ่งก็ต้องใช้ Discord ด้วย อันนี้น่าจะใช้ผ่านเบราว์เซอร์ได้แม้ฟีเจอร์จะลดลง แต่แอปธนาคารและบัตรเครดิตทำแบบนั้นไม่ได้
      นี่ไม่ใช่การบ่น Waydroid หรือ FLX1 และผมชื่นชมงานกับความคิดสร้างสรรค์นั้น ผมฝันมานานว่าจะได้เป็นเจ้าของและสร้างโทรศัพท์เสรีและโอเพนซอร์สเต็มรูปแบบเอง และก็รู้ปริมาณงานที่ต้องทำด้วย เมื่อก่อนเคยใช้ Nokia N900 สองเครื่องด้วย
      เพียงแต่ยุคสมัยเปลี่ยนไปแล้ว และหวังว่าจะหาวิธีรันแอปหรือโปรโตคอลที่ชีวิตประจำวันทุกวันนี้ต้องใช้ บนระบบฐานเสรีและโอเพนซอร์ส หรือรันเคียงข้างกันได้
    • โทรศัพท์เครื่องนี้เกือบสมบูรณ์แบบ มี คอนเนกเตอร์ TRRS, การ์ด uSD, แบตเตอรี่ที่ผู้ใช้เปลี่ยนเองได้ และยังขายในสหรัฐฯ ด้วย
      แต่การไม่มีจอ OLED อาจเป็นข้อเสียเด็ดขาดได้
    • อยากรู้ว่า Furiphone FLX1 เป็นอย่างไร รีวิวออนไลน์มีน้อยเกินไป
    • พอร์ต USB-C รองรับ DP Alt Mode ไหม?
    • มี Flatpak Signal ที่ทำงานได้ดีบน FuriOS ด้วย
  • มีแอปสามตัวที่ซื้อไว้นานแล้ว เป็นพจนานุกรมสวีเดน พจนานุกรมเยอรมัน-สวีเดน และพจนานุกรมอังกฤษ-สวีเดน
    ยังติดตั้งได้อยู่ แต่ไม่มีให้ใน app store แล้ว บริษัท Norstedts แน่นอนว่าเปลี่ยนไปใช้โมเดล subscription แล้ว ฉันใช้ Waydroid เพื่อใช้แอปเหล่านี้บนเดสก์ท็อป และพอใจมาก

  • แอปจำนวนมากพึ่งพาการรันบน Android distribution “ทางการ” อย่างของ Google, Samsung และไม่ทำงานบน distribution ฐาน Lineage ของ Waydroid
    แนวทางแบบ Wine อย่าง https://gitlab.com/android_translation_layer/android_transla... น่าจะช่วยหลอกแอปได้ว่ากำลังรันอยู่บน Android distribution “ทางการ”

    • ถ้าจะหลอกแอปแบบนี้ มี ชุด API เฉพาะ ที่ต้องเลียนแบบ ใน Android “ของจริง” จะจัดการด้วย Magisk module ที่ปลอมแปลงบางส่วน หรือ microG ที่ reimplement บริการของ Google ทั้งชุด
      แนวทางแบบ Wine ของ ATL นั้นดูตรงไปตรงมากว่าอย่างชัดเจนสำหรับการเลียนแบบ API แต่ก็ยังต้องมีการ reimplement แยกสำหรับ ATL อยู่ดี ในทางกลับกัน Waydroid รันสภาพแวดล้อม Android ทั้งชุด จึงมีความเป็นไปได้ที่จะนำ Magisk หรือ microG กลับมาใช้ได้
  • ทุกครั้งที่เห็นสิ่งนี้ ผมจะคิดว่า “เจ๋งดี! คงเอาไว้รันแอป Android เจ๋ง ๆ ที่ไม่มีแอปรองรับบน Linux ได้” แต่ทุกครั้งก็นึกไม่ออก มี แอป Android อะไรที่จำเป็นต้องมีจริง ๆ ไหม?

    • มี Organic Maps กับ OSMAnd ดีกว่าซอฟต์แวร์แผนที่เดสก์ท็อปแบบโอเพนซอร์สที่ผมหาเจอ
      Organic Maps มีเวอร์ชันเดสก์ท็อป Linux แต่ความเท่าเทียมของฟีเจอร์ยังอีกไกล อย่างไรก็ตามอาจเปลี่ยนได้ด้วยทุนสนับสนุนนี้ [1] ที่มุ่งทำเดสก์ท็อป UI ดี ๆ สำหรับ Organic Maps
      [1] https://nlnet.nl/project/OrganicMaps-ConvergentUI/
    • ผมชอบ FairEmail ซึ่งเป็นไคลเอนต์อีเมล ฟังดูแปลก แต่ก็อาจดีกว่าไคลเอนต์อีเมลบนเดสก์ท็อปทุกตัวที่ผมเคยใช้
    • สิ่งที่สำคัญสำหรับผมคือพวก แอปธนาคาร ที่ต้องใช้การยืนยันตัวตนผ่านแอป แน่นอนว่าวิธีแบบนี้น่าเสียดายที่มักใช้กับ Waydroid ไม่ค่อยได้ เพราะแอปจะรู้ว่าตัวเองอยู่ในคอนเทนเนอร์แล้วบล็อกฟังก์ชัน
    • เคยเห็นมีคนแนะนำสิ่งนี้ให้คนที่อยากเล่นเกมมือถือบน Steam Deck เป็นหลัก
    • ผมมี “กีตาร์อัจฉริยะ” ที่ต้องใช้แอปเฉพาะในการเปลี่ยนการตั้งค่า นั่นคือเหตุผลเดียวที่ผมยังใช้ “สมาร์ต”โฟนอยู่
  • คอนเทนเนอร์นี้เข้าถึงอุปกรณ์ฮาร์ดแวร์ USB ได้ไหม? ผมมี สาย Moondrop FreeDSP USB-C ที่มี PEQ อยู่ในตัว แต่มันใช้ได้เฉพาะกับแอป Android ห่วย ๆ เท่านั้น
    แท็บเล็ต Android ที่มีอยู่ก็ทัชสกรีนแย่ด้วย เลยใช้เวลานานเกินไปกว่าจะเปลี่ยนการตั้งค่า EQ ได้ อยากทำจากแล็ปท็อป Linux มากกว่า

    • ดูเหมือนจะได้ ถึงขั้นถ้าเสียบอุปกรณ์ USB ตอนที่โฟกัสอยู่ที่ Android มันอาจเผลอคว้าอุปกรณ์ USB นั้นไปเลย: https://github.com/waydroid/waydroid/issues/778
      ต่อให้ไม่ใช่แบบนั้น สุดท้ายมันก็เป็นคอนเทนเนอร์ Linux ดังนั้นถ้าใช้กฎ udev นิดหน่อยก็น่าจะทำให้ใช้งานได้อยู่ดี
  • มีบางอย่างที่ดูเหมือนจะขาดหายไปเรื่อย ๆ ในโปรเจ็กต์แบบนี้ ส่วนที่ยังไม่พอคือการใช้ การเร่งความเร็ว 3D ด้วยฮาร์ดแวร์ ของโฮสต์กับเวอร์ชัน OpenGL ES และ Vulkan ที่โทรศัพท์ส่วนใหญ่รองรับเป็นค่าเริ่มต้น
    อีกอย่าง แอปจำนวนมากมีวิธีในตัวเพื่อตรวจจับว่ามันไม่ได้รันอยู่บนโทรศัพท์ และจะดู cpuinfo เทียบกับอุปกรณ์ที่อ้างว่าเป็น แล้วปิดตัวลง
    การรองรับ ARM ที่อุปกรณ์คาดหวังก็เพิ่มขึ้นเรื่อย ๆ และปริมาณงานที่คาดหวังก็สูงขึ้นตามไปด้วย ดังนั้นประสิทธิภาพของโฮสต์ x86 ที่ต้องใช้เพื่ออีมูเลตแม้แต่ mobile ARM SoC รุ่นใหม่ทั่วไปก็ยิ่งสูงขึ้นเรื่อย ๆ
    สุดท้าย เวอร์ชัน Android ที่รองรับแทบจะล้าหลังกว่ารุ่นล่าสุดอยู่ 3–4 เจเนอเรชันเสมอ แอปต่าง ๆ เลิกรองรับ Android เก่าอย่างรวดเร็ว หรือไม่ก็รันบน OS รุ่นเก่าด้วยฟีเจอร์และการปรับแต่งที่น้อยกว่า เวอร์ชันฐาน Android ของโปรเจ็กต์นี้เป็นของปี 2020
    จากประสบการณ์ส่วนตัว แม้แต่ BlueStacks ซึ่งมีสแตกอีมูเลชันที่เข้ากันได้และปรับแต่งดีที่สุดในสายนี้ พอรันบน 7800X3D / RTX 3090 เกมส่วนใหญ่ก็ยังช้ากว่าการรันแบบเนทีฟบนมือถือ Snapdragon 8 ของปีที่แล้ว

    • เท่าที่ผมเข้าใจ virtio-gpu rutabaga เพิ่งถูกเพิ่มเข้า QEMU เมื่อไม่นานนี้ และดูเหมือน Google จะเป็นคนทำเป็นหลักเพื่อ Android emulation บน Chromebook หรือ Android Studio หรือทั้งสองอย่าง
      virtio-gpu-rutabaga: https://www.qemu.org/docs/master/system/devices/virtio-gpu.h...
      Rutabaga Virtual Graphics Interface: https://crosvm.dev/book/appendix/rutabaga_gfx.html
      gfxstream: https://android.googlesource.com/platform/hardware/google/gf...
      “Gfxstream Merged Into Mesa For Vulkan Virtualization” (2024-09)
      https://www.phoronix.com/news/Mesa-Gfxstream-Merged
      ไม่รู้ว่าทำไมถึงไม่มีคอนเทนเนอร์หรือ ROM x86 อย่างเป็นทางการสำหรับการพัฒนา Android การ build CI ของแอป Android ไม่ได้รันทดสอบบน Android เวอร์ชันล่าสุดกันหรือ? สงสัยว่า build CI ของ APK รันการทดสอบ GUI โดยไม่มีคอนเทนเนอร์ Android ได้อย่างไร
  • สิ่งที่น่าประหลาดใจคือไม่มีใครทำ abstraction ให้รันคอนเทนเนอร์ Android หลายตัวใต้ LXC ได้
    ใน Waydroid มีอิมเมจเดียวเท่านั้น เท่าที่ผมดู มันเหมือนใช้เคอร์เนล Linux แบบคัสตอมที่มีแพตช์เยอะ และผมก็ไม่ได้เข้าใจถ่องแท้ แต่ฝั่งอินเทอร์เฟซ LXC ดูค่อนข้างเรียบง่าย

    • Waydroid ใช้ เคอร์เนลของโฮสต์