क्यों ऐप अपडेट कभी-कभी सबस्ट्रैटम थीम को तोड़ देते हैं

सबस्ट्रैटम थीम अक्सर तृतीय-पक्ष ऐप्स के अपडेट की आवृत्ति से प्रतिकूल रूप से प्रभावित होती हैं, खासकर जब थीमर्स को खराब-कोडित ऐप्स के अनुकूल होना पड़ता है

यह एक सामान्य घटना है: उपयोगकर्ता अपने फोन पर सबस्ट्रैटम थीम लागू करते हैं और बाद में प्ले स्टोर से स्लैक, व्हाट्सएप, इंस्टाग्राम या किसी भी अन्य ऐप को अपडेट करते हैं। अचानक वे उन ऐप्स को तब तक खोल भी नहीं सकते जब तक कि उनके थीम ओवरले अक्षम न हो जाएं। सबस्ट्रैटम के बहुत से नए उपयोगकर्ताओं ने रिलीज़ होने के बाद से इस मुद्दे पर अपने अनुभव व्यक्त किए हैं Android Oreo के लिए रूटलेस सबस्ट्रैटम थीमिंग.

कभी-कभी सबस्ट्रैटम में ओवरले को फिर से बनाने से समस्या ठीक हो जाती है, लेकिन कभी-कभी यह तब तक काम नहीं करेगा जब तक कि थीम डेवलपर थीम को फिर से अपडेट न कर दे। बाद के मामले में, उपयोगकर्ताओं को प्रभावित ऐप्स को उनकी अनथीम्ड, स्टॉक स्थिति में उपयोग करना पड़ रहा है। कहने की जरूरत नहीं है, यह कई लोगों के लिए निराशाजनक अनुभव हो सकता है।

समस्या आमतौर पर कारकों के संयोजन का परिणाम है: खराब-कोडित तृतीय-पक्ष ऐप, लगातार अपडेट कहा गया है कि ऐसे ऐप्स जो वास्तव में उन्हें ठीक करने की तुलना में अधिक समस्याएं पैदा करते हैं, और ओवरले मैनेजर सेवा (ओएमएस) में सीमाएं हैं रूपरेखा। मैंने कुछ जाने-माने विषयकारों से बात की जिन्होंने इस मुद्दे पर कुछ मूल्यवान अंतर्दृष्टि प्रदान की:

जेरेमी बेक, कौन बनाता है स्पेक्ट्रम सबस्ट्रैटम थीम, और डेविड विल्सन का प्रभुत्व यश।

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

उदाहरण के लिए, एक "घृणित रूप से कोडित" ऐप अपने color.xml फ़ाइल में टेक्स्ट रंग को पृष्ठभूमि रंग से जोड़ सकता है। यदि इस उदाहरण में कोई थीमर पृष्ठभूमि का रंग बदलकर सफेद नहीं रखता है, तो पाठ भी बदल दिया जाएगा और उसे पढ़ना कठिन (या असंभव भी) बनाया जा सकता है। नतीजतन, थीमर को टेक्स्ट और पृष्ठभूमि के लिए अलग-अलग रंग निर्दिष्ट करने के लिए अपने थीम ओवरले में अपनी स्वयं की लेआउट xml फ़ाइलें जोड़नी होंगी।

चेतावनी यह है कि नई xml फ़ाइलों को भी शामिल करना होगा मूल ऐप की समान नाम की फ़ाइलों से कोड का हर एक अक्षर इसलिए कोई कार्यक्षमता नष्ट नहीं हुई है. ऐसा इसलिए है क्योंकि ओएमएस स्थानापन्न, थीमर की फ़ाइल से पढ़ता है जबकि ऐप स्वयं वह सब कुछ करने का प्रयास करता है जिसके लिए मूल फ़ाइल को अनुमति दी गई है। जब ऐप अपडेट हो और यहां तक ​​कि थोड़ा सा भी असंबद्ध परिवर्तन किया जाता है मूल xml फ़ाइलों में, ओवरले काम करने में विफल हो जाएंगे।

यहां बताया गया है कि डेविड इसे कैसे समझाते हैं:

ये हास्यास्पद "डेवलपर्स" (मैं इन जोकरों का वर्णन करते समय उस शब्द का प्रयोग शिथिल रूप से करता हूं) क्या वे वस्तुओं का उपयोग करते हैं लेआउट xmls जो हमारे लिए उन लेआउट xmls को हमारे ओवरले में जोड़े बिना ऐप को ठीक से थीम बनाना कठिन बना देता है।

आपको एक उदाहरण देने के लिए, आइए व्हाट्सएप लें और उनके /res/values/colors.xml में एक आइटम देखें जो है #ffffffff

वे अपने पूरे ऐप में टेक्स्ट रंग और पृष्ठभूमि रंग दोनों के लिए @color/white का उपयोग करते हैं। इसका मतलब यह है कि यदि कोई थीमर अपनी पृष्ठभूमि को गहरा बनाने के लिए "सफेद" रंग को किसी गहरे रंग में बदलना चाहता है, तो यह बहुत सारे टेक्स्ट को भी काला कर देगा जो कि बहुत बुरा है।

उस कमी को दूर करने के लिए, थीमर्स लेआउट xmls को अपने ओवरले में जोड़ देंगे और टेक्स्ट रंग या पृष्ठभूमि रंग या दोनों को बदल देंगे पृष्ठभूमि को गहरा बनाने के लिए android: बैकग्राउंड = "@ color/white" जैसा कुछ होना।

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

अब यहीं समस्या है... यदि कोई थीमर व्हाट्सएप 2.17.323 के अनुरूप एक ओवरले बनाता है और व्हाट्सएप 2.17.351 पर अपडेट करता है (उदाहरण के लिए) तो यदि व्हाट्सएप अपने अनंत ज्ञान में बदलाव का फैसला करता है मान लीजिए कि एक स्ट्रिंग का नाम जो 2.17.323 के लिए बनाए गए ओवरले में था और वह स्ट्रिंग अब 2.17.351 में मौजूद नहीं है तो ओवरले सफलतापूर्वक नहीं होगा निर्माण।

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

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

आप इसके बारे में क्या कर सकते हैं?

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

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