2 điểm bởi GN⁺ 2025-02-03 | 1 bình luận | Chia sẻ qua WhatsApp
  • Waydroid là dự án khởi động toàn bộ hệ thống Android dưới dạng container trên desktop GNU/Linux dựa trên Wayland, cho phép chạy ứng dụng Android cùng với ứng dụng Linux như thể chúng là ứng dụng Linux
  • Sử dụng Linux namespace, LXC và giao diện binder để container Android truy cập trực tiếp phần cứng cần thiết; hỗ trợ các nền tảng GNU/Linux arm, arm64, x86, x86_64
  • Ứng dụng Android có thể được tích hợp vào thư mục ứng dụng Linux, đồng thời cung cấp các cách chạy theo từng môi trường sử dụng như Multi-Window Mode, Full UI Mode, Fullscreen Mode
  • Runtime gồm image hệ thống Android được tùy biến tối thiểu dựa trên LineageOS; image hiện tại dựa trên Android 13
  • Sau khi cài đặt, cần khởi động dịch vụ waydroid-container và chạy trình hướng dẫn lần đầu từ menu ứng dụng; bản phân phối beta Waydroid-Linux hoạt động trong môi trường đã cài đặt, không phải live mode

Kiến trúc Android-on-Linux của Waydroid

  • Waydroid sử dụng cách khởi động toàn bộ hệ thống Android dưới dạng container trong môi trường desktop dựa trên Wayland của một hệ thống GNU/Linux thông thường
  • Android bên trong container sử dụng Linux namespace
    • user
    • pid
    • uts
    • net
    • mount
    • ipc
  • Hệ thống Android truy cập trực tiếp phần cứng cần thiết thông qua LXC và giao diện binder
  • Các nền tảng được hỗ trợ là arm, arm64, x86, x86_64 dựa trên GNU/Linux
  • Dự án là mã nguồn mở miễn phí và kho lưu trữ nằm trên GitHub

Tích hợp desktop và chế độ chạy

  • Ứng dụng Android chạy trên desktop song song với ứng dụng Linux, và Waydroid thêm ứng dụng Android vào thư mục ứng dụng Linux
  • Chế độ chạy được chia theo cách sử dụng
    • Multi-window mode: mở rộng định nghĩa Android freeform window để thêm nhiều chức năng
    • Full UI Mode: hiển thị toàn bộ UI Android cho game và giải trí toàn màn hình
    • Có thể sử dụng Fullscreen Mode cho desktop/kiosk
  • Về hiệu năng, Waydroid hướng tới hoạt động gần native nhất có thể bằng cách dùng Wayland và AOSP mesa
  • Môi trường runtime Android được cung cấp cùng image hệ thống Android tùy biến tối thiểu dựa trên LineageOS, và image hiện tại dựa trên Android 13

Tài liệu, cài đặt và Waydroid-Linux beta

  • Có thể xem tài liệu và quản lý issue tại các liên kết riêng
  • Quy trình cài đặt nhanh trên các bản phân phối systemd là làm theo tài liệu cài đặt theo từng bản phân phối; sau đó, nếu chưa tự khởi động, hãy khởi động dịch vụ waydroid-container và chạy Waydroid từ menu ứng dụng để thực hiện trình hướng dẫn lần đầu
  • Nếu được yêu cầu trong lần chạy đầu tiên, nhập System OTA và Vendor OTA bằng các liên kết OTA
  • Waydroid-Linux Beta là các bản phân phối tích hợp hoàn chỉnh được tạo ra để cho thấy những khả năng tích hợp mà Waydroid có thể triển khai
    • Bản phát hành alpha đầu tiên bắt đầu từ Ubuntu 20.04(focal)
    • Hiện cũng bao gồm Ubuntu 22.04(jammy) và Debian 12(bookworm)
    • Bao gồm nhiều công cụ và script để mở rộng phạm vi tác vụ có thể thực hiện
  • Vì Waydroid sử dụng LXC và các kernel module cho binder, Waydroid-Linux không hoạt động ở live mode; cần cài đặt để hoạt động bình thường
  • Các mục tải xuống beta yêu cầu xem README.md, và các bản phát hành ví dụ gồm Ubuntu 22.04 KDE-Plasma, Ubuntu 22.04 Gnome, Debian 12 Beta, Ubuntu 21.10 Beta và các bản alpha cũ hơn

1 bình luận

 
GN⁺ 2025-02-03
Ý kiến trên Hacker News
  • Tôi khá bất ngờ khi cái này lên trang nhất. Vì đây là phần mềm khá nổi tiếng
    Điều đáng tiếc là Waydroid không có image do Google cung cấp để chạy. Chẳng hạn như image hệ thống chung. Nhập mật khẩu vào một ROM tùy ý tải từ Internet khiến tôi thấy không yên tâm
    https://source.android.com/docs/core/tests/vts/gsi

    • Khó có thể gọi đó là “ROM tùy ý tải từ Internet”. LineageOS là một dự án đã tồn tại rất lâu và có vị thế vững chắc; ngoại trừ firmware cần cho từng thiết bị cụ thể, nó là phần mềm tự do và mã nguồn mở hoàn chỉnh
      Với một dự án như Waydroid, cần sự hỗ trợ cộng đồng và phát hành liên tục, đây là lựa chọn tự nhiên. Google trong nhiều năm qua đã liên tục loại bỏ nhiều phần tự do và mã nguồn mở vốn có trong AOSP, nền tảng của Android, nên các dự án như LineageOS đã phải phát triển các thành phần thay thế. Dù vậy, tôi nghĩ các chỉnh sửa mà LineageOS áp lên AOSP vẫn ít hơn hầu hết các nhà sản xuất điện thoại, kể cả Google
    • Có thể gọi là tùy ý được không? LineageOS là một dự án khá vững chắc. Ngược lại, tôi còn ngại nhập thông tin cá nhân vào image do Google cung cấp hơn. Vì mô hình kinh doanh cốt lõi của Google là thu thập dữ liệu của tôi và hiển thị quảng cáo
    • Thành thật mà nói, tôi tin LineageOS hơn image do Google cung cấp
    • Nhân tiện, Firefox trước đây cũng từng lên trang nhất. Chuyện đó được phép mà :)
    • Google có cung cấp image chạy trong Docker
  • Sẽ rất hay nếu có một Android được container hóa có thể chạy trên Mac bằng những thứ như Docker Desktop hoặc OrbStack
    Tôi muốn chỉnh sửa Docker image để thiết lập sẵn proxy trung gian đã root, rồi đưa ứng dụng Android lên đó để quan sát lưu lượng mạng và các lệnh gọi API dễ dàng hơn nhiều

    • Nếu muốn làm nhanh ngay bây giờ, có thể chạy Waydroid rồi chạy Wireshark bên trong network namespace được tạo cho Waydroid
      sudo ip netns exec wireshark
    • Tôi không rõ về thiết lập proxy, nhưng redroid về cơ bản là Android trong một Docker container
  • Đây là nền tảng giúp FuriLabs làm tốt phần tích hợp ứng dụng Android. Tất nhiên họ đã fork và chỉnh sửa đáng kể [0], nhưng trải nghiệm người dùng cho phép dùng ứng dụng Android trên điện thoại Linux là rất tuyệt
    [0] https://github.com/FuriLabs/waydroid

    • Tôi là Jesus từ FuriLabs. Đang kết thúc FOSDEM, nhưng nếu có câu hỏi hay phản hồi thì tôi có thể trả lời :)
  • Furiphone FLX1 đang tận dụng cái này rất tích cực và thật sự rất tốt. Nó làm được hầu hết những việc mà tôi muốn làm với một chiếc điện thoại Android thật sự
    Tất nhiên nhu cầu của tôi không nhiều, nhưng tôi cũng biết những người dùng nó cho Signal và Spotify. Đây là một dự án tuyệt vời và rất hợp với điện thoại Linux

    • Lần đầu thấy trong luồng này nên tôi xem thử, trông có vẻ tốt. Tôi muốn mua một chiếc, nhưng FAQ ghi rằng “các ứng dụng cần toàn bộ Google Play Store và các yêu cầu của nó sẽ không hoạt động, bao gồm một số ứng dụng ngân hàng”
      Cuối cùng có lẽ tôi vẫn phải mang theo hai điện thoại. Ứng dụng ngân hàng và thẻ tín dụng là các ứng dụng thiết yếu cần hằng ngày, và với một số tài khoản, tôi thậm chí không thể đăng nhập từ trình duyệt desktop nếu không xác thực bằng ứng dụng điện thoại. Các khoản thanh toán riêng lẻ cũng thường cần xác nhận qua ứng dụng điện thoại. Tôi cũng không ở trong tình thế có thể đổi ngân hàng để có trải nghiệm người dùng tự do hơn
      Ngoài tài chính, công việc chính của tôi bắt buộc dùng bộ sản phẩm Google, còn ở việc khác tôi cũng phải dùng Discord. Những thứ này có lẽ dùng qua trình duyệt được dù bị giảm chức năng, nhưng ứng dụng ngân hàng và thẻ tín dụng thì không
      Đây không phải là phàn nàn về Waydroid hay FLX1; tôi rất trân trọng công sức và sự sáng tạo đó. Tôi đã mơ từ lâu về việc sở hữu và tự làm một chiếc điện thoại hoàn toàn tự do và mã nguồn mở, và cũng biết khối lượng công việc cần bỏ ra. Trước đây tôi từng dùng hai chiếc Nokia N900
      Chỉ là thời thế đã thay đổi, và tôi hy vọng sẽ tìm được cách chạy các ứng dụng hoặc giao thức mà đời sống hằng ngày hiện nay đòi hỏi trên hoặc song song với một hệ thống dựa trên phần mềm tự do và mã nguồn mở
    • Chiếc điện thoại này gần như hoàn hảo. Có đầu nối TRRS, thẻ uSD, pin người dùng tự thay được, và còn bán tại Mỹ
      Tuy nhiên việc không có tấm nền OLED có thể là nhược điểm chí mạng
    • Tôi tò mò Furiphone FLX1 như thế nào. Có quá ít bài đánh giá trực tuyến
    • Cổng USB-C có hỗ trợ chế độ thay thế DP không?
    • Flatpak Signal hoạt động tốt cả trên FuriOS
  • Tôi có ba ứng dụng đã mua từ rất lâu. Một từ điển tiếng Thụy Điển, một từ điển Đức-Thụy Điển, và một từ điển Anh-Thụy Điển
    Tôi vẫn có thể cài chúng, nhưng chúng không còn được cung cấp trên app store nữa. Công ty Norstedts thì tất nhiên đã chuyển sang mô hình đăng ký thuê bao. Tôi dùng Waydroid để dùng các ứng dụng này trên desktop và rất hài lòng

  • Nhiều ứng dụng phụ thuộc vào việc được chạy trên bản phân phối Android “chính thức” như của Google, Samsung, và không hoạt động trên bản phân phối dựa trên Lineage của Waydroid
    Một cách tiếp cận kiểu Wine như https://gitlab.com/android_translation_layer/android_transla... có vẻ có thể giúp đánh lừa ứng dụng rằng nó đang chạy trên một bản phân phối Android “chính thức”

    • Để đánh lừa ứng dụng theo kiểu này, có một tập API cụ thể cần phải mô phỏng. Trên Android “thật”, các mô-đun Magisk giả mạo một phần, hoặc microG tái triển khai toàn bộ dịch vụ Google để xử lý việc này
      Cách tiếp cận kiểu Wine của ATL chắc chắn trực quan hơn để mô phỏng API, nhưng vẫn cần tái triển khai riêng cho ATL. Trong khi đó, Waydroid chạy cả một môi trường Android đầy đủ, nên có khả năng tái sử dụng Magisk hoặc microG
  • Mỗi lần thấy cái này tôi đều nghĩ “Hay đấy! Có thể chạy được những ứng dụng Android tuyệt vời mà không có bản cho Linux”, nhưng lần nào cũng chẳng nghĩ ra được gì. Có ứng dụng Android nào thật sự cần phải có không?

    • Organic MapsOSMAnd. Chúng tốt hơn các phần mềm bản đồ desktop mã nguồn mở mà tôi tìm được
      Organic Maps có phiên bản desktop Linux, nhưng còn lâu mới tương đương về tính năng. Tuy vậy, điều này có thể thay đổi nhờ khoản tài trợ này [1] nhằm tạo một UI desktop tốt cho Organic Maps
      [1] https://nlnet.nl/project/OrganicMaps-ConvergentUI/
    • Tôi thích FairEmail, một mail client. Nghe có vẻ lạ, nhưng có khi nó còn tốt hơn mọi mail client desktop tôi từng dùng
    • Điều quan trọng với tôi là những thứ như ứng dụng ngân hàng cần xác thực dựa trên app. Tất nhiên, đáng tiếc là các giải pháp kiểu này thường không hoạt động tốt trong Waydroid, vì app nhận ra nó đang ở trong container và chặn chức năng
    • Tôi thấy nó chủ yếu được khuyên dùng cho những người muốn chơi game mobile trên Steam Deck
    • Tôi có một cây “guitar thông minh” cần app riêng để đổi thiết lập. Đó là lý do duy nhất khiến tôi vẫn dùng “smart”phone
  • Container này có thể truy cập thiết bị USB phần cứng không? Tôi có một cáp Moondrop FreeDSP USB-C có PEQ, nhưng nó chỉ hoạt động với một app Android tệ hại
    Chiếc tablet Android tôi có cũng có màn hình cảm ứng quá tệ, nên đổi thiết lập EQ mất quá nhiều thời gian. Tôi chỉ muốn làm việc đó bằng laptop Linux

    • Có vẻ là được. Khi Android đang được focus mà cắm thiết bị USB vào, nó còn có thể vô tình chiếm luôn thiết bị USB đó: https://github.com/waydroid/waydroid/issues/778
      Kể cả không phải vậy thì rốt cuộc nó vẫn là Linux container, nên với một ít rule udev chắc cũng có thể làm cho nó hoạt động bằng cách nào đó
  • Có vài thứ dường như cứ bị thiếu trong các dự án kiểu này. Phần dùng tăng tốc 3D phần cứng của host với các phiên bản OpenGL ES và Vulkan mà hầu hết điện thoại hỗ trợ mặc định còn thiếu
    Ngoài ra, nhiều app có cơ chế tích hợp để phát hiện rằng chúng không chạy trên điện thoại, kiểm tra cpuinfo rồi đối chiếu với thiết bị được khai báo và thoát luôn
    Mức hỗ trợ ARM mà thiết bị kỳ vọng cũng ngày càng tăng, và throughput kỳ vọng cũng tăng theo. Vì vậy, để mô phỏng ngay cả một SoC ARM di động hiện đại bình thường, hiệu năng host x86 cần thiết cũng ngày càng cao
    Cuối cùng, phiên bản Android được hỗ trợ gần như luôn tụt sau bản mới nhất 3–4 thế hệ. Các app nhanh chóng ngừng hỗ trợ Android cũ, hoặc chạy trên OS cũ với ít tính năng và tối ưu hơn. Phiên bản nền Android của dự án này là từ năm 2020
    Theo giai thoại, ngay cả BlueStacks, vốn có stack mô phỏng tương thích và tối ưu nhất trong lĩnh vực này, khi chạy trên 7800X3D / RTX 3090 thì phần lớn game vẫn chậm hơn chạy native trên điện thoại Snapdragon 8 năm ngoái

  • Điều đáng ngạc nhiên là chưa có ai trừu tượng hóa cái này để có thể chạy nhiều container Android dưới LXC
    Waydroid chỉ có một image. Theo tôi nhìn thì dường như nó dùng một Linux kernel tùy biến được patch khá nhiều, tôi chưa nắm rõ, nhưng phía giao diện LXC trông khá đơn giản

    • Waydroid dùng kernel của host