या कैसे Bitotsav '19 ऐप वास्तविकता बना
पृष्ठभूमि: Pantheon '17 ⏪
लगभग दो साल पहले, सितंबर 2017 में, एक दोस्त Ashank Anshuman ने मुझे हमारे संस्थान के तकनीकी उत्सव के लिए एक ऐप पर काम करने के लिए मना लिया। हमने लगभग दो सप्ताह तक दिन-रात काम किया, इसे उत्सव के लिए समय पर रिलीज के लिए तैयार किया। हालांकि हम थक गए थे, लेकिन कुछ 'बाहर' लाने का, प्रोडक्शन में, जिसे लोग वास्तव में उपयोग करते थे, एक अद्भुत एहसास था! इसने अपना उद्देश्य पूरी तरह से पूरा किया, आयोजकों को प्रतिभागियों को सब कुछ आसानी से बताने में मदद की।
Pantheon '17 - Google Play पर ऐप्स
युवाओं को अपने तकनीकी कौशल दिखाने के लिए एक राष्ट्रीय मंच प्रदान करने के अपने प्रयास में...play.google.com
इसे 120 समीक्षाओं के साथ 4.9 रेटिंग मिली, जिसे Google के बॉट्स ने किसी कारण से हटा दिया, लेकिन यह दूसरी बार की कहानी है। हमें ऐप का सोर्स साझा करने के कुछ अनुरोध मिले, लेकिन हमने मना कर दिया, कई कारणों से — लेकिन ज्यादातर इसलिए क्योंकि हम कोड से संतुष्ट नहीं थे, खासकर अंत के पास जल्दबाजी में लिखे गए हिस्से। हमारे पास इतना समय और अनुभव नहीं था कि लोग जिससे सीख सकें और/या उपयोग कर सकें ऐसा कोड लिख सकें।
फिर से शुरू! ?
नवंबर 2018 तक आगे बढ़ें: Ankit Agrawal (वो 'उत्सव वाले लड़के') ने मुझे Bitotsav, हमारे वार्षिक सामाजिक-सांस्कृतिक उत्सव, की टीम में शामिल होने के लिए कहा, जिस पर मैं सहमत हो गया क्योंकि मैं Android को फिर से देखने के लिए कुछ बहाना ढूंढ रहा था। इस बार मैंने Ashank को मना लिया (काफी मनाने के बाद!) ऐप पर काम करने के लिए।
हमने दिसंबर में ज्यादा कुछ नहीं किया, लेकिन मैंने Architecture Components, AndroidX, Jetpack आदि जैसी चीजों पर पढ़ना शुरू कर दिया था। मैं पिछले कुछ महीनों से Kotlin से भी परिचित हो रहा था, दो कोर्स इसमें सहायक रहे: एकमात्र Hadi Hariri का दो-भाग वाला कोर्स और Svetlana Isakova और Andrey Breslav का एक हालिया कोर्स (जिसे उन्होंने KotlinConf 2018 में पेश किया)। इसलिए Kotlin ऐप के लिए स्पष्ट विकल्प था।
Kotlin प्रोग्रामिंग का परिचय
Kotlin 1.0 फरवरी 2016 में जारी किया गया था, और तब से इसे दुनिया भर के डेवलपर्स द्वारा अपनाया गया है...shop.oreilly.com
Java डेवलपर्स के लिए Kotlin | Coursera
JetBrains से Java डेवलपर्स के लिए Kotlin। Kotlin प्रोग्रामिंग भाषा एक आधुनिक भाषा है जो आपको अधिक...www.coursera.org
निर्णय ?
जनवरी का पहला आधा हिस्सा भी ज्यादा कोड लिखे बिना बीत गया, क्योंकि मैं व्यस्त था और 16 जनवरी तक कॉलेज नहीं पहुंच सका। हालांकि, हमने कुछ प्रमुख निर्णय लिए:
- अनन्य रूप से Kotlin का उपयोग करें
- फीचर-आधारित पैकेजिंग का उपयोग करें
- AndroidX के साथ Jetpack आर्किटेक्चर कंपोनेंट्स का उपयोग करें
- न्यूनतम API 21 का उपयोग करें (22 बेहतर विकल्प हो सकता था)
- Android Studio Canary का उपयोग करें
- Git Flow और SemVer का उपयोग करें
- उत्सव के बाद इसे सार्वजनिक करने के लिए पर्याप्त अच्छा कोड लिखें ?
तो मूल रूप से, 2017 में ऐप विकसित करने के अनुभव से 2019 में ब्लीडिंग एज पर एक हार्ड रीसेट। यह वास्तव में रोमांचक था, लेकिन एक बड़ी चुनौती भी।
कोड कोड कोड! ?
हमने तय किया कि Ashank ऐप के बैकएंड (DB और नेटवर्किंग, FCM के साथ नोटिफिकेशन, बैकग्राउंड प्रोसेसिंग) का ख्याल रखेगा और मैं फ्रंटएंड और इंटीग्रेशन का, ठीक वैसे ही जैसे हमने Pantheon '17 के लिए किया था। शुरू करने और काम करते समय कई संसाधन काम आए, लेकिन अब तक के सबसे अच्छे Google द्वारा पेश किए गए ये शानदार कोडलैब थे:
- Room with a View - Kotlin (ViewModel, LiveData और Coroutines के साथ Room)
- अपने Android ऐप में Kotlin Coroutines का उपयोग करना
- Data Binding कोडलैब
- Navigation कोडलैब: (नेविगेशन आर्किटेक्चर कंपोनेंट)
- WorkManager के साथ बैकग्राउंड वर्क
Google कोडलैब्स
Google Developers कोडलैब्स एक निर्देशित, ट्यूटोरियल, हैंड्स-ऑन कोडिंग अनुभव प्रदान करते हैं। अधिकांश कोडलैब आपको...codelabs.developers.google.com
इसके अलावा, Google द्वारा Sunflower और Google IO 18 ऐप्स रेफरेंस के उद्देश्य के लिए आदर्श कोडबेस थे। Android Dev Summit ऐप भी रेफरेंस के लिए एक अच्छा स्रोत होता, अगर मुझे इसके बारे में पहले पता होता!
googlesamples/android-sunflower
Android Jetpack के साथ Android विकास की सर्वोत्तम प्रथाओं को दर्शाने वाला एक बागवानी ऐप - googlesamples/android-sunflowergithub.com
इनके साथ हमारे शस्त्रागार में, हमने कोडिंग शुरू की। मैंने नए नेविगेशन आर्किटेक्चर कंपोनेंट का उपयोग सिंगल-एक्टिविटी ऐप आर्किटेक्चर को लागू करने के लिए करने का फैसला किया। Ashank ने Room और FCM के साथ शुरुआत की। मैं Koin का उपयोग IoC के लिए करने के बारे में भी सोच रहा था, लेकिन निश्चित नहीं था।
संयोग से, Joe Birch ने ठीक उसी समय caster.io पर एक Koin कोर्स लॉन्च किया (पेशेवरों द्वारा छोटे, टू-द-पॉइंट कोर्स, लॉन्च पर प्रत्येक एक सप्ताह के लिए मुफ्त!), और इसके साथ जाने का फैसला किया। कोई पछतावा नहीं! गंभीरता से, Android सपोर्ट अद्भुत है और डॉक्यूमेंटेशन शानदार है ❤️
Koin
इस कोर्स में, हम एक पूरी तरह कार्यात्मक... बनाकर Koin नामक एक डिपेंडेंसी इंजेक्शन फ्रेमवर्क के बारे में सीखेंगेcaster.io
Navigation और Koin सेटअप के साथ, मैंने UI शुरू किया, केवल मटेरियल डिज़ाइन कंपोनेंट्स का उपयोग UI के लिए करने का निर्णय लिया, जिसके लिए दिशानिर्देश और डॉक्स काम आए। साथ ही, मुझे Data Binding का उपयोग करना पड़ा क्योंकि मुझे यह पसंद है! इस बीच Ashank ने WorkManager लागू किया, जिसे हमने Firebase Job Dispatcher के बजाय उपयोग करने का फैसला किया, पूरी तरह Jetpack पर जाकर!
मैंने जो पहली चीज विकसित की वह थी शेड्यूल UI, जिसने मुझे आर्किटेक्चर कंपोनेंट्स के साथ सहज होने में मदद की। यह हो जाने के बाद, मैं रजिस्ट्रेशन-फ्लो UI पर चला गया, शायद ऐप का सबसे जटिल हिस्सा, जिसमें लाइव-वैलिडेटेड फॉर्म के साथ तीन चरणों को लागू करने के लिए LiveData और Navigation का उन्नत उपयोग था (इसके अपने ब्लॉग पोस्ट के लायक, जल्द ही आ रहा है?!)। इसने मुझे इन कंपोनेंट्स में बहुत अधिक आत्मविश्वास दिलाया, और वहां से यह एक स्मूथ राइड थी। हमने नियोजित फीचर्स पूरे किए, कुछ गड़बड़ियां खोजीं, कुछ बग्स ठीक किए।
लॉन्च ?
प्रमुख फीचर्स लागू होने के साथ, हमने कुछ UI ब्रश-अप किए, कुछ अंतिम TODOs पूरे किए, और लॉन्च के लिए तैयार थे! एक फिनिशिंग टच के रूप में, मैंने कुछ ऐसा जोड़ा जिसे मैं पूरे समय से योजना बना रहा था:
हर कॉन्फिगरेशन चेंज पर एक अलग कलर थीम! यह उत्सव की थीम को पूरक करने के लिए किया गया था: "एशिया के रंग"
ऐप 11 फरवरी, 2019 को Play Store पर लाइव हुआ! ??
Bitotsav '19 - Google Play पर ऐप्स
Birla Institute of Technology, Mesra का 29वां वार्षिक सामाजिक-सांस्कृतिक उत्सव Bitotsav '19 आयोजित होने के लिए तैयार है...play.google.com
फिक्स और अपडेट्स
हमने घंटों के भीतर (केवल!) दो बग्स का सामना किया, जिन्हें हमने तुरंत ठीक किया। पहला DAO मेथड्स के suspend मार्क होने से संबंधित था, लेकिन मुझे अभी भी 100% यकीन नहीं है कि यह वास्तव में क्यों हो रहा था ?। दूसरा ओबफस्केशन के कारण सीरियलाइज़ेशन फेल्योर के कारण हुआ, और इसे @Keep एनोटेशन से आसानी से ठीक किया गया।
फिर मैंने अगले अपडेट पर काम करना शुरू किया, जिसमें मैंने फीड में लीडरबोर्ड और शेड्यूल में उत्सव के लिए नाइट इवेंट्स जोड़े, साथ ही कुछ अन्य बदलाव। एक तीसरा अपडेट कुछ और छोटे फीचर्स जोड़ते हुए आया।
उत्सव अच्छी तरह से चला, और ऐप का उपयोग 1000 से अधिक प्रतिभागियों द्वारा किया गया!
हमारे दोस्त Sushant Gupta द्वारा सर्वर में गलत DB एंट्री के कारण एक छोटी सी समस्या का सामना करना पड़ा, जिसने बाद में उसी पर एक नाटकीय ब्लॉग पोस्ट लिखी।
Bitotsav '19 वेबसाइट पर DDoS अटैक
यह एक तकनीकी लेख नहीं है। यह एक कहानी है जिसे मैं साझा करना चाहता हूं जो कई वेब और ऐप के लिए सबक हो सकती है...cs.sonudoo.com
उत्सव के बाद, हमने एक अंतिम अपडेट जारी किया, इवेंट डिटेल्स, फीड आदि को ऐप के हिस्से के रूप में JSON के रूप में संग्रहीत किया और गोपनीयता कारणों से आयोजकों के संपर्क नंबरों को संशोधित किया।
सार्वजनिक करना!
कोड को ओपन सोर्स करने का समय आ गया था! इस बार, हमने समझने योग्य कोड लिखने का ध्यान रखा था, और यह दुनिया के लिए तैयार था। मैंने एक स्लीक README तैयार किया, और रिपॉजिटरी के इतिहास से संपर्क नंबरों को हटाने के लिए, हमने अद्भुत BFG रिपो क्लीनर टूल का उपयोग किया।
Bitotsav '19 ऐप का कोड अब सार्वजनिक है, किसी के भी समीक्षा, संदर्भ, सीखने या उपयोग के लिए! इसे देखें और स्टार छोड़ना न भूलें ?
aksh1618/Bitotsav-19
Bitotsav '19 के लिए आधिकारिक ऐप। GitHub पर अकाउंट बनाकर aksh1618/Bitotsav-19 विकास में योगदान दें।github.com
चुनौतियां ?
विकास के दौरान हमें कुछ चुनौतियों का सामना करना पड़ा:
- समय की सीमाएं: मुख्य चुनौती जो हमने सामना की वह थी बहुत नई अवधारणाओं को सीखने और उनका उपयोग करके सैकड़ों लोगों द्वारा उपयोग किए जाने वाले ऐप को बनाने के लिए बहुत सीमित समय होना। इस समय की बाधा के कारण बहुत सारे लगातार घंटे लगाने पड़े, जिससे तनाव और थकान हुई, लेकिन हम डिलीवर करने में सफल रहे!
- Coroutines के साथ WorkManager: तकनीकी पक्ष पर, हमें WorkManager और Coroutines के साथ कुछ छोटी चुनौतियों का सामना करना पड़ा, लेकिन हम उन्हें दूर करने में सक्षम थे। आशा है कि विकास जारी रहने पर Android SDK में कोरूटीन के लिए बेहतर समर्थन मिलेगा ?।
- API 21: हमने पुराने वर्जन पर काम करने के लिए सब कुछ अनुकूलित करने से बचने के लिए न्यूनतम API 21 चुना, क्योंकि अधिकांश Android डिवाइस वैसे भी API 21 और उससे ऊपर पर हैं। लेकिन आश्चर्यजनक रूप से, कुछ चीजें API 21 पर काम करने से इनकार कर दिया, विशेष रूप से व्यू बैकग्राउंड। यह वास्तव में निराशाजनक था, काश हमने न्यूनतम API 22 सेट किया होता, खासकर जब हमें पता चला कि ऐप केवल दो API 21 डिवाइस पर इंस्टॉल किया गया था: जिन पर हमने टेस्ट किया था ?।
- डिवाइस की कमी: एक और चुनौती जिसका हमने सामना किया वह था टेस्ट करने के लिए पर्याप्त डिवाइस न होना। Pantheon '17 के दौरान, हमारे पास ~200 लोगों का एक हॉस्टल था, और इसलिए टेस्टिंग आसान थी। इस बार अधिकांश लोग इंटर्नशिप के लिए चले गए थे, इसलिए हमें कोड में आत्मविश्वास रखने पर भरोसा करना पड़ा!
- कोड रिव्यूअर नहीं: हमने जो बहुत कुछ इस्तेमाल किया वह हमारे लिए नया था, और हमने यह सुनिश्चित करने की पूरी कोशिश की कि हम सब कुछ सही कर रहे हैं। लेकिन एक रिव्यूअर होना बहुत मददगार होता। अभी भी, अगर आपको लगता है कि आप ऐप के कोड की त्वरित समीक्षा कर सकते हैं, तो हम बहुत आभारी होंगे!
- प्रलय: हमने उस 'DDoS' मुद्दे का भी सामना किया, ऊपर लिंक किए गए Sushant के ब्लॉग पोस्ट को पढ़ें, आपको पछतावा नहीं होगा!
सीख ✅
- Kotlin + Jetpack = ❤️ : मुख्य सीख यह थी कि Android विकास एक लंबा सफर तय कर चुका है और Kotlin और Jetpack के साथ, यह निश्चित रूप से बहुत अधिक मजेदार और पूरी तरह से आनंददायक है! गंभीरता से, कोडिंग प्रक्रिया के दौरान कई आनंददायक क्षण थे!
- कुछ भी असंभव नहीं: थोड़ा क्लिच लेकिन सच: अगर आपके पास कड़ी मेहनत करने की इच्छा है, तो आप कुछ भी कर सकते हैं, चाहे कितना भी मुश्किल हो। निश्चित रूप से तनावपूर्ण चरण होंगे, लेकिन आगे बढ़ते रहें। बस खुद पर विश्वास करें!
पछतावा ?
- कोई इंस्टेंट ऐप / ऐप बंडल नहीं: हमने इसे पूरी तरह से मिस कर दिया। इसके बारे में सोचा तक नहीं। अरे खैर, शायद अगली बार।
- कोई टेस्ट नहीं: मुझे पता है, यह एक बड़ी बात है! उचित टेस्ट होने से हमें बहुत मदद मिल सकती थी, लेकिन समय की बाधाओं के कारण, हमने 'बाद में' टेस्ट लिखने का फैसला किया, जो अभी तक नहीं आया ?।
TL;DR. ?
2019 में एक ऐप के साथ शुरुआत?
Kotlin और Coroutines का उपयोग करें
- Kotlin सीखें और विशेष रूप से इसका उपयोग करें!
- Android के साथ कोरूटीन का उपयोग करना सीखें।
AndroidX के साथ Jetpack कंपोनेंट्स का उपयोग करें
- सिंगल-एक्टिविटी आर्किटेक्चर के लिए नेविगेशन कंपोनेंट का उपयोग करना सीखें।
- UI के लिए लाइफसाइकिल कंपोनेंट्स और पर्सिस्टेंस के लिए Room का उपयोग करना सीखें।
- अपना भला करें और Data Binding का उपयोग करें!
- बैकग्राउंड प्रोसेसिंग के लिए WorkManager का उपयोग करना सीखें।
मटेरियल कंपोनेंट्स का उपयोग करें
- मटेरियल कंपोनेंट्स दिशानिर्देश
- मटेरियल कंपोनेंट्स Android डॉक्स
टेस्ट लिखें!
हम नहीं लिख सके लेकिन आपको निश्चित रूप से लिखने चाहिए! टेस्ट न छोड़ें।
सोर्स कोड देखें
.. उन ऐप्स के जो ये चीजें करते हैं: Sunflower ऐप, IO ऐप, Dev Summit ऐप या, निश्चित रूप से, Bitotsav '19 ऐप! (स्टार छोड़ना न भूलें ?)
अपडेट रहें
ब्लॉग और न्यूज़लेटर्स की सदस्यता लेकर अपडेट रहें! शुरुआत करने के लिए यहां कुछ हैं: Android Weekly, ProAndroidDev, AndroidPub, Kotlin Weekly। अभिभूत? Huyen Tue Dao की यह शानदार बात देखें:
पानी की तरह बनो: Android के साथ अपडेट रहना
यदि आप 360 AnDev की बातों का आनंद लेते हैं, तो कृपया Patreon के माध्यम से कॉन्फ्रेंस का समर्थन करें! मोबाइल में काम करने का एक स्थिरांक है...academy.realm.io
ठीक है, वहां हमारे पास है। यह Android विकास के लिए एक अच्छा समय है, तो अपने नए ऐप के साथ शुरुआत करें, और इसे करते समय मज़े करना न भूलें!
अगर आपने कुछ सीखा, तो कमेंट छोड़ें। रचनात्मक आलोचना का स्वागत है ?
Twitter ? , LinkedIn ? या GitHub ?? पर मिलें
अगली बार तक ??