Linux कंटेनर में चलने वाला Android, Waydroid
(waydro.id)- Waydroid एक ऐसा प्रोजेक्ट है जो Wayland-आधारित GNU/Linux डेस्कटॉप पर पूरे Android सिस्टम को कंटेनर के रूप में बूट करता है, ताकि Android ऐप्स Linux ऐप्स की तरह साथ-साथ चल सकें
- Linux namespaces और LXC, binder इंटरफेस का उपयोग करके Android कंटेनर आवश्यक हार्डवेयर तक सीधे पहुंचता है और arm, arm64, x86, x86_64 GNU/Linux प्लेटफॉर्म को सपोर्ट करता है
- Android ऐप्स को Linux application folder में इंटीग्रेट किया जा सकता है, और Multi-Window Mode, Full UI Mode, Fullscreen Mode जैसे उपयोग-परिस्थिति के अनुसार रन मोड उपलब्ध कराता है
- runtime LineageOS पर आधारित न्यूनतम कस्टमाइज्ड Android system image से बना है, और मौजूदा image Android 13 आधारित है
- इंस्टॉलेशन के बाद waydroid-container service शुरू करनी होती है और app menu से first-run wizard पूरा करना होता है; Waydroid-Linux beta distribution live mode में नहीं, बल्कि installed environment में काम करता है
Waydroid का Android-on-Linux आर्किटेक्चर
- Waydroid सामान्य GNU/Linux सिस्टम के Wayland-आधारित desktop environment में पूरे Android सिस्टम को कंटेनर के रूप में बूट करने का तरीका इस्तेमाल करता है
- कंटेनर के अंदर Android Linux namespaces का उपयोग करता है
- user
- pid
- uts
- net
- mount
- ipc
- Android सिस्टम LXC और binder interface के जरिए जरूरी हार्डवेयर तक सीधे पहुंचता है
- समर्थित प्लेटफॉर्म GNU/Linux आधारित arm, arm64, x86, x86_64 हैं
- यह प्रोजेक्ट मुफ्त open source है और repository GitHub पर है
डेस्कटॉप इंटीग्रेशन और रन मोड
- Android ऐप्स Linux applications के साथ-साथ डेस्कटॉप पर चलते हैं, और Waydroid Android ऐप्स को Linux application folder में जोड़ता है
- रन मोड उपयोग के तरीके के अनुसार बंटे हैं
- Multi-window mode: Android freeform window definition को बढ़ाकर कई सुविधाएं जोड़ता है
- Full UI Mode: गेम और full-screen entertainment के लिए पूरा Android UI दिखाता है
- डेस्कटॉप/कियोस्क के लिए Fullscreen Mode इस्तेमाल किया जा सकता है
- परफॉर्मेंस के मामले में Wayland और AOSP mesa का उपयोग करके जितना संभव हो native-जैसे व्यवहार का लक्ष्य रखा गया है
- Android runtime environment LineageOS पर आधारित न्यूनतम कस्टमाइज्ड Android system image के साथ आता है, और मौजूदा image Android 13 आधारित है
डॉक्यूमेंटेशन, इंस्टॉलेशन, Waydroid-Linux beta
- डॉक्यूमेंटेशन और issue management अलग लिंक पर देखे जा सकते हैं
- डॉक्यूमेंटेशन: docs.waydro.id
- bug report: GitHub Repo
- development repository: GitHub
- desktop installation docs: installation docs
- manual image download: SourceForge
- systemd distributions में quick install flow के लिए distribution-specific installation docs का पालन करें; इसके बाद, यदि automatic start नहीं हुआ है तो waydroid-container service शुरू करें और application menu से Waydroid चलाकर first-run wizard पूरा करें
- first run के दौरान मांगने पर OTA links के रूप में System OTA और Vendor OTA दर्ज करें
- System OTA:
https://ota.waydro.id/system - Vendor OTA:
https://ota.waydro.id/vendor
- System OTA:
- Waydroid-Linux Beta पूरी तरह इंटीग्रेटेड distributions हैं, जिन्हें Waydroid द्वारा संभव integration capabilities दिखाने के लिए बनाया गया है
- शुरुआती alpha release Ubuntu 20.04(focal) से शुरू हुई
- फिलहाल Ubuntu 22.04(jammy) और Debian 12(bookworm) भी शामिल हैं
- संभव कार्यक्षेत्र को बढ़ाने के लिए कई tools और scripts शामिल हैं
- Waydroid LXC और binder के लिए kernel modules का उपयोग करता है, इसलिए Waydroid-Linux live mode में काम नहीं करता; सही तरीके से काम करने के लिए installation आवश्यक है
- beta download items README.md देखने की मांग करते हैं, और example releases के तौर पर Ubuntu 22.04 KDE-Plasma, Ubuntu 22.04 Gnome, Debian 12 Beta, Ubuntu 21.10 Beta, पुराने alpha releases उपलब्ध हैं
1 टिप्पणियां
Hacker News की राय
यह front page पर आया, यह थोड़ा हैरान करने वाला है। यह काफ़ी जाना-पहचाना software है, इसलिए
अफ़सोस की बात यह है कि Waydroid में चलने वाली Google द्वारा दी गई image नहीं है। जैसे कोई general system image। Internet से डाउनलोड किए गए किसी भी random ROM में password डालना असहज लगता है
https://source.android.com/docs/core/tests/vts/gsi
Waydroid जैसे project के लिए, जिसे community support और लगातार उपलब्धता चाहिए, यह एक natural choice है। Google ने Android के आधार AOSP से वर्षों में कई मूल free और open source हिस्से हटाते रहे हैं, इसलिए LineageOS जैसे projects को replacement components बनाने पड़े। फिर भी लगता है कि LineageOS, AOSP में Google समेत ज़्यादातर phone manufacturers की तुलना में कम बदलाव करता है
Mac पर Docker Desktop या OrbStack जैसी चीज़ों से चला सकने वाला containerized Android हो तो अच्छा होगा
Docker image modify करके rooted man-in-the-middle proxy पहले से set up करना चाहता हूँ, और Android app डालकर network traffic और API calls को कहीं आसानी से observe करना चाहता हूँ
sudo ip netns exec wiresharkयही वह आधार था जिस पर FuriLabs ने Android app integration अच्छा बनाया। ज़रूर, उन्होंने fork करके [0] काफ़ी modify किया, लेकिन Linux phone पर Android apps इस्तेमाल करने वाला user experience शानदार था
[0] https://github.com/FuriLabs/waydroid
Furiphone FLX1 इसका खूब इस्तेमाल कर रहा है और सच में अच्छा है। असली Android phone से जो ज़्यादातर काम करना चाहेंगे, वे कर सकते हैं
बेशक मेरी ज़रूरतें बहुत ज़्यादा नहीं हैं, लेकिन मैं ऐसे लोगों को जानता हूँ जो इसे Signal और Spotify के लिए इस्तेमाल करते हैं। शानदार project है और Linux phone के लिए बिल्कुल fit बैठता है
आखिरकार लगता है कि दो phones साथ रखने पड़ेंगे। Banking और credit card apps रोज़ की ज़रूरी apps हैं, और कुछ accounts में desktop browser से भी phone app authentication के बिना login तक नहीं हो पाता। अलग-अलग payments के लिए भी अक्सर phone app confirmation चाहिए होता है। ज़्यादा free user experience के लिए bank account बदल पाने की स्थिति भी नहीं है
Finance के अलावा, main work में Google suite इस्तेमाल करना पड़ता है, और दूसरे काम में Discord भी इस्तेमाल करना पड़ा। यह शायद functionality कम होने पर भी browser से संभव है, लेकिन banking और credit card apps के साथ ऐसा नहीं है
यह Waydroid या FLX1 की शिकायत नहीं है; उस काम और creativity की मैं सराहना करता हूँ। पूरी तरह free और open source phone रखने और खुद बनाने का सपना लंबे समय से देखा है, और उसके workload को भी जानता हूँ। पहले Nokia N900 भी दो इस्तेमाल किए थे
बस समय बदल गया है, और उम्मीद है कि आज की everyday life जिन apps या protocols की मांग करती है, उन्हें free और open source based system पर या उसके साथ-साथ चलाने का कोई तरीका मिल जाए
हालांकि OLED panel न होना निर्णायक कमी हो सकती है
बहुत पहले खरीदी हुई मेरी तीन apps हैं। Swedish dictionary, German-Swedish dictionary, और English-Swedish dictionary
अब भी install की जा सकती हैं, लेकिन app store में अब उपलब्ध नहीं हैं। Company Norstedts स्वाभाविक रूप से subscription model पर चली गई है। इन apps को desktop पर इस्तेमाल करने के लिए मैं Waydroid इस्तेमाल कर रहा हूँ और बहुत संतुष्ट हूँ
कई apps Google, Samsung जैसी “official” Android distributions पर चलने पर निर्भर करती हैं, और Waydroid की Lineage-based distribution पर काम नहीं करतीं
https://gitlab.com/android_translation_layer/android_transla... जैसा Wine-style approach apps को यह विश्वास दिलाने में मदद कर सकता है कि वे “official” Android distribution पर चल रही हैं
ATL का Wine-style approach APIs की नकल करने के लिए निश्चित रूप से ज़्यादा intuitive है, लेकिन फिर भी ATL के लिए अलग reimplementation चाहिए। दूसरी ओर Waydroid पूरा Android environment चलाता है, इसलिए Magisk या microG को reuse करने की संभावना है
इसे हर बार देखते समय सोचता/सोचती हूँ, “कमाल है! ऐसे शानदार Android ऐप चला सकूँगा जिनका Linux वाला ऐप नहीं है”, लेकिन हर बार कुछ याद ही नहीं आता। क्या कोई Android ऐप है जो वाकई ज़रूरी हो?
Organic Maps का desktop Linux version है, लेकिन feature parity अभी काफी दूर है। हालांकि Organic Maps के लिए अच्छा desktop UI बनाने वाली इस grant [1] की वजह से यह बदल भी सकता है
[1] https://nlnet.nl/project/OrganicMaps-ConvergentUI/
क्या यह container hardware USB device तक access कर सकता है? मेरे पास PEQ वाला Moondrop FreeDSP USB-C cable है, जो सिर्फ एक खराब Android app में काम करता है
मेरे पास जो Android tablet है उसका touchscreen भी खराब है, इसलिए EQ settings बदलने में बहुत समय लग जाता है। मैं यह बस Linux laptop से करना चाहता/चाहती हूँ
अगर ऐसा न भी हो, तो अंततः यह Linux container ही है, इसलिए कुछ udev rules के साथ किसी तरह इसे काम कराया जा सकता होगा
ऐसे projects में कुछ चीज़ें लगातार गायब दिखती हैं। host के hardware 3D acceleration को उस OpenGL ES और Vulkan versions के साथ इस्तेमाल करने का हिस्सा कमज़ोर है जिन्हें ज़्यादातर phones मूल रूप से support करते हैं
साथ ही कई apps में यह detect करने के built-in तरीके होते हैं कि वे phone पर नहीं चल रहे, और वे cpuinfo देखकर claimed device से मिलाते हैं और फिर बंद हो जाते हैं
devices में expected ARM support भी बढ़ रहा है, और expected throughput भी साथ में बढ़ रहा है। इसलिए एक साधारण modern mobile ARM SoC को भी emulate करने के लिए ज़रूरी x86 host performance लगातार बढ़ती जा रही है
आखिर में, supported Android version लगभग हमेशा latest से 3–4 generations पीछे रहता है। apps पुराने Android support को तेजी से बंद कर देते हैं, या पुराने OS versions पर कम features और optimizations के साथ चलते हैं। इस project का Android base version 2020 का है
अनुभव के तौर पर, इस क्षेत्र में सबसे अच्छी compatibility और optimization वाले emulation stack BlueStacks को भी 7800X3D / RTX 3090 पर चलाने पर ज़्यादातर games पिछले साल के Snapdragon 8 phone पर native चलने की तुलना में धीमे चलते हैं
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
समझ नहीं आता कि Android development के लिए official x86 container या ROM क्यों नहीं है। क्या Android apps के CI builds latest Android version पर tests नहीं चलाते? उत्सुक हूँ कि APK के CI builds Android container के बिना GUI tests कैसे चलाते हैं
हैरानी की बात है कि किसी ने इसे abstract करके कई Android containers को LXC के नीचे चलाने लायक नहीं बनाया
Waydroid में सिर्फ एक image है। मुझे लगा कि यह बहुत सारे patches वाले custom Linux kernel का इस्तेमाल करता है, और मैं इसे ठीक से समझ नहीं पाया/पाई, लेकिन LXC interface वाला हिस्सा काफी simple दिखा