एंड्रॉइड नौगट के लिए आधिकारिक एक्सपोज़ड फ्रेमवर्क यहां है

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

जैसे-जैसे एंड्रॉइड इकोसिस्टम पिछले कुछ वर्षों में परिपक्व हुआ है, कम और कम उपयोगकर्ताओं को ऐसे कारण मिलते हैं कि उन्हें अपने डिवाइस को रूट क्यों करना चाहिए। उपयोगकर्ताओं में स्टॉक फ़र्मवेयर पर बने रहने का रुझान बढ़ रहा है, क्योंकि या तो उन्हें अनुभव संतोषजनक लगता है या वे खेलना नहीं चाहते हैं। Google के SafetyNet API के साथ चूहे-बिल्ली का खेल. लेकिन अगर आपने 2016 की शुरुआत में किसी उपयोगकर्ता से पूछा कि उन्होंने अपने फोन को रूट क्यों किया, तो शायद नंबर एक कारण जो दिया गया था वह यह था कि वे ऐसा कर सकें। एक्सपोज़ड फ्रेमवर्क स्थापित करें. काफ़ी हद तक Android 7.0 Nougat को एक वर्ष से अधिक समय हो गया है पहले जारी किया गया था, लेकिन लंबा इंतजार आखिरकार खत्म हुआ: एंड्रॉइड नौगट के लिए आधिकारिक एक्सपोज़ड फ्रेमवर्क आखिरकार उपलब्ध है।

पिछले वर्ष भर में, XDA वरिष्ठ मान्यता प्राप्त डेवलपर रोवो89एक्सपोज़ड फ्रेमवर्क के प्रमुख डेवलपर ने प्रदान किया है

अनेकअपडेट एंड्रॉइड नौगट के लिए एक्सपोज़ड फ्रेमवर्क की प्रगति पर। कुछ के लिए, इंतज़ार सहनीय रहा मुख्यतः एक्सपोज़ड फ्रेमवर्क द्वारा प्रदान की जाने वाली अतिरिक्त कार्यक्षमताओं की विशाल संख्या के कारण एंड्रॉइड मार्शमैलो. लेकिन कई अन्य लोग अपने उपकरणों पर एक्सपोज़ड के बिना जीवन जीने लगे हैं।

जब डेवलपर एबफोर्स ने एक जारी किया तो हमने परियोजना में नए उत्साह की झलक देखी AOSP 7.1.2 के लिए ART सबमॉड्यूल, लेकिन जैसा कि हमारा अपना जर्मेनज़ बताता है बेहतर होगा कि आप आधिकारिक एक्सपोज़ड फ्रेमवर्क की प्रतीक्षा करें एबफोर्स के कार्यान्वयन के रूप में रिलीज के लिए फ्रेमवर्क को कस्टम रोम में एकीकृत करने की आवश्यकता थी। आगे, यह अनौपचारिक कार्यान्वयन अधूरा था, जिसके कारण कुछ एक्सपोज़ड के साथ असंगत या ख़राब व्यवहार हुआ मॉड्यूल.

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

हमें अब rovo89 (XDA मान्यता प्राप्त डेवलपर की कुछ मदद के बाद) जैसे मुद्दों के बारे में चिंता करने की ज़रूरत नहीं है वानम) अब एक्सपोज़ड फ्रेमवर्क और इंस्टॉलर के लिए एक आधिकारिक अपडेट जारी करने के लिए तैयार है—ला रहा है एंड्रॉइड 7.0/7.1 नूगट के साथ संगतता. इसका मतलब है कि आपको कोई कस्टम ROM स्थापित नहीं करना पड़ेगा या अस्थिर संस्करणों को फ्लैश करने में परेशानी नहीं होगी एक्सपोज़ड का आनंद लें—बस अपने फोन को रूट करें और नवीनतम एक्सपोज़ड इंस्टालर एप्लिकेशन इंस्टॉल करें (नीचे लिंक किया गया है) और एक्सपोज़ड इंस्टालर आपके लिए एक्सपोज़ड इंस्टाल करने का जादू करेगा.

एक्सपोज़ड इंस्टालर मॉड्यूल रिपॉजिटरी को ब्राउज़ कर रहा है

कुछ लोगों को यह थोड़ा देर से लग सकता है, खासकर जब से यह रिलीज़ आई है Android 8.0 Oreo जारी होने के एक महीने से अधिक समय बाद. ध्यान रखें कि आने वाले कई महीनों तक बहुत कम डिवाइसों के पास Android Oreo के स्थिर संस्करण तक पहुंच होगी। एंड्रॉइड ओरियो है केवल इस पर 0.2% सभी Android डिवाइसों में से Google के नवीनतम आँकड़ों के अनुसार (Nougat पर ~18% की तुलना में), लेकिन हमारे कई उपयोगकर्ता ऐसे हैं जो ब्लीडिंग एज पर बने रहने के लिए कस्टम ROM इंस्टॉल करना पसंद करते हैं।

अक्टूबर 2017 तक Android संस्करण वितरण। स्रोत: गूगल

हालाँकि भले ही आप एक स्थापित करें एंड्रॉइड 8.0 का अनौपचारिक पोर्ट हमारे मंचों पर असंख्य उपकरणों पर उपलब्ध है, इनमें से कई पोर्ट दैनिक ड्राइवर स्थिति वाले नहीं हैं। इसलिए जब तक आप किसी नए ब्रांड के लिए सैकड़ों डॉलर खर्च करने को तैयार न हों Google पिक्सेल 2/2 XL, सोनी एक्सपीरिया XZ1/XZ1 कॉम्पैक्ट, या कोई आगामी डिवाइस जैसे हुआवेई मेट 10, तो आप संभवतः एंड्रॉइड नौगट पर एक्सपोज़ड फ्रेमवर्क के कई महीनों के उपयोग को निचोड़ने में सक्षम होंगे।

यदि यह आपके जैसा लगता है, तो इसे अपने एंड्रॉइड नौगट डिवाइस पर चलाने और चलाने के लिए एक्सपोज़ड इंस्टालर और फ्रेमवर्क ज़िप के लिए आधिकारिक फोरम थ्रेड पर जाएं।

एक्सपोज़ड इंस्टालर v3.1.2 डाउनलोड करें (अटैचमेंट)

नूगट 7.0 (एसडीके24) डाउनलोड के लिए एक्सपोज़ड इंस्टालर

नूगट 7.1 (एसडीके25) डाउनलोड के लिए एक्सपोज़ड इंस्टालर

कई नए उपयोगकर्ताओं के लिए जो इस बात से परिचित नहीं हैं कि एक्सपोज़ड फ्रेमवर्क का उपयोग किस लिए किया जा सकता है या यह कैसे काम करता है, हम नीचे एक्सपोज़ड फ्रेमवर्क के बारे में संक्षेप में बताया जाएगा कि आपको क्यों उत्साहित होना चाहिए, और इस पर विकास में इतना समय क्यों लगा किया।


एक्सपोज़ड फ्रेमवर्क क्यों स्थापित करें?

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

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

एक्सपोज़ड मॉड्यूल कैसे काम करते हैं?

इसका सार यह है कि एक्सपोज़ड फ्रेमवर्क मॉड्यूल को अनुमति देता है किसी भी एप्लिकेशन के जावा तरीकों में "हुक"।—चाहे वह उपयोगकर्ता द्वारा इंस्टॉल किया गया हो या सिस्टम एप्लिकेशन हो। एक्सपोज़ड मॉड्यूल को अपने स्वयं के तरीकों को निष्पादित करने देता है पहले, दौरान, या के स्थान पर लक्ष्य अनुप्रयोग की मूल विधियाँ।

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

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

एक्सपोज़ड के विकास में इतना समय क्यों लगता है?

एक्सपोज़ड के पीछे का जादू - जो मॉड्यूल को अन्य ऐप्स के तरीकों से जुड़ने की अनुमति देता है - के लिए ज़ीगोट और कैसे के बारे में गहन ज्ञान की आवश्यकता है एंड्रॉइड रनटाइम (एआरटी) कार्य करता है। ये आवश्यकताएँ पहले से ही बड़ी संख्या में लोगों को परियोजना में योगदान देने से रोकती हैं, लेकिन समस्या इस तथ्य से और भी बढ़ गई है rovo89 पिछले 5 वर्षों से Xposed में मुख्य योगदानकर्ता रहा है.

यही कारण है कि एक्सपोज़ड की अंतिम सार्वजनिक रिलीज़ के बाद से एक्सपोज़ड में किए गए उसके संशोधनों को ओपन सोर्स करने की मांग को अस्वीकार कर दिया गया है। यह उनके दिमाग की उपज है, और वह इसे समझने और संशोधित करने में सर्वश्रेष्ठ हैं, इसलिए इतनी देर से परियोजना में अधिक जनशक्ति जोड़ रहे हैं इससे परियोजना में और देरी हो सकती है.

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

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

नोगाट में एक्सपोज़ड को कार्यशील बनाने के लिए रोवो89 ने क्या किया?

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

एंड्रॉइड नौगट में एआरटी अनुकूलन। स्रोत: गूगल

इसके विपरीत, rovo89 का कार्यान्वयन सभी ART अनुकूलन को Android Nougat में रखता है JIT का उपयोग करके किसी विधि के कॉलर को पुन: संकलित करके और अभी भी विधि हुक को जगह पर रखकर। इसका मतलब है कि आप एआरटी अनुकूलन को जबरदस्ती अक्षम करके प्रदर्शन से समझौता किए बिना एक्सपोज़ड मॉड्यूल के लाभों का आनंद ले सकते हैं।

एंड्रॉइड नौगट के लिए एक्सपोज़ड में एक विश्वसनीय हुकिंग विधि प्राप्त करने के लिए rovo89 ने क्या किया, इसके बारे में अधिक जानकारी के लिए, हम अनुशंसा करते हैं कि आप नीचे दिए गए कथन को पढ़ें जो उसने हमें प्रदान किया था।

rovo89 से पूरा बयान

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

एक उदाहरण यह है कि जब संकलन समय पर प्रवेश बिंदु पहले से ही ज्ञात होता है, तो कॉल करने वाले बिना देखे सीधे इस पते पर जा सकते हैं। एक अन्य उदाहरण इनलाइनिंग है। इस उदाहरण पर विचार करें:

एआरटी यह ध्यान देने के लिए काफी स्मार्ट है कि दो बार() विधि बहुत सरल है और इसलिए तर्क को सीधे doSomething() विधि में एम्बेड करता है, जैसे:

आप अभी भी दो बार() विधि को हुक कर सकते हैं, लेकिन इसे रनटाइम पर doSomething() से कॉल नहीं किया जाएगा, और इसलिए आपका कॉलबैक भी नहीं होगा। एआरटी और भी अधिक चतुर है: यह महसूस करता है कि जादू हमेशा 42 होता है और इसलिए शर्त कभी भी पूरी नहीं की जा सकती। तो संपूर्ण doSomething() विधि वास्तव में एक नो-ऑप है:

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

नूगाट के अनौपचारिक संस्करण भी इन अनुकूलन को अक्षम कर देते हैं, लेकिन वे पुनर्संकलन को बाध्य नहीं करते हैं (क्योंकि पोर्ट मूल रूप से ROM में एकीकृत करने के लिए बनाया गया था)। इसलिए, कभी-कभी हुक निष्पादित नहीं किए जा सकते हैं।

आधिकारिक संस्करण के साथ, आपको अनुकूलित कोड रखना होगा और फिर भी आपके पास विश्वसनीय हुक होंगे। वह कैसे काम करता है? खैर, एक्सपोज़ड सभी कॉलों को रिकॉर्ड करता है। ऐसा तब होता है जब एपीके संकलित किए जा रहे होते हैं, या पूर्व-अनुकूलित कोड के लिए एक अलग पास में होते हैं। यह अतिरिक्त डेटा अधिक जगह नहीं लेता है, लेकिन यह Xposed को यह पता लगाने की अनुमति देता है कि एक निश्चित विधि कहाँ इनलाइन की गई होगी। इसलिए जब कोई विधि हुक की जाती है, तो उसके सभी कॉलर्स को डीऑप्टिमाइज़ किया जाएगा, यानी उनके कोड का अब उपयोग नहीं किया जाएगा। यह सुनिश्चित करता है कि हुक कॉलबैक निश्चित रूप से कॉल किया जाएगा। और यदि कॉलर का भारी उपयोग किया जाता है, तो इसे आसानी से जेआईटी के साथ पुन: संकलित किया जाएगा, इस बार इस ज्ञान के साथ कि विधि जुड़ी हुई है और इसलिए कुछ अनुकूलन लागू नहीं होते हैं। इसका मतलब यह है कि हुकिंग विधियों का प्रभाव न्यूनतम स्तर तक कम हो जाता है। वाह!

अब आगे बढ़ें और इसे आज़माएं। Xposed Installer 3.1.2 का उपयोग करना सुनिश्चित करें, क्योंकि फ़ाइल आधारित एन्क्रिप्शन का समर्थन करने के लिए कॉन्फ़िगरेशन पथ को बदलना होगा।

और पढ़ें

निष्कर्ष

हमें आशा है कि आप एंड्रॉइड 7.X नूगट के लिए एक्सपोज़ड की रिलीज़ के बारे में उतने ही उत्साहित हैं जितना हम हैं। प्रतीक्षा लंबी रही है, लेकिन एक्सपोज़ड की अत्यधिक जटिलता को देखते हुए इसे टाला नहीं जा सका। यदि आप अभी भी इस बात को लेकर असमंजस में हैं कि एक्सपोज़ड क्या है या यह कैसे काम करता है, तो चिंता न करें। बहुत कम लोग (जिनमें हम भी शामिल हैं) वास्तव में समझते हैं कि यह कैसे काम करता है। rovo89 जैसे डेवलपर्स अपने काम की पैकेजिंग में अपना सर्वश्रेष्ठ करते हैं, इसलिए आपको वास्तव में यह समझने की ज़रूरत नहीं है कि हुड के नीचे क्या चल रहा है।

क्या आपको एक्सपोज़ड फ्रेमवर्क पसंद है? rovo89 के अद्भुत कार्य के लिए उसे दान देने पर विचार करें। यदि आपको लगता है कि आपके पास परियोजना में योगदान करने के लिए आवश्यक चीजें हैं, तो नीचे rovo89 का GitHub पृष्ठ देखें।

rovo89 को दान करें

एक्सपोज़ड में योगदान करें

एक्सपोज़ड मॉड्यूल खोज रहे हैं? हमारे एक्सपोज़ड फ्रेमवर्क मॉड्यूल सबफ़ोरम को देखें या XDA लैब्स एप्लिकेशन डाउनलोड करें और एक्सपोज़ड मॉड्यूल के हमारे संग्रह को ब्राउज़ करें।

एक्सपोज़ड मॉड्यूल फ़ोरम

XDA लैब्स डाउनलोड करें

एंड्रॉइड ओरियो प्रोग्रेस

यदि आप सोच रहे हैं, तो यहां बताया गया है कि एंड्रॉइड ओरेओ के लिए एक्सपोज़ड प्राप्त करने की प्रगति कैसी है:

मैंने पहले ही एंड्रॉइड 8.0 पर काम शुरू कर दिया है। कुछ हैं नई भाषा सुविधाएँ मुझे उस पर गौर करना होगा, लेकिन सामान्य अवधारणा अभी भी काम करनी चाहिए। इसमें किसी विधि के हुक होने पर किसी भी कॉल करने वाले के संकलित कोड को अमान्य करने का सारा काम शामिल है, जिसमें अब तक का सबसे अधिक समय लगा जब मैंने नूगाट पर काम किया। इसलिए मुझे सचमुच विश्वास है कि इस बार मैं बहुत तेज़ हो जाऊँगा। एंड्रॉइड 8.1बहुत अधिक भिन्न नहीं होना चाहिए, इसलिए मुझे इसके लिए अधिक अतिरिक्त कार्य की अपेक्षा नहीं है।