Kriptofolio ऐप सीरीज - परिचय
ब्लॉग पोस्ट की इस श्रृंखला में आपका स्वागत है जहां मैं एक आधुनिक Android ऐप बनाऊंगा। मैं 2018-2019 में उपलब्ध सर्वोत्तम टूल्स और प्रथाओं का उपयोग करूंगा। मैं ऐसा इसलिए कर रहा हूं क्योंकि मैं Android दुनिया के सभी हॉटेस्ट विषयों को कवर करना चाहता हूं और उन्हें आपको सिखाकर उनमें ज्ञान प्राप्त करना चाहता हूं।
यदि आप इस श्रृंखला का अनुसरण करते हैं, तो आप सीखेंगे कि ऐप को स्क्रैच से कैसे विकसित किया जाए। इस श्रृंखला का प्रत्येक ब्लॉग पोस्ट कुछ विशिष्ट विकास विषय को कवर करेगा जिसके बारे में मैं बात करना चाहता हूं। मैं एक अच्छी गुणवत्ता वाला ऐप बनाने और विकास प्रक्रिया को समझाने के लिए अपनी पूरी कोशिश करूंगा। इस श्रृंखला का पहला ब्लॉग पोस्ट हम जो करने जा रहे हैं उसका एक प्रोजेक्ट रोडमैप है।
श्रृंखला सामग्री
- परिचय: 2018-2019 में आधुनिक Android ऐप बनाने का रोडमैप (आप यहां हैं)
- भाग 1: SOLID सिद्धांतों का परिचय
- भाग 2: अपना Android ऐप बनाना कैसे शुरू करें: मॉकअप, UI, और XML लेआउट बनाना
- भाग 3: वह सब आर्किटेक्चर के बारे में: विभिन्न आर्किटेक्चर पैटर्न की खोज और अपने ऐप में उनका उपयोग कैसे करें
- भाग 4: Dagger 2 के साथ अपने ऐप में डिपेंडेंसी इंजेक्शन कैसे लागू करें
- भाग 5: Retrofit, OkHttp, Gson, Glide और Coroutines का उपयोग करके RESTful वेब सेवाओं को कैसे संभालें
ऐप: "Kriptofolio" (पहले "My Crypto Coins") आइडिया
पहले उन सभी Android डेवलपमेंट ट्रेंड को प्रदर्शित करने की योजना के बारे में सोचना कठिन था, लेकिन अंत में, मुझे एक मिल गया जो मुझे पसंद आया। यह मेरे विशाल रुचि क्षेत्र - ब्लॉकचेन और क्रिप्टोकरेंसी से संबंधित है। मैंने एक ऐप बनाने का फैसला किया जिसमें आपका क्रिप्टोकरेंसी पोर्टफोलियो होगा और आपको पता चल जाएगा कि वे फिएट मनी में परिवर्तित होने पर कितने मूल्य के हैं।
उपयोगकर्ता के लिए महत्वपूर्ण बात यह है कि यह ऐप 100% विश्वास सुनिश्चित करने जा रहा है। इसके लिए किसी लॉगिन/रजिस्ट्रेशन प्रक्रिया की आवश्यकता नहीं होगी। यह सर्वर पर भेजकर उपयोगकर्ताओं का डेटा एकत्र नहीं करेगा। मुझे लगता है कि कोई भी अपने स्वामित्व वाले पैसे के बारे में ऑनलाइन जानकारी साझा करने में सहज महसूस नहीं करेगा।
क्रिप्टोकरेंसी निवेश के बारे में उपयोगकर्ताओं द्वारा प्रदान किया गया डेटा केवल एक स्थानीय डेटाबेस में संग्रहीत किया जाएगा जो Android डिवाइस के अंदर रखा जाता है। हालांकि, पोर्टफोलियो के मूल्य को फिएट मनी में परिवर्तित जानने के लिए, ऐप इंटरनेट का उपयोग करके नवीनतम रूपांतरण दरें प्राप्त करेगा।
तो जैसा कि आप देख सकते हैं प्रशिक्षण उद्देश्यों के लिए, यह ऐप आइडिया बहुत अच्छा है। यह आपको डेटा के साथ काम करने के लिए विभिन्न दृष्टिकोणों को आजमाने के लिए तकनीकी रूप से चुनौती देता है। यह आधुनिक ऐप्स बनाने के लिए जानने के लिए सबसे महत्वपूर्ण कौशल में से एक है। लोगों के लिए पैसे का विषय इतना संवेदनशील है। और भी अधिक विश्वास सुनिश्चित करने के लिए, मैं इस ब्लॉग पोस्ट श्रृंखला को बनाकर और प्रोजेक्ट कोड उपलब्ध कराकर इस ऐप को खुले तौर पर विकसित करूंगा ताकि हर कोई देख सके कि छिपाने के लिए कुछ भी नहीं है।
हम क्या उपयोग करने वाले हैं?
सबसे पहले, इस ऐप को बनाने के लिए, हमें वर्तमान क्षण में विभिन्न क्रिप्टोकरेंसी की कीमतों के बारे में जानने की आवश्यकता है। यह डेटा इंटरनेट से प्रदान किया जाएगा क्योंकि यह लगातार बदल रहा है।
Data API:
CoinMarketCap - क्रिप्टोकरेंसी बाजार का अवलोकन प्राप्त करने के लिए सबसे लोकप्रिय वेबसाइटों में से एक। यह वेबसाइट एक मुफ्त API प्रदान करती है जिसका कोई भी उपयोग कर सकता है और यह हमारे लिए डेटा सर्विस प्रोवाइडर के रूप में पूरी तरह से फिट बैठता है।
अगला, मैंने Android दुनिया में अपनी सबसे महत्वपूर्ण ट्रेंडिंग चीजों की एक सूची बनाई जो इस प्रोजेक्ट में फिट होती हैं और जिनका इसमें उपयोग किया जाना चाहिए।
प्रोग्रामिंग भाषा:
Kotlin - Android पर एक आधिकारिक भाषा। यह अभिव्यंजक, संक्षिप्त, और शक्तिशाली है। सबसे अच्छी बात यह है कि यह मौजूदा Android भाषाओं और रनटाइम के साथ इंटरऑपरेबल है।
इस नई भाषा की शुरूआत 2017 में Android के लिए सबसे हॉट विषयों में से एक थी। हमारे ऐप को इसमें लिखा जाना चाहिए। मैं अपने पिछले ब्लॉग पोस्ट "Let's learn Kotlin by building Android calculator app" में Kotlin और इसकी विशेषताओं के बारे में भी बात करता हूं।
इंटीग्रेटेड डेवलपमेंट एनवायरनमेंट (IDE):
Android Studio - Android के लिए आधिकारिक IDE। यह हर प्रकार के Android डिवाइस पर ऐप्स बनाने के लिए सबसे तेज़ टूल प्रदान करता है। नेटिव ऐप्स विकसित करने के लिए कोई बेहतर विकल्प नहीं हैं। यह बिना किसी सवाल के IDE के लिए हमारी मुख्य पसंद है।
प्रोजेक्ट बिल्ड मैनेजमेंट सिस्टम:
Gradle - Groovy और Kotlin पर आधारित एक उन्नत सामान्य उद्देश्य बिल्ड मैनेजमेंट सिस्टम। यह निर्भरता या अन्य लाइब्रेरी के स्वचालित डाउनलोड और कॉन्फिगरेशन का समर्थन करता है। यह Google द्वारा अनुशंसित बिल्ड सिस्टम है। यह Android Studio के अंदर अच्छी तरह से इंटीग्रेटेड है इसलिए हम इसका उपयोग करेंगे।
आर्किटेक्चर:
Android Architecture Components - लाइब्रेरी का एक संग्रह जो आपको मजबूत, टेस्टेबल, और रखरखाव योग्य ऐप्स डिजाइन करने में मदद करता है।
Model–View–ViewModel (MVVM) - एक आर्किटेक्चरल पैटर्न। अवधारणा डेटा प्रेजेंटेशन लॉजिक को बिजनेस लॉजिक से अलग करके इसे एक विशेष क्लास में ले जाने के लिए है ताकि एक स्पष्ट अंतर हो। Android टीम इस पैटर्न को डिफ़ॉल्ट विकल्प के रूप में आगे बढ़ा रही है। साथ ही, यह MVC और लोकप्रिय MVP पैटर्न का विकल्प है।
मैं इस श्रृंखला में इस पैटर्न चयन, अन्य आर्किटेक्चर विकल्पों और सामान्य रूप से अपने कोड को अच्छी तरह से व्यवस्थित करने के बारे में अलग से बात करूंगा। यदि हम आसानी से रखरखाव योग्य ठोस प्रोजेक्ट बनाना चाहते हैं तो यह आवश्यक है।
Coroutines - एक कंकरेंसी डिजाइन पैटर्न जिसका उपयोग आप Android पर कोड को सरल बनाने के लिए कर सकते हैं जो एसिंक्रोनस रूप से निष्पादित होता है।
डेटा पर्सिस्टेंस:
SQLite Database - यह एक ओपन सोर्स SQL डेटाबेस है जो डेटा को डिवाइस पर एक टेक्स्ट फाइल में स्थायी रूप से स्टोर करता है। Android बिल्ट-इन SQLite डेटाबेस कार्यान्वयन के साथ आता है। SQLite सभी रिलेशनल डेटाबेस सुविधाओं का समर्थन करता है।
Shared Preferences - Android SDK से एप्लिकेशन प्राथमिकताओं को स्टोर और रिट्रीव करने के लिए एक API। SharedPreferences केवल डेटा मानों के सेट हैं जो स्थायी रूप से संग्रहीत हैं। यह आपको की-वैल्यू जोड़े के रूप में डेटा को सहेजने और पुनः प्राप्त करने की अनुमति देता है।
लाइब्रेरी:
Android Jetpack घटक:
AppCompat - यह सपोर्ट लाइब्रेरी का एक सेट है जिसका उपयोग नए संस्करणों के साथ विकसित ऐप्स को पुराने संस्करणों के साथ काम करने के लिए किया जा सकता है।
Android KTX - Android ऐप डेवलपमेंट के लिए Kotlin एक्सटेंशन का एक सेट। Android KTX का लक्ष्य भाषा की विशेषताओं जैसे एक्सटेंशन फंक्शन/प्रॉपर्टीज, लैम्ब्डा, नामित पैरामीटर, और पैरामीटर डिफॉल्ट का लाभ उठाकर Kotlin के साथ Android डेवलपमेंट को अधिक संक्षिप्त, सुखद, और इडियोमैटिक बनाना है।
Data Binding - एक सपोर्ट लाइब्रेरी जो आपको अपने लेआउट में UI घटकों को अपने ऐप में डेटा स्रोतों से बांधने की अनुमति देती है प्रोग्रामेटिक रूप से करने के बजाय डिक्लेरेटिव फॉर्मेट का उपयोग करके।
Lifecycles - आपकी एक्टिविटी और फ्रैगमेंट लाइफसाइकिल को प्रबंधित करने के लिए।
LiveData - एक ऑब्जर्वेबल डेटा होल्डर क्लास जिसे सामान्य Android Lifecycle चुनौतियों को हल करने और ऐप्स को अधिक रखरखाव योग्य और टेस्टेबल बनाने के लिए डिज़ाइन किया गया है।
Room - यह SQLite पर एक अमूर्त परत प्रदान करता है ताकि SQLite की पूरी शक्ति का उपयोग करते हुए आसान डेटाबेस एक्सेस की अनुमति मिल सके।
ViewModel - लाइफसाइकिल-सचेत तरीके से UI-संबंधित डेटा को स्टोर और प्रबंधित करने के लिए डिज़ाइन किया गया। ViewModel क्लास डेटा को कॉन्फिगरेशन परिवर्तनों जैसे स्क्रीन रोटेशन से बचने की अनुमति देती है।
अन्य:
ConstraintLayout - लचीले और कुशल लेआउट बनाने के लिए। लेआउट एडिटर लेआउट के भीतर UI तत्व की स्थिति निर्धारित करने के लिए कंस्ट्रेंट्स का उपयोग करता है। एक कंस्ट्रेंट किसी अन्य व्यू, पैरेंट लेआउट, या एक अदृश्य दिशानिर्देश से कनेक्शन या संरेखण का प्रतिनिधित्व करता है।
CardView - तत्व जो जानकारी को कार्ड तरीके से ड्रॉप शैडो (एलिवेशन) और कॉर्नर रेडियस के साथ दर्शाता है जो प्लेटफॉर्म पर सुसंगत दिखता है।
RecyclerView - ListView का एक लचीला और कुशल संस्करण। यह व्यू के बड़े डेटा सेट को प्रस्तुत करने के लिए एक कंटेनर है जिसे पुनर्नवीनीकरण किया जा सकता है और बहुत कुशलता से स्क्रॉल किया जा सकता है।
थर्ड-पार्टी:
Dagger 2 - यह Java और Android दोनों के लिए एक पूरी तरह से स्टैटिक, कंपाइल-टाइम डिपेंडेंसी इंजेक्शन फ्रेमवर्क है।
Retrofit 2 - Android और Java के लिए एक ओपन सोर्स टाइप-सेफ HTTP क्लाइंट। Retrofit के साथ, हम एक सरल, अभिव्यंजक इंटरफेस के माध्यम से HTTP कनेक्शन को आसानी से बना सकते हैं जैसे API डॉक्यूमेंट।
OkHttp - एक ओपन सोर्स आधुनिक, तेज और कुशल HTTP क्लाइंट जो HTTP/2 और SPDY का समर्थन करता है।
Gson - Java ऑब्जेक्ट्स को JSON से और JSON में सीरियलाइज़ और डिसीरियलाइज़ करने के लिए एक ओपन सोर्स Java लाइब्रेरी।
Glide - Android के लिए एक तेज और कुशल इमेज लोडिंग लाइब्रेरी जो स्मूथ स्क्रॉलिंग पर केंद्रित है। Glide एक आसान उपयोग API, एक प्रदर्शनकारी और एक्सटेंसिबल रिसोर्स डिकोडिंग पाइपलाइन और स्वचालित रिसोर्स पूलिंग प्रदान करता है।
नया प्रोजेक्ट कॉन्फिगर करें
हम इस प्रोजेक्ट को स्क्रैच से बनाएंगे। तो मैं Android Studio लॉन्च करूंगा, एक नया प्रोजेक्ट बनाऊंगा, इसका नाम "My Crypto Coins" रखूंगा और "Basic Activity" चुनूंगा। इस बिंदु पर, चर्चा करने के लिए कुछ खास नहीं है। हमारा लक्ष्य एक नई, साफ शुरुआत करना और अतिरिक्त सुविधाओं (जैसे इंस्टेंट ऐप सपोर्ट) को जोड़कर हमारे दिमाग में किसी भी जटिलता से बचना है। हम विकास प्रक्रिया के दौरान बाद में कुछ भी जोड़ सकते हैं यदि हम चाहते हैं।
शुरुआत के लिए Kotlin भाषा समर्थन शामिल करें और API 23: Android 6.0 (Marshmallow) को टार्गेट करें।
मैं निचले या उच्च API को टार्गेट क्यों नहीं कर रहा हूँ? आइए इसका सामना करते हैं। कुछ पुराने डिवाइस के लिए सपोर्ट काटना और विकास के दौरान किसी भी कम्पैटिबिलिटी मुद्दों के बारे में चिंता न करना अच्छा है। साथ ही, मैं एक पुराने Nexus 7 (2013) टैबलेट का गर्व मालिक हूं, जो Android 6.0.1 चला रहा है। मुझे उम्मीद है कि इस पर अपने ऐप को लाइव टेस्ट करूंगा। ? इसलिए इस व्यक्तिगत प्रोजेक्ट के लिए इसने मेरी न्यूनतम SDK पसंद को प्रभावित किया।
साथ ही जैसा कि आपने देखा, मैं IDE को बेसिक एक्टिविटी के साथ स्वचालित रूप से जनरेटेड बेसिक एक्टिविटी जोड़ने के लिए कहूंगा जिसमें फ्रैगमेंट सपोर्ट और फ्लोटिंग एक्शन बटन हो। मुझे लगता है कि वह सब हमारे प्रोजेक्ट के लिए उपयोगी हो सकता है।
GitHub - संस्करण नियंत्रण के लिए सबसे लोकप्रिय वेब-आधारित होस्टिंग सेवा में से एक। यह एक ओपन सोर्स प्रोजेक्ट है, और निश्चित रूप से, मैं इसका उपयोग करूंगा।
इस श्रृंखला के सभी ब्लॉग पोस्ट के अपने कमिट अलग-अलग ब्रांच के रूप में होंगे और नवीनतम सोर्स कोड संस्करण के लिए मास्टर ब्रांच। यहां आपके लिए रिपॉजिटरी का लिंक है।
GitHub पर सोर्स कोड देखें
शुरुआत के लिए बस इतना ही। यदि आपके कोई प्रश्न, सुझाव, टिप्पणी हैं, तो बेझिझक कमेंट्स में करें। और अब आइए एक साथ सीखें! भाग 2 आगे है… ?
Ačiū! पढ़ने के लिए धन्यवाद! मैंने मूल रूप से इस पोस्ट को अपने ब्लॉग www.baruckis.com पर 12 फरवरी, 2018 को प्रकाशित किया था।