- सिर्फ Swift से Android native app develop करने वाला framework, जिसमें UI से लेकर manifest और lifecycle तक सब कुछ एक ही language में बनाया जा सकता है
- XML, Java, Kotlin का बिल्कुल उपयोग किए बिना declarative UI approach से Android UI बनाने की संरचना प्रदान करता है
- Web wrapper या transpiler नहीं, बल्कि शुद्ध native Android framework के रूप में काम करता है
- SwiftUI जैसी declarative syntax के जरिए UI define किया जा सकता है, और जटिल JNI layer को पूरी तरह छिपा देता है
- Android Manifest और Gradle settings तक को सीधे Swift code में define करने वाला integrated development experience देता है
- Swift developers के लिए Android तक विस्तार करने का एक नया native विकल्प, और Swift-based cross-platform development की नई संभावनाएँ खोलने वाला turning point
Droid का अवलोकन
- Droid एक ऐसा framework है जिसे सिर्फ Swift language का उपयोग करके Android native applications develop करने के लिए डिज़ाइन किया गया है
- UI, app settings, lifecycle, manifest को एक ही language और codebase में manage करने के लिए बनाया गया है
- Android development में अनिवार्य मानी जाने वाली XML, Java, Kotlin dependencies को हटाता है
- AndroidX, Flexbox, Material Design जैसे Android native components शामिल हैं
- SwiftUI जैसी declarative syntax देकर UI definition को सरल बनाता है
- JNI layer को पूरी तरह छिपाकर high-level API के जरिए access देता है
डिज़ाइन लक्ष्य और विशेषताएँ
- Pure Swift आधारित, जहाँ UI, manifest और app configuration का पूरा हिस्सा Swift में लिखा जाता है
- Declarative UI अपनाकर readability और composability पर ज़ोर
- XML का बिल्कुल उपयोग न करने वाला No XML development approach
- Web-based approach या code conversion नहीं, बल्कि Native Android execution model अपनाता है
- UI, manifest, Gradle dependencies को एक ही जगह define करने वाली integrated structure देता है
Declarative UI की संरचना
- Swift-friendly API का उपयोग करके Android UI को declarative तरीके से बनाया जाता है
- ConstraintLayout, VStack, TextView, MaterialButton जैसे Android widgets को Swift code में व्यक्त किया जाता है
- Layout constraints, click events, style settings को सीधे code में define किया जाता है
Swift में लिखा जाने वाला Android Manifest
- Android Manifest को ही Swift code में declare किया जाता है
- App icon, theme, activity, fragment settings को code level पर manage किया जाता है
- Lifecycle event handling और configuration logic को एक ही Swift file में एकीकृत किया जाता है
दस्तावेज़ और development environment
- Official documentation उपलब्ध है और लगातार विस्तारित की जा रही है
- Android की पूरी functionality अभी पूरी तरह document नहीं हुई है, लेकिन मौजूदा guides को परिष्कृत रूप में दिया गया है
- Swift Stream IDE के जरिए तुरंत development शुरू किया जा सकता है
सपोर्ट का दायरा
- Classic Android widgets का समर्थन
- AndroidX libraries का समर्थन
- Material Design components का समर्थन
- Flexbox layout का समर्थन
प्रोजेक्ट की स्थिति
- प्रोजेक्ट सक्रिय रूप से development में है और तेज़ी से विकसित हो रहा है
- API को विस्तार की संभावना के साथ लगातार बेहतर किया जा रहा है, लेकिन इसका मुख्य vision बरकरार है
- Feedback और participation को सक्रिय रूप से प्रोत्साहित किया जाता है
1 टिप्पणियां
Hacker News की राय
Swift Stream IDE v1.17.0 जारी किया गया है। अब सिर्फ Swift से पूरी Android ऐप डेवलपमेंट संभव हो गई है
XML, Java, Kotlin को बिल्कुल छूने की ज़रूरत नहीं है। अंदरूनी तौर पर मेरे बनाए SwifDroid framework द्वारा Android lifecycle, Activity, Fragment, UI widgets (Material, Flexbox आदि) संभाले जाते हैं और Gradle dependencies भी अपने-आप manage होती हैं
यह Swift code को compile करके Android Studio में तुरंत चलने योग्य project बनाता है। tool और framework दोनों को MIT open source license के तहत जारी किया गया है
आपने कहा कि XML, Java, Kotlin को छूना नहीं पड़ता, लेकिन क्या Android का बिल्कुल अनुभव न रखने वाला Swift developer भी सफलतापूर्वक ऐप बना सकता है, यह जानना चाहूँगा
और यह भी कि अभी और अगले साल के हिसाब से Kotlin या Flutter ऐप्स का लगभग कितने प्रतिशत हिस्सा Swift में लिखा जा सकता है
हम भी Swift की जगह Rust के साथ कुछ ऐसा ही करने की कोशिश कर रहे हैं
ऐसी कोशिशों को आखिरकार JNI से होकर जाना ही पड़ता है, इसलिए यह सीमा रहेगी कि API का 80% सिर्फ Java के रूप में expose होता है
ऐसे प्रोजेक्ट हमेशा दिलचस्प होते हैं, लेकिन अंत में leaky abstraction की समस्या से टकराते ही हैं
जैसे iOS में Objective-C जानना पड़ता है, और Windows में .NET/COM जानना पड़ता है
Unity के अनुभव से देखें तो C# से C तक marshalling तो smooth है, लेकिन Swift में काफ़ी ज़्यादा मेहनत लगती है
हक़ीक़त यह है कि हर नए framework के लिए अलग से निपटना पड़ता है
प्लेटफ़ॉर्मों के बीच एक common language (Swift या Kotlin) इस्तेमाल करना ऊपर-ऊपर से अच्छा लगता है, लेकिन मुझे नहीं लगता कि व्यवहार में यह उतना efficient है जितनी उम्मीद की जाती है
आखिर में दो codebases maintain करने पड़ते हैं, और फ़र्क़ व workarounds इतने बढ़ जाते हैं कि बेहतर है हर प्लेटफ़ॉर्म की भाषा को उसी रूप में इस्तेमाल किया जाए
ज़्यादातर developers कई भाषाएँ सीखते हुए करियर बनाते हैं, और switch करना भी इतना मुश्किल नहीं होता। यह मेरी निजी राय है, लेकिन प्रोजेक्ट अपने-आप में शानदार है
मैंने भी कभी Java से Android native ऐप बनाने के लिए कई महीने पढ़ाई की थी, लेकिन मज़ा नहीं आया और छोड़ दिया
मेरी पसंद पूर्ण native development है, और दशकों तक cross-platform frameworks इस्तेमाल करने के बाद भी बहुत बड़ी सफलता कम ही देखी है
भाषा बदलने के साथ हमेशा context switching cost आती है। Swift और PHP के बीच आते-जाते मैं अक्सर syntax mistakes कर देता हूँ
भाषा तो जल्दी सीखी जा सकती है, लेकिन SDK, standard library और framework में दक्ष होने में बहुत समय लगता है
खासकर अब AI tools की वजह से साधारण काम पहले ही काफ़ी तेज़ हो चुके हैं, इसलिए कुल development time में बचत उतनी बड़ी नहीं रहती
अगर ऐप लगभग web app जैसी ही है तो बात अलग है, वरना मैं इसकी सिफारिश नहीं करूँगा
भाषा के रूप में Swift बेहतर लगती है, लेकिन KMP ज़्यादा पुराना और stable है, इसलिए व्यवहार में शायद मैं उसी का इस्तेमाल करूँगा
लेकिन किसी बड़े corporate ecosystem पर और ज़्यादा निर्भर होना मुझे पसंद नहीं
ऊपर से Swift मुझे व्यक्तिगत रूप से असुविधाजनक भाषा लगती है, इसलिए उसे दूसरे platform पर भी इस्तेमाल करने की ख़ास इच्छा नहीं है
यह Skip से कैसे तुलना करता है, यह जानने की उत्सुकता है
लगता है यह प्रोजेक्ट iOS SwiftUI code को Android में ले जाने के बजाय, Android-only Swift development पर केंद्रित है
क्या इससे ऐप की quality बेहतर हो सकती है, और क्या इसके वास्तविक उदाहरण हैं, यह जानना चाहूँगा
सिर्फ़ इस वजह से कि Android Studio या IntelliJ इस्तेमाल न करना पड़े, मैं इसे बहुत बड़ा सुधार मानता हूँ। शानदार काम
cookie consent dialog कुछ यूरोपीय नियमों के अनुरूप नहीं लगता
समझ नहीं आता कि mobile development PC की तुलना में इतनी असुविधाजनक क्यों है
मोबाइल पर assembly में Hello World जैसा साधारण प्रोग्राम बनाना भी इतना मुश्किल क्यों है, यह सोचता हूँ
मैंने काफ़ी समय से Android development नहीं किया, तो आज की स्थिति को समेटकर देखूँ तो
पहले iOS में Swift और Android में Java होता था
अब Java की जगह Kotlin है, और Flutter या React Native जैसे cross-platform frameworks भी आ गए हैं
तो Swift on Android भी क्या ऐसा ही एक और abstraction layer है, या यह native के काफ़ी क़रीब है, यह जानना चाहूँगा
आखिर सबसे तेज़ तो native code ही नहीं होता?
व्यक्तिगत रूप से मुझे Flutter पसंद है। कई Android native developers भी कहते हैं कि Flutter Android development का भविष्य हो सकता है
संबंधित चर्चा के लिए यह Reddit thread देखें
यह प्रोजेक्ट SwiftCrossUI या Skip से अलग approach लेता है
SwiftCrossUI और Skip, SwiftUI को कई platforms पर वैसे का वैसा चलाने की कोशिश करते हैं,
जबकि SwifDroid का लक्ष्य Android-specific UI को Swift में लिखना है
मकसद है Android के View system और APIs का सीधे इस्तेमाल करते हुए, Java/Kotlin/XML के बिना पूरी Android ऐप्स को Swift में बनाना
यानी यह “एक बार लिखो, हर जगह चलाओ” नहीं, बल्कि Swift में Android native अनुभव को लागू करने की दिशा है
Swift में HTTP requests और JSON parsing को idiomatic तरीके से कैसे handle किया जाता है, यह जानना चाहूँगा