नूगट और एबफोर्स सबमॉड्यूल के लिए एक्सपोज़ड फ्रेमवर्क की व्याख्या

इस लेख में हम नूगाट के लिए rovo89 के आगामी एक्सपोज़ड रिलीज़ और नूगाट के लिए उपलब्ध वर्तमान कार्यान्वयन के बीच अंतर का पता लगाते हैं।

एक्सपोज़ड फ्रेमवर्क आपके एंड्रॉइड डिवाइस को कस्टमाइज़ करने का एक प्रमुख तरीका था - और अभी भी है, जो लगभग सभी डिवाइसों के साथ संगत है, जिससे आप आसानी से किसी भी विवरण को बदलने के लिए मॉड्यूल इंस्टॉल कर सकते हैं।

क्या आप बिना फ्लैश किए कस्टम ROM द्वारा प्रदान की जाने वाली सभी सुविधाएँ प्राप्त करना चाहते हैं?ग्रेविटीबॉक्स याएक्सटचविज़ वह करेगा। क्या आप प्रति-ऐप के आधार पर कुछ सेटिंग्स में बदलाव करना चाहते हैं, जैसे किसी विशिष्ट ऐप की डीपीआई बदलना?एप्लिकेशन सेटिंग क्या आपने कवर किया है? काश किसी एप्लिकेशन के डेवलपर्स एक विशिष्ट सुविधा जोड़ने के बारे में सोचते, जैसे Google आपको दे रहा हैHangouts को वैयक्तिकृत करें या फेसबुक आपको इसकी अनुमति दे रहा हैअपनी पसंद की इंस्टाग्राम पोस्ट डाउनलोड करें? खैर, आपको इसकी आवश्यकता नहीं है क्योंकि एक्सपोज़ड डेवलपर्स को लगभग किसी भी चीज़ को संशोधित करने की शक्ति देता है चाहते हैं, चाहे वह एक सिस्टम-व्यापी सुविधा हो जिसके लिए एक कस्टम ROM की आवश्यकता होगी, या किसी विशिष्ट के लिए एक बदलाव की आवश्यकता होगी आवेदन पत्र।

एक्सपोज़ड फ्रेमवर्क डेवलपर्स के लिए एक प्रमुख लाभ के साथ आता है, जो कि विकास में आसानी है (रोम ट्विक्स के लिए एओएसपी को संकलित करने या स्माली कोड को संपादित करने की तुलना में)। यह उपयोगकर्ताओं के लिए एक बड़ा लाभ भी लाता है: सुविधा, क्योंकि यह अब उन्हें उस ROM को ढूंढने और फ्लैश करने के लिए मजबूर नहीं करता है जो उन्हें हर वह सुविधा प्रदान करती है जिसकी उन्हें तलाश है (इसके बजाय, वे स्थिरता के अपने लक्ष्य संतुलन के शीर्ष पर स्वतंत्र मॉड्यूल को मिश्रित और मिलान कर सकते हैं)। प्रदर्शन। यह भी बनाता है अनुप्रयोगों में बदलाव बहुत आसान है क्योंकि अलग-अलग हस्ताक्षरों से निपटने की कोई आवश्यकता नहीं है, जिसके परिणामस्वरूप उपयोगकर्ताओं को मूल को अनइंस्टॉल करना होगा संस्करण या कुछ हुप्स के माध्यम से कूदें जब एप्लिकेशन अपने हस्ताक्षर की जांच करता है (कुछ संशोधित YouTube क्लाइंट सौदा करते हैं, के लिए उदाहरण)।

एकमात्र समस्या? इसकी प्रकृति और खाली समय की मात्रा के कारण एक्सपोज़ड के डेवलपर (हमारे अपने वरिष्ठ मान्यता प्राप्त डेवलपर,रोवो89) है, यह अक्सर एंड्रॉइड रिलीज़ से पीछे रहता है।लॉलीपॉप को सपोर्ट करने के लिए अपडेट होने में लगभग चार महीने लग गए, और नौगट तक आने में लगभग एक वर्ष लग रहा है। यह उतना बुरा नहीं है जितना अगर आप सोचें तो यह लग सकता है वास्तव में Nougat पर कितने Android उपयोगकर्ता हैं (लगभग 13.5%हालाँकि, ध्यान रखें कि एंड्रॉइड उत्साही, एक्सपोज़ड के लक्षित दर्शक, नूगट पर होने की भी अधिक संभावना है)। हालाँकि, अपने पसंदीदा एक्सपोज़ड मॉड्यूल का उपयोग न कर पाना और एक ही समय में नवीनतम और महानतम एंड्रॉइड संस्करण न होना अभी भी काफी कष्टप्रद हो सकता है।

एक्सपोज़ड फ्रेमवर्क का स्रोत कोड उपलब्ध होने के साथ (कम से कम स्थिर, जारी संस्करणों के लिए), डेवलपरमजबूर करना उसने अपने हाथ गंदे करने और यह देखने का निर्णय लिया कि क्या वह rovo89 के कुछ संशोधनों को नूगाट में पोर्ट कर सकता है। एक अलग और सरल दृष्टिकोण का चयन करते हुए, एबफोर्स ने अनिवार्य रूप से एक्सपोज़ड के उस हिस्से को अनुकूलित किया जो वास्तव में था एक बार इंस्टॉल हो जाने पर जादू हो जाता है, और आपकी स्वयं की ROM को संकलित करते समय इसे शामिल करना संभव हो जाता है (उसके बाद, अन्य समाधान सामने आए). यह दृष्टिकोण यकीनन बहुत अलग है क्योंकि यह एक्सपोज़ड के मुख्य फायदों में से एक को नजरअंदाज कर देता है, जो हर किसी के लिए आसानी से उपलब्ध है। हालाँकि, सभी प्रगति का स्वागत है और एक कार्य को कई प्रमुखों द्वारा निपटाना फायदेमंद हो सकता है और नई अंतर्दृष्टि प्रदान कर सकता है। मुख्य मुद्दा, जैसा कि हम देखते हैं, इस विकास के बारे में गलत सूचना है (कुछ अन्य "डेवलपर्स" और कुछ ब्लॉगों द्वारा फैलाया गया), साथ ही समुदाय द्वारा कुछ प्रतिक्रियाएं भी हैं। उम्मीद है, यह लेख पूरी तस्वीर स्पष्ट कर देगा।


सबसे पहले, आधिकारिक एक्सपोज़ड फ्रेमवर्क के साथ-साथ एबफोर्स के संस्करण में जो काम हुआ - और अभी भी चल रहा है - उसे समझने के लिए, हमें यह देखने की ज़रूरत है कि फ्रेमवर्क कैसे काम करता है। जबकि ढाँचा ही है परियोजना का केवल एक भाग, हमारा मतलब आमतौर पर फ्रेमवर्क और इंस्टॉलर दोनों से है क्योंकि यूनिवर्सल इंस्टॉलर के बिना फ्रेमवर्क अपने कई फायदे खो देता है, जिस पर बहुत काम भी करना पड़ता है।

एक्सपोज़ड की शक्ति एक सरल अवधारणा से आती है: किसी भी विधि को "हुक" किया जा सकता है (विधि छोटी होती है)। भाग जो किसी भी प्रोग्राम को बनाते हैं) एक्सपोज़ड मॉड्यूल के कोड को पहले, बाद में या इसके बजाय निष्पादित करने के लिए यह। आइए एक सरल उदाहरण लें: मान लें कि जब आप मेनू बटन पर क्लिक करते हैं तो इंस्टाग्राम "showMenuOptions" नामक एक विधि का उपयोग करता है, और वह विधि आपको "रिपोर्ट" और "शेयर" बटन दिखाती है। उदाहरण के लिए, एक्सपोज़ड मॉड्यूल बनाकर, आप छवि को साझा करने के बजाय डाउनलोड करने के लिए एक अतिरिक्त बटन जोड़ने के लिए उस विधि को संशोधित कर सकते हैं। संशोधन साधारण बदलावों से लेकर हो सकते हैं (उदा. प्ले स्टोर चेंजलॉग) प्रमुख ओवरहाल के लिए (जैसे ग्रेविटीबॉक्स, जिसका लक्ष्य एक कस्टम ROM में होने वाली सभी सुविधाएँ प्रदान करना है)!

यह एक्सपोज़ड को शक्तिशाली बनाता है, लेकिन यह समीकरण का केवल एक हिस्सा है। अन्य भागों में बहुमुखी प्रतिभा है - या वास्तव में किसी भी डिवाइस पर एक्सपोज़ड का उपयोग करने में सक्षम होना (समर्थित एंड्रॉइड संस्करण के साथ), और उपयोग में आसानी। उपयोगकर्ताओं को बस इंस्टॉलर को पकड़ना है, जो अपना जादू करता है और Xposed को एकीकृत करने के लिए उनके सिस्टम को गतिशील रूप से पैच करता है। किसी मॉड्यूल को लागू करने के लिए, आपको बस इसे इंस्टॉल करना होगा, इसे सक्षम करना होगा और रीबूट करना होगा। किसी झंझट की आवश्यकता नहीं है, किसी कस्टम ROM को फ्लैश करने की आवश्यकता नहीं है (विशेषकर जब कस्टम ROM हमेशा एक व्यवहार्य विकल्प नहीं होते हैं), एक अलग हस्ताक्षर के साथ हस्ताक्षरित किसी अन्य को स्थापित करने के लिए एपीके को अनइंस्टॉल करने की आवश्यकता नहीं है। आपको बस रूट की आवश्यकता है (आपके पास निश्चित रूप से एक कस्टम ROM हो सकता है और यह कई बार समझ में आता है; लेकिन जबकि Xposed एक कस्टम ROM द्वारा प्रदान की जा सकने वाली अधिकांश कार्यक्षमता प्रदान कर सकता है, यह उससे भी आगे जाता है)।

हालाँकि, इस सरलता के पीछे बहुत सारा काम है:

  1. मॉड्यूल डेवलपर्स के लिए, प्रदान की गई एपीआई स्थिर होनी चाहिए और काम करने की गारंटी होनी चाहिए। एक्सपोज़ड फ्रेमवर्क कुछ ROM और/या हुक संयोजनों (असाधारण मामलों को छोड़कर) के साथ यादृच्छिक रूप से विफल नहीं हो सकता है। दूसरे शब्दों में, यदि किसी उपयोगकर्ता को कोई समस्या हो रही है, तो वह समस्या या तो उपयोगकर्ता की गलती होनी चाहिए (नहीं तो)। किसी चीज़ को सही तरीके से इंस्टॉल/सक्षम करना) या मॉड्यूल डेवलपर की गलती (इसमें बग होना)। मापांक)। लेकिन यह लगभग निश्चित होना चाहिए कि फ्रेमवर्क स्वयं इच्छानुसार काम कर रहा है, और त्रुटियों का स्रोत नहीं है जो उपयोगकर्ताओं को निराश और डेवलपर्स को भ्रमित कर देगा।
  2. उपयोगकर्ताओं के लिए, फ्रेमवर्क को उनके डिवाइस और ROM पर इंस्टॉल करना आसान होना चाहिए, इससे कोई फर्क नहीं पड़ता कि उनके पास टचविज़ का नवीनतम संस्करण चलाने वाला सैमसंग है या लाइनेजओएस स्थापित नेक्सस है। एक्सपोज़ड इंस्टॉलर पर्दे के पीछे से यह सब संभालता है। विभिन्न उपकरणों और ROM संयोजनों पर इंस्टॉलर और फ्रेमवर्क का परीक्षण करने के लिए इसमें बहुत काम करना होगा। त्रुटियां अक्सर ओईएम द्वारा अलग-अलग कार्यान्वयन के कारण पाई जाती हैं, और सभी उपयोगकर्ताओं के लिए विश्वसनीयता सुनिश्चित करने के लिए इन्हें ठीक किया जाना चाहिए।
  3. प्रमुख एंड्रॉइड संशोधन कभी-कभी बड़े बदलाव ला सकते हैं, जिसके लिए उन परिवर्तनों को अनुकूलित करने के लिए फ्रेमवर्क के आर्किटेक्चर के कुछ हिस्सों पर पुनर्विचार करने की आवश्यकता होती है। कभी-कभी, नए संस्करणों के साथ अतिरिक्त अवसर भी सामने आते हैं, जिससे बेहतर उत्पाद बनाने के लिए कुछ अतिरिक्त समय की आवश्यकता होती है। जब एआरटी पहली बार पेश किया गया था, उदाहरण के लिए, एक्सपोज़ड ने कुछ अनुकूलन अक्षम कर दिए थे ताकि हुकिंग सही ढंग से काम कर सके। नौगाट के मामले में,जस्ट-इन-टाइम (JIT) कंपाइलर का अवसर लाता हैउन अनुकूलनों को रखें.

उपरोक्त अधिकांश कार्य छोटे-छोटे विवरणों में जाता है, जहाँ अधिकांश ढाँचा इच्छित उद्देश्य के अनुसार कार्य कर रहा है विसंगतियां और मामूली समस्याएं इसे उपयोगकर्ताओं के लिए उपयोग करने के लिए एक जुआ और मॉड्यूल के लिए समर्थन और विकास दुःस्वप्न बना देंगी डेवलपर्स. हालाँकि, जारी उत्पाद का लक्ष्य सभी के लिए और बिना किसी आश्चर्य के प्रयोग करने योग्य होना है। बेशक, कुछ अपवाद हैं, क्योंकि कुछ ओईएम के बदलावों को अनुकूलित करने के लिए अधिक प्रयास की आवश्यकता होती है, लेकिन वे मामूली हैं और अधिकांश उपयोगकर्ताओं (और डेवलपर्स) को एक स्थिर और विश्वसनीय एक्सपोज़ड का आनंद मिलता है अनुभव। किसी भी सामने आए अपवाद को दस्तावेज़ीकृत किया जाता हैस्पष्ट अस्वीकरण ताकि किसी को आश्चर्य न हो.

उपरोक्त को ध्यान में रखते हुए, Xposed के लिए rovo89 का दृष्टिकोण एक स्थिर समाधान होना है जो उपयोगकर्ताओं और डेवलपर्स के लिए एक विश्वसनीय और उपयोग में आसान अनुबंध प्रदान करता है। उनका दर्शन, हालांकि आप इससे असहमत हो सकते हैं, सरल और समझने योग्य है: एक उत्पाद होना चाहिए इसे तब जारी किया जाता है जब यह इच्छित उपयोग के लिए तैयार हो, क्योंकि इसे पहले जारी करने से अधिक परेशानी होती है फ़ायदे।


नूगट के लिए एबफोर्स का एक्सपोज़ड एआरटी सबमॉड्यूल

हम एबफोर्स के काम को "पोर्ट" या "अनौपचारिक एक्सपोज़ड" कहने में अनिच्छुक हैं क्योंकि यह गलत और भ्रामक है। जैसा कि हमने देखा, एक्सपोज़ड के दो प्रमुख घटक हैं:

  1. एक्सपोज़ड फ्रेमवर्क का मूल ही, जो हुकिंग विधियों के जादू को संभालता है।
  2. एक्सपोज़ड इंस्टॉलर, जो यह सुनिश्चित करता है कि फ्रेमवर्क को सभी डिवाइसों पर सही ढंग से इंस्टॉल करना आसान है।

एबफोर्स ने पहले भाग (केवल एक्सपोज़ड फ्रेमवर्क) पर रोवो89 के मार्शमैलो कोड को नूगाट में पोर्ट किया था, इस तरह से कि कस्टम रोम को संकलित करते समय परिवर्तनों को बेक करने की आवश्यकता होगी। इसके अलावा, फ्रेमवर्क के कई छोटे (लेकिन महत्वपूर्ण) हिस्से पूरी तरह से नूगाट के अनुकूल नहीं हैं। इस प्रकार, व्यवहार असंगत हो सकता है और जबकि यह अधिकतर काम करता है (हालाँकि नहींके लिएसब लोग), यह विश्वसनीय नहीं है. मॉड्यूल डेवलपर्स और उपयोगकर्ताओं के लिए, अपूर्ण और असंगत कार्यान्वयन पर भरोसा करना उचित होगा इसमें शामिल सभी पक्षों के लिए एक बुरा अनुभव प्रदान करें, साथ कुछ मॉड्यूल बिल्कुल काम नहीं कर रहे हैं या डिवाइस को बूट नहीं करने का कारण बन रहे हैं. जबकि कई उपयोगकर्ता इससे सहमत हो सकते हैं कुछ नहीं के बजाय कुछ, डेवलपर्स का दृष्टिकोण अभी भी पूरी तरह से समझ में आता है (खासकर यदि आप ध्यान रखें कि अस्वीकरण फर्जी समर्थन प्रश्नों और रोना-धोना बंद नहीं करते हैं)।

(उपरोक्त दो प्रमुख बिंदुओं के अलावा, हम नूगट में पेश किए गए परिवर्तनों का लाभ उठाने के लिए अंतिम, आधिकारिक एक्सपोज़ड ढांचे में और बदलावों की भी उम्मीद करेंगे।)

यह ध्यान दिया जाना चाहिए कि एबफोर्स ने एक उत्कृष्ट काम किया जब अधिकांश लोग केवल बात करने से संतुष्ट थे, लेकिन उनका काम पूर्ण एक्सपोज़ड अनुभव से बहुत दूर है और कोई भी डेवलपर या ब्लॉग अन्यथा दावा नहीं कर रहा है (और निश्चित रूप से इससे इनकार नहीं करता है); फिर, हमारे पास उन सभी वास्तविक डेवलपर्स के प्रति सम्मान के अलावा कुछ भी नहीं है जो इसमें वास्तविक काम और प्रयास कर रहे हैं)। वास्तव में, जैसा कि हम थोड़ी देर में देखेंगे, समुदाय की कुछ प्रतिक्रियाएँ (चाहे वे उपयोगकर्ता हों या "डेवलपर्स") विकास की इस श्रृंखला में एकमात्र ख़राब हिस्सा हैं।


आइए पीछा छोड़ें और सीधे मुद्दे पर आएं: किसी भी समुदाय में बुरे तत्व और पहलू होते हैं। एंड्रॉइड के प्रति उत्साही लोगों के रूप में एक बड़े समुदाय के साथ, बुरे तत्व एक बड़े हिस्से की तरह लग सकते हैं जब वे एक छोटा सा हिस्सा होते हैं (बड़े पैमाने पर, लेकिन सापेक्ष रूप से अभी भी छोटे होते हैं)। हालाँकि, इसे बिना बढ़ा-चढ़ाकर पेश किए, नूगट के लिए एक्सपोज़ड के विकास के प्रति समुदाय की अधिकांश प्रतिक्रिया बेहद बचकानी, अविवेकपूर्ण या गैर-जिम्मेदाराना रही है।

पहला प्रमुख मुद्दा "एक्सपोज़ड की मौत" के बारे में कई लोगों द्वारा दिखाया गया कृपालु रवैया है क्योंकि नूगाट को रिलीज़ होने में बहुत समय लग रहा है। यह rovo89 के बावजूद है अपडेटऔरआश्वासनों, और जब एआरटी का प्रारंभिक संस्करण पेश किया गया था तब लॉलीपॉप के साथ लगभग वैसा ही परिदृश्य घटित हो रहा था। एक्सपोज़ड का उपयोग बंद करना ठीक है, लेकिन यह किसी की क्षमता का अपमान करना या अलग दर्शन रखने के लिए दूसरों पर हमला करना या यह सुनिश्चित नहीं करना है कि आपकी चमकती ज़रूरतें तुरंत पूरी न हों। यह पूरी तरह से मुफ़्त प्रोजेक्ट के लिए और भी अधिक सच है, जहां डेवलपर ने अपनी विकास पद्धति और इसके पीछे के कारणों को व्यक्त किया है।

समुदाय की प्रतिक्रिया के साथ एक और मुद्दा एबफोर्स के काम की प्रकृति को गलत समझना है, कई लोग इसे नए एक्सपोज़ड के रूप में देखते हैं या इसे नूगट के लिए एक बंदरगाह के रूप में विज्ञापित करते हैं। इसके साथ एक बड़ी समस्या यह रही है कि "डेवलपर्स" कमियों को समझे बिना (या उनकी परवाह किए बिना) फ्लैश करने योग्य संस्करण पेश करने में जल्दबाजी कर रहे हैं, क्योंकि कोई अस्वीकरण नहीं था। कुछ धागों में बिल्कुल भी पेशकश की गई, कुछ तो यहां तक ​​कि इसका श्रेय एबफोर्स को दिया गया न कि रोवो89 को (जो एक्सपोज़ड पर काम के विशाल बहुमत के पीछे है) और अन्य योगदानकर्ता

अंतिम बिंदु के रूप में, हमें लगता है कि हमें rovo89 के विकास दर्शन को फिर से सामने लाना चाहिए। कई मुखर उपयोगकर्ताओं का दावा है कि नवीनतम परिवर्तनों का ओपन-सोर्स होना फायदेमंद होगा। हालाँकि यह सैद्धांतिक रूप से अच्छा लगता है, लेकिन यह हैव्यवहार में उतना आसान नहीं है विशेषकर यदि हम rovo89 के स्पष्टीकरण पर विचार करें:

[...] मेरा मानना ​​है कि केवल वर्तमान स्थिति को सामने लाने से परियोजना को मदद नहीं मिलेगी। हम शायद कोड संकलित करने वाले लोगों द्वारा "कुछ" रिलीज़ को वास्तव में तेजी से देखेंगे, देखें कि ऐसा प्रतीत होता है ठीक से काम कर रहे हैं और इसे "उनके पोर्ट" के रूप में प्रकाशित कर रहे हैं, उन मुद्दों और चीजों के बावजूद जिनके बारे में उन्हें जानकारी नहीं होगी का। तो मुझे स्वार्थी कहिए, लेकिन मैं ऐसी आधी-अधूरी रिलीज नहीं देखना चाहूंगा।[स्रोत]

जो वास्तव में कई "डेवलपर्स" के आवेदन के साथ वर्तमान स्थिति की काफी अच्छी भविष्यवाणी साबित हुई है एबफोर्स के बदलाव और मांग करते समय न्यूनतम या बिना चेतावनियों, अपूर्ण क्रेडिट के साथ फ्लैश करने योग्य ज़िप की पेशकश दान.


हमें उम्मीद है कि इन स्पष्टीकरणों से आपके कुछ संदेह दूर हो गए होंगे और आपकी संभावित गलतफहमियों का समाधान हो गया होगा। एक्सपोज़ड एक अद्भुत प्रोजेक्ट रहा है जो हमारे उत्साही और फ्लैशहॉलिक समुदाय के एक बड़े हिस्से तक पहुंच गया है, और नूगट के लिए एक्सपोज़ड अवसरों से भरा एक और विशाल मील का पत्थर होना चाहिए। ग्रेविटीबॉक्स जैसे मॉड्यूल के साथ पहले से ही Nougat समर्थन की पेशकश करते हुए, rovo89 की तैयार परियोजना कई विकल्पों पर वापस आ जाएगी।


क्या आप अपने नूगट ROM पर एक्सपोज़ड के लिए उत्साहित हैं? हमें टिप्पणियों में बताएं!