Neden Uygulama Güncellemeleri Bazen Alt Katman Temalarını Bozuyor?

click fraud protection

Substratum temaları, özellikle tema sahiplerinin kötü kodlanmış uygulamalara uyum sağlaması gerektiğinde, üçüncü taraf uygulamalara yapılan güncelleme sıklığından genellikle olumsuz etkilenir.

Bu yaygın bir durumdur: Kullanıcılar Substratum temalarını telefonlarına uygular ve daha sonra Slack, WhatsApp, Instagram veya Play Store'dan herhangi bir sayıda başka uygulamayı günceller. Aniden tema katmanları devre dışı bırakılana kadar bu uygulamaları bile açamıyorlar. Çok sayıda yeni Substratum kullanıcısı, piyasaya sürülmesinden bu yana bu sorunla ilgili deneyimlerini dile getirdi. Android Oreo için köksüz Substratum teması.

Bazen kaplamaları Substratum'da yeniden oluşturmak sorunu çözer, ancak bazen de tema geliştiricisi temayı tekrar güncelleyene kadar işe yaramaz. İkinci durumda, kullanıcılar etkilenen uygulamaları temasız stok durumlarında kullanmak zorunda kalıyor. Bunun birçokları için sinir bozucu bir deneyim olabileceğini söylemeye gerek yok.

Sorun genellikle birden fazla faktörün birleşiminden kaynaklanır: kötü kodlanmış bir üçüncü taraf uygulaması, sık sık yapılan güncellemeler Bahsedilen uygulamalar aslında düzelttiklerinden daha fazla soruna neden oluyor ve Overlay Manager Service'deki (OMS) sınırlamalar çerçeve. Konuyla ilgili değerli bilgiler sağlayan birkaç tanınmış tema uzmanıyla konuştum:

Jeremy Beck, kim yapar Spektrum Substratum teması ve David Wilson ile ilgili Egemenlik şöhret.

Substratum'un bu sadık isimlerine göre, kötü kodlanmış uygulamalar alanındaki en kötü suçlulardan bazıları en popülerler arasında yer alıyor. WhatsApp, Instagram, Slack, Facebook ve Telegram, Substratum tema kullanıcılarının bu sorunu anlatırken bize aktardıkları örneklerdir. Aslında David bunların "korkunç, iğrenç, alçakça kodlanmış" uygulamalara örnekler olduğunu söyledi. Substratum tema geliştiricileri, Android deneyimlerini tek bir çatı altında birleştirmeye çalışırken kullanıcılarını mutlu ederken karşılaştıkları hayal kırıklığı ortak tema.

Örneğin, "aşağılık bir şekilde kodlanmış" bir uygulama, metin rengini colours.xml dosyasındaki arka plan rengine bağlayabilir. Bu örnekte bir tema arka plan rengini artık beyaz olmayacak şekilde değiştirirse, metin de değişecek ve okunması zor (hatta imkansız) hale getirilebilecektir. Sonuç olarak, tema kullanıcısının, metin ve arka plan için ayrı renkler belirtmek amacıyla tema katmanlarına kendi düzen xml dosyalarını eklemesi gerekecektir.

Uyarı, yeni xml dosyalarının da şunları içermesi gerektiğidir: Orijinal uygulamanın dosyalarındaki aynı addaki kodun her bir karakteri yani hiçbir işlevsellik kaybolmaz. Bunun nedeni, OMS'nin yedek dosyadan okuma yapması ve uygulamanın kendisinin orijinal dosyanın izin verdiği her şeyi yapmaya çalışmasıdır. Uygulama güncellendiğinde ve ilgisiz en ufak bir değişiklik bile yapılır orijinal xml dosyalarına aktarılırsa kaplamalar çalışmaz.

David bunu şöyle açıklıyor:

Bu gülünç "geliştiricilerin" (bu palyaçoları tanımlarken bu terimi gevşek bir şekilde kullanıyorum) yaptıkları şey, düzen xml'lerini kaplamamıza eklemeden uygulamanın temasını düzgün bir şekilde oluşturmamızı zorlaştırıyor.

Size bir örnek vermek gerekirse, WhatsApp'ı ele alalım ve /res/values/colors.xml dosyasındaki bir öğeye bakalım; #ffffffff

Uygulamanın tamamında hem metin renkleri hem de arka plan renkleri için @color/white kullanıyorlar. Bu, bir temanın arka planını koyulaştırmak için "beyaz"ın rengini koyu bir şeye değiştirmek istemesi durumunda, bu durumun birçok metni de koyu hale getireceği anlamına gelir ki bu çok kötü bir durumdur.

Bu eksikliği gidermek için temacılar düzen xml'lerini kaplamalarına ekleyecek ve metin rengini, arka plan rengini veya her ikisini de değiştirecek. arka planı karanlık yapmak için Android: arka plan = "@color/white" gibi bir şeyden Android: arka plan = "@*android: color/background_dark" gibi bir şeye geçiş yapın.

Bu harikadır ve arka planı karanlık yapar, ancak mizanpaj xml'sinin, orijinal mizanpaj xml'sinin sahip olduğu, birkaç satırdan 100'ün üzerinde satıra kadar değişebilen her şeyi içermesi gerekir. Xml düzeninin bu satırları içinde, uygulamanın orijinal kodunda bulunan ve kimlikler, boyutlar, dizeler, stiller vb. gibi çağrılan birçok farklı kaynak olabilir.

Şimdi sorun burada yatıyor... eğer bir temacı WhatsApp 2.17.323'e uyacak bir kaplama yaparsa ve WhatsApp 2.17.351'e güncellenirse (örneğin), o zaman WhatsApp sonsuz bilgeliğiyle değişmeye karar verirse 2.17.323 için yapılan katmanda bulunan bir dizenin adını söyleyin ve bu dize artık 2.17.351'de mevcut değilse, katman başarılı bir şekilde çalışmayacaktır. inşa etmek.

Aynı durum, uygulama içindeki bir kaynağı çağıran herhangi bir koddaki kaplamanın içindeki herhangi bir şey için de geçerlidir; Bindirmenin tasarlandığı uygulamada, uygulama güncellenirse ve kaynak artık uygulamanın kodunda değilse, bindirme derlenmez.

Bu, Substratum tema kullanıcılarının karşılaştığı alternatif uygulama ve tema güncellemelerinden oluşan kedi-fare oyununun yalnızca bir örneğidir. Temacılar çok sayıda üçüncü taraf uygulamayı desteklediğinde, her tema güncellemesinde bu oyunu birkaç kez çoğaltmaları gerekir. Bu, birden fazla desteklenen uygulamaya ayak uydurmak ve hayal kırıklığına uğramış kullanıcıların, güncellemeler arasında temalarını kötü bir şekilde derecelendirmemelerini ummaktan oluşan, hiç bitmeyen bir döngüdür. çünkü Slack (başka bir örnek için), en sevdikleri Slack'i destekleyen uygulamanın son güncellemesinden bu yana geçen iki hafta içinde uygulamasına üç güncelleme gönderdi. tema.

Bu konuda ne yapabilirsiniz?

Şahsen ben genellikle beklerim Kullandığım herhangi bir uygulamayı güncellemeden önce favori temalarımı güncelle bunlar temalı. Bununla birlikte, her tema kullanıcısının bu uygulama güncellemelerine ayak uydurmak için güncellemeleri sürekli olarak göndermeye zamanı yoktur, bu nedenle kat edeceğiniz mesafe değişebilir. Bir uygulamayı temasız halde kullanmaya gerçekten dayanamıyorsanız, belki birkaç saat veya gün beklemek sizin için o kadar da önemli değildir. Ancak bu bir anlaşmayı bozuyorsa, belki de yalnızca yakın zamanda değişmesi muhtemel olmayan sistem uygulamalarını (SystemUI veya Android Framework gibi) temalandırmak isteyebilirsiniz.

Sorunun Substratum'un kendisinden veya Substratum temalarından kaynaklanmadığını unutmayın ve bir şeyler ters gittiğinde lütfen tema geliştiricisini suçlamayın. EMUI, Samsung Experience veya LG UX gibi Android'in OEM versiyonlarındaki tema motorlarının, sistem uygulamalarından ve sistem kullanıcı arayüzünden daha fazlasını temalandırmanıza izin vermemesinin nedeni budur. Substratum'un sunduğu kişiselleştirme düzeyinin keyfini çıkarmak için, en son uygulama güncellemesinin keyfini çıkarmak için kısa bir süre beklemeniz gerekebilir.