Γιατί οι ενημερώσεις εφαρμογών μερικές φορές διακόπτουν τα θέματα του υποστρώματος

Τα θέματα υποστρώματος συχνά επηρεάζονται αρνητικά από τη συχνότητα των ενημερώσεων σε εφαρμογές τρίτων, ειδικά όταν τα θέματα πρέπει να προσαρμοστούν σε κακώς κωδικοποιημένα

Είναι σύνηθες φαινόμενο: οι χρήστες εφαρμόζουν θέματα Substratum στα τηλέφωνά τους και στη συνέχεια ενημερώνουν το Slack, το WhatsApp, το Instagram ή οποιονδήποτε αριθμό άλλων εφαρμογών από το Play Store. Ξαφνικά δεν μπορούν καν να ανοίξουν αυτές τις εφαρμογές μέχρι να απενεργοποιηθούν οι επικαλύψεις θεμάτων τους. Πολλοί νεότεροι χρήστες του Substratum έχουν εκφράσει τις εμπειρίες τους σχετικά με αυτό το ζήτημα από την κυκλοφορία του Θέμα Substratum χωρίς root για Android Oreo.

Μερικές φορές η αναδόμηση των επικαλύψεων στο Substratum διορθώνει το πρόβλημα, αλλά μερικές φορές δεν θα λειτουργήσει έως ότου ο προγραμματιστής θεμάτων ενημερώσει ξανά το θέμα. Στην τελευταία περίπτωση, οι χρήστες έχουν κολλήσει να πρέπει να χρησιμοποιούν τις επηρεαζόμενες εφαρμογές στις μη θεματικές, μετοχές τους. Περιττό να πούμε ότι αυτή μπορεί να είναι μια απογοητευτική εμπειρία για πολλούς.

Το πρόβλημα είναι συνήθως αποτέλεσμα ενός συνδυασμού παραγόντων: μια κακώς κωδικοποιημένη εφαρμογή τρίτου μέρους, συχνές ενημερώσεις σε οι εν λόγω εφαρμογές που στην πραγματικότητα προκαλούν περισσότερα προβλήματα από αυτά που επιδιορθώνουν και περιορισμούς στην υπηρεσία Overlay Manager Service (OMS) δομή. Μίλησα με μερικούς γνωστούς θεατές που έδωσαν μερικές πολύτιμες πληροφορίες για το θέμα: Τζέρεμι Μπεκ, που κάνει το Φάσμα Θέμα υποστρώματος, και Ντέιβιντ Γουίλσον του Κυριαρχία φήμη.

Σύμφωνα με αυτούς τους υποστηρικτές του Substratum, μερικοί από τους χειρότερους παραβάτες στον τομέα των κακώς κωδικοποιημένων εφαρμογών είναι από τους πιο δημοφιλείς. Το WhatsApp, το Instagram, το Slack, το Facebook και το Telegram είναι παραδείγματα που μας ανέφεραν αυτά τα θέματα Substratum όταν αναφέραμε αυτό το πρόβλημα. Στην πραγματικότητα, ο Ντέιβιντ είπε ότι είναι παραδείγματα εφαρμογών «φρικτά, αηδιαστικά, απεχθές κωδικοποιημένες», οι οποίες απεικονίζουν πολύχρωμα την απογοήτευση που αντιμετωπίζουν οι προγραμματιστές θεμάτων Substratum όταν κρατούν τους χρήστες τους ευχαριστημένους καθώς προσπαθούν να ενοποιήσουν τις εμπειρίες τους Android γύρω από ένα κοινό θέμα.

Για παράδειγμα, μια εφαρμογή με "καταφρόνητα κωδικοποιημένη" μπορεί να συνδέσει το χρώμα του κειμένου με το χρώμα του φόντου στο αρχείο Colors.xml. Εάν ένα θέμα αλλάξει το χρώμα του φόντου ώστε να μην είναι πλέον λευκό σε αυτό το παράδειγμα, το κείμενο θα αλλάξει επίσης και θα μπορούσε να γίνει δυσκολότερο (ή ακόμα και αδύνατο) στην ανάγνωση. Κατά συνέπεια, το themer θα πρέπει να προσθέσει τα δικά του αρχεία xml διάταξης στις επικαλύψεις θεμάτων του για να καθορίσει ξεχωριστά χρώματα για κείμενο και φόντο.

Η προειδοποίηση είναι ότι τα νέα αρχεία xml πρέπει επίσης να περιλαμβάνουν κάθε χαρακτήρας κώδικα από τα αρχεία της αρχικής εφαρμογής με το ίδιο όνομα οπότε δεν χάνεται καμία λειτουργικότητα. Αυτό συμβαίνει επειδή το OMS διαβάζει από το υποκατάστατο, το αρχείο του themer, ενώ η ίδια η εφαρμογή προσπαθεί να κάνει ό, τι επέτρεπε το αρχικό αρχείο. Όταν η εφαρμογή ενημερωθεί και γίνεται ακόμη και η παραμικρή άσχετη αλλαγή στα αρχικά αρχεία xml, οι επικαλύψεις δεν θα λειτουργήσουν.

Να πώς το εξηγεί ο Ντέιβιντ:

Αυτό που κάνουν αυτοί οι γελοίοι "προγραμματιστές" (χρησιμοποιώ αυτόν τον όρο χαλαρά όταν περιγράφω αυτούς τους κλόουν) είναι ότι χρησιμοποιούν αντικείμενα σε layout xmls που μας δυσκολεύουν να θεματίσουμε σωστά την εφαρμογή χωρίς να προσθέσουμε αυτά τα xml διάταξης στην επικάλυψή μας.

Για να σας δώσω ένα παράδειγμα, ας πάρουμε το WhatsApp και ας δούμε ένα στοιχείο στο /res/values/colors.xml που είναι #φφφφφφ

Χρησιμοποιούν το @color/white τόσο για χρώματα κειμένου όσο και για χρώματα φόντου σε όλη την εφαρμογή τους. Αυτό σημαίνει ότι εάν ένα θέμα θέλει να αλλάξει το χρώμα του "λευκού" σε κάτι σκούρο για να κάνει το φόντο του σκούρο, τότε θα κάνει και πολλά κείμενα σκούρα, κάτι που είναι πολύ κακό.

Για να αντιμετωπιστεί αυτό το μειονέκτημα, τα themer θα προσθέσουν τα xmls διάταξης στην επικάλυψή τους και θα αλλάξουν είτε το χρώμα του κειμένου είτε το χρώμα του φόντου ή και τα δύο από είναι κάτι σαν android: background="@color/white" σε κάτι σαν android: background="@*android: color/background_dark" για να γίνει το φόντο σκοτεινό.

Τώρα αυτό είναι υπέροχο και κάνει το φόντο σκοτεινό, αλλά η διάταξη xml πρέπει να περιλαμβάνει όλα όσα έχει η αρχική διάταξη xml, η οποία μπορεί να ποικίλλει από μερικές γραμμές έως περισσότερες από 100 γραμμές. Μέσα σε αυτές τις γραμμές της διάταξης xml μπορεί να υπάρχουν πολλοί διαφορετικοί πόροι που βρίσκονται μέσα στον αρχικό κώδικα της εφαρμογής που καλούνται, όπως αναγνωριστικά, διαστάσεις, συμβολοσειρές, στυλ, κ.λπ.

Τώρα εδώ βρίσκεται το πρόβλημα... εάν ένα θέμα κάνει μια επικάλυψη για να ταιριάζει στο WhatsApp 2.17.323 και το WhatsApp ενημερώσει στο 2.17.351 (για παράδειγμα), τότε εάν το WhatsApp με την απέραντη σοφία του αποφασίσει να αλλάξει το όνομα μιας συμβολοσειράς που ήταν στην επικάλυψη έγινε για 2.17.323 και αυτή η συμβολοσειρά δεν υπάρχει πια στο 2.17.351, τότε η επικάλυψη δεν θα είναι επιτυχής χτίζω.

Το ίδιο ισχύει για οτιδήποτε εντός της επικάλυψης που βρίσκεται σε οποιονδήποτε κώδικα που καλεί έναν πόρο που βρίσκεται εντός της εφαρμογής, εάν αυτός ο συγκεκριμένος πόρος ήταν στην εφαρμογή για την οποία σχεδιάστηκε η επικάλυψη και, στη συνέχεια, η εφαρμογή ενημερώνεται και ο πόρος δεν βρίσκεται πλέον στον κώδικα της εφαρμογής, τότε η επικάλυψη δεν θα μεταγλωττιστεί.

Αυτό είναι μόνο ένα παράδειγμα του παιχνιδιού «γάτας με το ποντίκι» των εναλλασσόμενων ενημερώσεων εφαρμογών και θεμάτων με το οποίο αντιμετωπίζουν τα theters Substratum. Όταν τα themer υποστηρίζουν μεγάλο αριθμό εφαρμογών τρίτων, πρέπει να πολλαπλασιάζουν αυτό το παιχνίδι πολλές φορές με κάθε ενημέρωση θέματος. Είναι ένας ατελείωτος κύκλος παρακολούθησης πολλαπλών υποστηριζόμενων εφαρμογών και ελπίδας ότι οι απογοητευμένοι χρήστες δεν βαθμολογούν άσχημα τα θέματά τους μεταξύ των ενημερώσεων επειδή το Slack (για ένα άλλο παράδειγμα) ώθησε τρεις ενημερώσεις στην εφαρμογή τους μέσα σε δύο εβδομάδες από την τελευταία ενημέρωση της αγαπημένης τους υποστήριξης Slack θέμα.

Τι μπορείτε να κάνετε για αυτό;

Προσωπικά, συνήθως περιμένω ένα ενημερώστε τα αγαπημένα μου θέματα προτού ενημερώσω τις εφαρμογές που χρησιμοποιώ που είναι θεματικά. Τούτου λεχθέντος, δεν έχει κάθε θέμα το χρόνο να προωθεί συνεχώς ενημερώσεις για να συμβαδίζει με αυτές τις ενημερώσεις εφαρμογών, επομένως τα χιλιόμετρα σας μπορεί να διαφέρουν. Αν πραγματικά δεν αντέχετε να χρησιμοποιείτε μια εφαρμογή στην κατάσταση χωρίς θέμα, τότε ίσως να μην είναι τόσο μεγάλη υπόθεση για εσάς να περιμένετε μερικές ώρες ή μέρες. Αν όμως πρόκειται για διακοπή συμφωνίας, τότε ίσως θέλετε να θεματοποιήσετε μόνο εφαρμογές συστήματος που είναι απίθανο να αλλάξουν σύντομα (όπως το SystemUI ή το Android Framework).

Απλώς αναγνωρίστε ότι το πρόβλημα δεν οφείλεται στο ίδιο το Substratum ή τα θέματα του Substratum και μην κατηγορείτε τον προγραμματιστή του θέματος όταν κάτι πάει στραβά. Αυτός είναι ο λόγος για τον οποίο οι μηχανές θεμάτων σε γεύσεις OEM του Android όπως το EMUI, το Samsung Experience ή το LG UX δεν σας επιτρέπουν να δημιουργήσετε θέμα περισσότερο από τις εφαρμογές συστήματος και το ίδιο το περιβάλλον εργασίας του συστήματος. Για να απολαύσετε το επίπεδο προσαρμογής που προσφέρει το Substratum, η αντιστάθμιση είναι ότι ίσως χρειαστεί να περιμένετε λίγο για να απολαύσετε αυτήν την τελευταία ενημέρωση εφαρμογής.