რატომ არღვევს აპლიკაციის განახლებები ზოგჯერ სუბსტრატის თემებს

სუბსტრატის თემებზე ხშირად უარყოფითად მოქმედებს მესამე მხარის აპლიკაციების განახლებების სიხშირე, განსაკუთრებით მაშინ, როდესაც თემერები უნდა მოერგოს ცუდად კოდირებულ პროგრამებს.

ეს ჩვეულებრივი მოვლენაა: მომხმარებლები იყენებენ Substratum-ის თემებს ტელეფონებზე, შემდეგ კი განაახლებენ Slack-ს, WhatsApp-ს, Instagram-ს ან ნებისმიერ სხვა აპს Play Store-დან. უეცრად ისინი ვერც კი გახსნიან ამ აპებს, სანამ მათი თემების გადაფარვა არ გამორთულია. Substratum-ის უამრავმა ახალმა მომხმარებელმა გამოხატა თავისი გამოცდილება ამ საკითხთან დაკავშირებით გამოქვეყნების დღიდან rootless Substratum თემა Android Oreo-სთვის.

ზოგჯერ Substratum-ში გადაფარვების ხელახალი აშენება აგვარებს პრობლემას, მაგრამ ზოგჯერ ის არ იმუშავებს მანამ, სანამ თემის შემქმნელი არ განაახლებს თემას. ამ უკანასკნელ შემთხვევაში, მომხმარებლებს უწევთ დაზარალებული აპლიკაციების გამოყენება მათ არათემატურ, საფონდო შტატებში. ზედმეტია იმის თქმა, რომ ბევრისთვის ეს შეიძლება იყოს იმედგაცრუებული გამოცდილება.

პრობლემა, როგორც წესი, არის ფაქტორების ერთობლიობის შედეგი: ცუდად კოდირებული მესამე მხარის აპლიკაცია, ხშირი განახლებები. აღნიშნული აპები, რომლებიც რეალურად უფრო მეტ პრობლემას იწვევენ, ვიდრე აფიქსირებენ და შეზღუდვები გადაფარვის მენეჯერის სერვისში (OMS) ჩარჩო. მე ვესაუბრე რამდენიმე ცნობილ თემას, რომლებმაც მიიღეს ღირებული ინფორმაცია ამ საკითხზე:

ჯერემი ბეკი, რომელიც ქმნის სპექტრი სუბსტრატის თემა და დევიდ უილსონი დან დომინირება დიდება.

ამ Substratum-ის მხარდამჭერების აზრით, ცუდი კოდირებული აპლიკაციების სფეროში ყველაზე უარესი დამნაშავეები ყველაზე პოპულარულია. WhatsApp, Instagram, Slack, Facebook და Telegram არის მაგალითები, რომლებიც ამ სუბსტრატის თემებმა მოგვაწოდეს ამ პრობლემის მოხსენებისას. სინამდვილეში, დევიდმა თქვა, რომ ეს არის „საშინლად, ამაზრზენად, საზიზღრად კოდირებული“ აპლიკაციების მაგალითები, რომლებიც ფერადად ასახავს იმედგაცრუება Substratum-ის თემების დეველოპერებს აწყდებათ, როდესაც ისინი აბედნიერებენ მომხმარებლებს, როდესაც ისინი ცდილობენ გააერთიანონ თავიანთი Android გამოცდილების გარშემო საერთო თემა.

მაგალითად, „საზიზღრად დაშიფრულმა“ აპმა შესაძლოა ტექსტის ფერი დააკავშიროს ფონის ფერს მის colours.xml ფაილში. თუ თემერი ცვლის ფონის ფერს და აღარ იქნება თეთრი ამ მაგალითში, ტექსტიც შეიცვლება და შეიძლება გართულდეს (ან შეუძლებელიც) წასაკითხად. შესაბამისად, თემერს მოუწევს საკუთარი განლაგების xml ფაილების დამატება თემის გადაფარვაში, რათა მიუთითოს ცალკეული ფერები ტექსტისა და ფონისთვის.

სიფრთხილე ის არის, რომ ახალი xml ფაილები ასევე უნდა შეიცავდეს კოდის თითოეული სიმბოლო ორიგინალური აპლიკაციის ამავე სახელწოდების ფაილებიდან ასე რომ, ფუნქციონირება არ იკარგება. ეს იმის გამო ხდება, რომ OMS კითხულობს შემცვლელი, თემერის ფაილიდან, ხოლო თავად აპი ცდილობს გააკეთოს ყველაფერი, რაც ნებადართულია ორიგინალური ფაილიდან. როდესაც აპლიკაცია განახლდება და მცირედი შეუსაბამო ცვლილებაც კი ხდება ორიგინალურ xml ფაილებზე, გადაფარვები ვერ იმუშავებს.

აი, როგორ განმარტავს ამას დავითი:

რას აკეთებენ ეს სასაცილო "დეველოპერები" (ამ ტერმინს თავისუფლად ვიყენებ ამ კლოუნების აღწერისას) არის ის, რომ ისინი იყენებენ ნივთებს განლაგება xmls, რაც გვიჭირს აპლიკაციის სწორად თემატიკაზე ამ განლაგების xml-ების ჩვენს გადაფარვაში დამატების გარეშე.

მაგალითი რომ მოგცეთ, ავიღოთ WhatsApp და შევხედოთ ერთეულს მათ /res/values/colors.xml-ში, რომელიც არის #ფფფფფფფ

ისინი იყენებენ @color/white-ს, როგორც ტექსტის, ასევე ფონის ფერისთვის, მთელ მათ აპლიკაციაში. ეს ნიშნავს, რომ თუ თემერს სურს შეცვალოს "თეთრის" ფერი რაღაც მუქზე, რათა მათი ფონი მუქი გახადოს, მაშინ ის ასევე გახდის ბევრ ტექსტს მუქად, რაც ძალიან ცუდია.

ამ ნაკლოვანების აღმოსაფხვრელად, თემერები დაამატებენ xml-ების განლაგებას მათ გადაფარვაში და შეცვლიან ტექსტის ფერს ან ფონის ფერს ან ორივეს. რაღაც ანდროიდის მსგავსი: background="@color/white" ანდროიდის მსგავსს: background="@*android: color/background_dark" ფონის მუქი გახადოს.

ახლა ეს შესანიშნავია და ფონს ბნელს ხდის, მაგრამ განლაგება xml უნდა შეიცავდეს მასში ყველაფერს, რაც აქვს ორიგინალურ განლაგებას xml, რომელიც შეიძლება განსხვავდებოდეს რამდენიმე სტრიქონიდან 100 ხაზამდე. განლაგების ამ სტრიქონებში xml შეიძლება იყოს უამრავი სხვადასხვა რესურსი, რომელიც მდებარეობს აპლიკაციის თავდაპირველ კოდში, რომლებიც გამოიძახებენ, როგორიცაა ID, ზომები, სტრიქონები, სტილები და ა.შ.

ახლა პრობლემა აქ არის... თუ თემერი აკეთებს გადაფარვას WhatsApp 2.17.323-ის შესაფერისად და WhatsApp-ის განახლებები 2.17.351-ზე (მაგალითად), მაშინ თუ WhatsApp თავისი უსასრულო სიბრძნით გადაწყვეტს შეცვლას ვთქვათ სტრიქონის სახელი, რომელიც იყო გადაფარვაში, გაკეთდა 2.17.323-ისთვის და ეს სტრიქონი აღარ არსებობს 2.17.351-ში, მაშინ გადაფარვა წარმატებით ვერ მოხერხდება აშენება.

იგივე ეხება გადაფარვის შიგნით არსებულ ნებისმიერ კოდს, რომელიც იძახებს აპის შიგნით არსებულ რესურსს, თუ ეს კონკრეტული რესურსი იყო აპში, რომლისთვისაც შეიქმნა გადაფარვა და შემდეგ აპი განახლდება და რესურსი აღარ არის აპის კოდში, მაშინ გადაფარვა არ შედგენილი იქნება.

ეს არის მხოლოდ ერთი მაგალითი კატა-თაგვური თამაშისა ალტერნატიული აპლიკაციებისა და თემების განახლებებისა, რომელთა წინაშეც დგას Substratum themers. როდესაც თემერები მხარს უჭერენ მესამე მხარის აპების დიდ რაოდენობას, მათ უნდა გაამრავლონ ეს თამაში რამდენჯერმე თითოეული თემის განახლებით. ეს არის უსასრულო ციკლი, რომ აკონტროლოთ მრავალი მხარდაჭერილი აპი და იმედი ვიქონიოთ, რომ იმედგაცრუებული მომხმარებლები ცუდად არ შეაფასებენ თავიანთ თემებს განახლებებს შორის. რადგან Slack-მა (სხვა მაგალითისთვის) სამი განახლება მოახდინა მათ აპში ორი კვირის განმავლობაში მათი საყვარელი Slack-ის მხარდაჭერის ბოლო განახლებიდან. თემა.

რა შეგიძლიათ ამის გაკეთება?

პირადად მე ჩვეულებრივ ველოდები განაახლეთ ჩემს საყვარელ თემებზე, სანამ განვაახლებ ნებისმიერ აპს, რომელსაც ვიყენებ რომ არის თემატური. ამის თქმით, ყველა თემას არ აქვს დრო, მუდმივად განაახლოს განახლებები ამ აპის განახლებების შესანარჩუნებლად, ასე რომ, თქვენი გარბენი შეიძლება განსხვავდებოდეს. თუ თქვენ ნამდვილად ვერ იტანს აპის გამოყენებას არათემატურ მდგომარეობაში, მაშინ შესაძლოა რამდენიმე საათის ან დღის ლოდინი არც ისე დიდი საქმეა თქვენთვის. თუ ეს გარიგების დარღვევაა, მაშინ შესაძლოა გსურდეთ მხოლოდ თემის სისტემის აპლიკაციები, რომლებიც ნაკლებად სავარაუდოა, რომ მალე შეიცვალოს (როგორიცაა SystemUI ან Android Framework).

უბრალოდ აღიარეთ, რომ პრობლემა არ არის თავად სუბსტრატის ან სუბსტრატის თემების გამო და გთხოვთ, ნუ დაადანაშაულებთ თემის შემქმნელს, როცა რამე არასწორედ მოხდება. სწორედ ამიტომ, Android-ის OEM გემოვნების თემატური ძრავები, როგორიცაა EMUI, Samsung Experience ან LG UX, არ გაძლევთ უფლებას თემის შექმნაზე მეტი, ვიდრე სისტემის აპები და თავად სისტემის ინტერფეისი. იმისთვის, რომ ისიამოვნოთ პერსონალიზაციის დონით, რომელსაც სუბსტრატი გვთავაზობს, კომპრომისი არის ის, რომ შესაძლოა დაგჭირდეთ ცოტა ხნით ლოდინი, რომ ისარგებლოთ აპის უახლესი განახლებით.