Sungstratum del team [projekt.] porta tutti i gadget a tema di RRO-OMS sui dispositivi Samsung Nougat attraverso Substratum! Continua a leggere per saperne di più!
I temi Android hanno fatto molta strada, dalle modifiche hacky a Substratum e ora, Strato solare. Anni fa, la parola "tema" nelle discussioni su Android veniva spesso sostituita dalla parola "selettore", un cenno a il selettore di temi T-Mobile trovato in CyanogenMod che ha gettato le basi per rendere Android un themer Paradiso. La possibilità di modificare l'aspetto del sistema operativo ha garantito agli utenti un'altra dimensione di personalizzazione, consentendo loro di apportare modifiche che rendono i loro dispositivi molto più personalizzati.
Il buon lavoro è continuato in due direzioni diverse. Il Theme Chooser si è evoluto nel CyanogenMod Theme Engine, ma nonostante gli anni di sforzi dedicati alle risorse tematiche, il CMTE è diventato obsoleto quando sono emerse altre alternative.
RRO e livelli
Le basi di una delle alternative sono state gettate quando è stato chiamato il contributo del codice di Sony sotto forma del nuovo framework
Sovrapposizione delle risorse di runtime (RRO) è stato accettato nell'AOSP. Questo framework offre la possibilità di sostituire le risorse dell'applicazione durante il runtime (da cui il nome). Gli stessi "overlay" sono stati presenti e supportati in Android già da Gingerbread (e forse anche prima), utilizzato principalmente per scambiare risorse per far funzionare le applicazioni su quello specifico dispositivo. L'approccio di Sony all'RRO prevedeva la modifica del gestore delle risorse per accettare apk che utilizzavano risorse mappate ad altre risorse corrispondenti esistenti sul dispositivo. Queste nuove risorse dell'apk sono state quindi sovrapposte alle risorse di base solo in fase di esecuzione, consentendo al sistema di funzionare come se queste nuove risorse ne avessero sempre fatto parte.Il framework RRO è stato fuso in AOSP prima che Lollipop 5.0 fosse reso pubblico, ma le prime build 5.0 avevano parti del framework rotte a causa di altre modifiche. Le anteprime per sviluppatori di Android 6.0 Marshmallow sono state le prime ad aggiungere un framework RRO funzionale anche se limitato, aprendo le porte alla personalizzazione proprio a livello Android di serie. Quindi, a meno che un OEM non tenti deliberatamente di discostarsi dalle opzioni di temi Android di serie, una certezza si potrebbe mantenere un livello di coerenza nell'approccio relativo al modo in cui i "temi" verrebbero implementati Androide.
Mentre AOSP stava giocando con RRO e cercando il modo migliore per incorporare il tutto, un team di sviluppatori ha chiamato BitSyko hanno lavorato insieme su uno sforzo collettivo chiamato "Strati". I livelli hanno ampliato la funzionalità RRO di serie in Android 5.1 Lollipop per consentire un cambio di risorse più complesso e consentire un maggiore controllo degli elementi per i temi rispetto a quanto possibile con RRO di serie. Poiché Layers si basava su RRO, i produttori di ROM dovevano aggiungere codice aggiuntivo per abilitare la funzionalità Layers nelle loro ROM poiché non tutti i temi Layers avrebbero funzionato su RRO di serie in Marshmallow.
Nel frattempo, Sony ha continuato i propri sforzi verso i temi Android. Ha iniziato a funzionare OMS (servizio di gestione overlay), un client per la gestione degli overlay che consentirebbe ai provider di controllare dinamicamente le priorità e abilitare e disabilitare gli overlay. OMS verrà incorporato in AOSP e si farà strada in Android O. Sviluppatore riconosciuto XDA Nicolaschum è stato in grado di confermare attraverso le sue fonti che Android O presenterà "overlay dinamici", che si ritiene siano un riferimento a OMS.
L'OMS causava conflitti con i Layer, poiché tradizionalmente tali funzioni erano sotto il controllo del themer. Per affrontare i problemi sollevati da OMS e per espandere la funzionalità dei livelli, BitSyko ha collaborato di nuovo (e si è rinominato in [progetto.]) creare Substrato. Substratum è un client con funzionalità OMS che tenta di conciliare la funzionalità dei livelli con l'OMS e prende in prestito anche altri elementi da altre soluzioni tematiche del passato. Le sovrapposizioni non erano più sovrapposte l'una sull'altra per tematizzare i singoli elementi, poiché ora tutti gli elementi necessari venivano inseriti in una singola sovrapposizione. Funzionalità come la compilazione sul dispositivo consentivano l'applicazione dei temi senza la necessità di un riavvio tra le modifiche, rendendolo possibile in modo significativo è più facile per gli utenti finali provare temi e sperimentare. Substratum è stato in fase di sviluppo attivo sin dal suo inizio e ne elenca tutte le caratteristiche funzionalità aggiuntive non rientrano nell'ambito di questo articolo, quindi passeremo all'argomento vero e proprio pezzo.
Substrato in Sungstratum
Come spiegato nella sezione precedente, Substratum è nato come un modo per estendere la funzionalità OMS standard e la funzionalità RRO standard (tramite i livelli). Il substrato doveva essere utilizzato insieme alle ROM basate su AOSP, poiché la maggior parte degli altri OEM avrebbe apportato modifiche contrastanti ciò non consentirebbe a Substratum di coesistere con le loro modifiche su una skin UX modificata, come quella di Samsung per esempio.
Samsung, da parte sua, stava anche lavorando a una soluzione tematica da utilizzare sui propri dispositivi su Nougat. A differenza di Sony, Samsung non ha mostrato alcun interesse a contribuire con il codice tematico ad AOSP. Ma poiché la soluzione di Samsung era piuttosto semplice, AOSP non perdeva molto. La soluzione tematica di Samsung integrata in Touchwiz ha fatto la sua vera apparizione sul Samsung Galaxy S6, ma, come accennato, era piuttosto limitata in ciò che poteva provare a ottenere. Prima di ciò, la sperimentazione iniziata con il Galaxy Alpha era limitata, sebbene la maggior parte degli elementi dell'interfaccia utente del sistema fossero al di fuori del suo ambito. I temi potrebbero cambiare gli sfondi e le icone così come alcune app stock Samsung come il dialer, i contatti, i messaggi e l'area di notifica, ad esempio.
A quanto pare, il motore tematico di Samsung si estende RRO come trovato in AOSP. Samsung ha anche ricreato la propria versione interna di OMS dopo aver esteso RRO, quindi le loro implementazioni sia di RRO che di OMS differiscono da AOSP. Ma sorprendentemente, non in misura molto elevata, un comportamento anomalo se si considera la particolarità e la complessità di Touchwiz. I temi che utilizzano i nuovi flagship Samsung hanno riferito che potrebbero installare overlay RRO e avere applicazioni di terze parti a tema.
Questo è stato lo spunto di cui il team [projekt.] aveva bisogno per esaminare il supporto ufficiale dei dispositivi Samsung su Substratum. Il team ha convertito una piccola quantità di codice dalla sezione RRO/Legacy dell'app, ma invece di richiedendo root e chiedendo di riavviare, hanno attivato intenti specifici in modo che gli overlay fossero installati. Il team ha quindi lavorato per garantire che le applicazioni interessate dai temi venissero chiuse forzatamente in background in modo da garantire un aggiornamento completo delle risorse al lancio successivo.
Abbiamo chiesto allo sviluppatore riconosciuto XDA Nicolaschum per fornirci alcuni spunti sulle sfide che il team ha dovuto affrontare lavorando contro l'implementazione closed source di RRO-OMS di Samsung:
Le sfide che abbiamo dovuto affrontare erano piuttosto oscure e sconosciute a molti che non avevano molta conoscenza comprendere i sistemi tematici, siano essi open source o closed source: tutto ha la sua prova e fase di errore. In questo caso, lavorando con Samsung, mi sono imbattuto in molti problemi, ma il principale è stato il mancato funzionamento degli intenti di sistema attivato per le sovrapposizioni al termine dell'installazione, ad esempio utilizzando ricevitori di trasmissione con “android.intento.azione. PACKAGE_ADDED” - il servizio tema nega tutto ciò che non fa parte della firma di sistema con un Samsung specifico il permesso del servizio a tema di riceverlo, quindi la parte più difficile sono le soluzioni alternative che abbiamo dovuto trovare in giro.
Il modo in cui utilizziamo Substratum insieme al Theme Engine di Samsung è utilizzando lo stesso sistema di loro. Utilizzano una versione altamente modificata del sistema Resource Runtime Overlay di Sony, abbreviato in RRO o noto come legacy tra gli utenti di Substratum. Tuttavia, ciò che differisce è che i temi Samsung hanno un'autorizzazione aggiuntiva che nasconde questi overlay dalle Impostazioni, quindi non puoi disinstallarli uno per uno manualmente. Utilizziamo lo stesso sistema, tuttavia utilizziamo l'implementazione di AOSP/Sony, motivo per cui Samsung Themes può gestire completamente il framework dei temi, mentre Le sovrapposizioni del substrato non possono toccare un target mediatore che non esiste "fwk" - come tutti sappiamo il framework è solo un pacchetto "android" nome.
Sembrava strano che [projekt.] fosse in grado di lavorare insieme all'implementazione RRO di Samsung con relativa facilità. Chiunque abbia mai lavorato su dispositivi Samsung può attestare quanto spesso Samsung renda le cose difficili. Abbiamo chiesto informazioni su eventuali blocchi specifici riscontrati dal team durante il porting:
Esiste effettivamente una sorta di meccanismo di sicurezza che ha interessato alcuni utenti, in cui gli overlay vengono ripristinati all'avvio. Ciò è dovuto al modo in cui Samsung avvia il proprio dispositivo. Dato che siamo per lo più tutti sulla versione 7.0 su TouchWiz/Samsung Experience, utilizziamo un nuovo metodo di "Ottimizzazione delle app" (puoi vederlo quando aggiorni il tuo telefono, è mostrerà una notifica con l'icona di Android Nougat, dicendo che si sta aggiornando in background), quindi questo modo di ottimizzare le app scarica anche il target pacchetti, interrompendo in definitiva il processo di idmapping all'avvio (a causa del pacchetto di destinazione non esistente) e quindi, alcune persone sperimentano scarichi di sovrapposizione dopo un riavviare.
Puoi vedere che ciò accade anche con alcuni temi Samsung, in particolare il tema Scuro/Nero di @envy~ - he rende nero il colore predefinito della barra di navigazione in Display -> Barra di navigazione, dove si trova il colore predefinito effettivo bianco. Dopo averlo impostato su nero, puoi aprire la tastiera e la barra di navigazione rimane nera. Questo verrà ripristinato in modo casuale anche al riavvio su molti dispositivi.
Con la tematizzazione che sta riacquistando importanza, quali sono i piani futuri di Substratum sui rami laterali come Sungstratum?
Nel futuro, uniremo una piccola app nel nostro componente aggiuntivo per i nostri attuali utenti in modo che possano farlo essere in grado di interrompere Samsung Theme Service se tutti i temi installati sui propri dispositivi sono installati da XDA. Pertanto, le persone che utilizzeranno temi XDA formattati con temi Samsung potranno utilizzare il componente aggiuntivo per evitare Il servizio Samsung ripristina il tema stock dopo ogni riavvio (perché non è stato installato dallo store Samsung ufficialmente). Richiederà una chiave sviluppatore Samsung gratuita disponibile per essere ottenuta dal loro sito, ma sarà pre-raggruppata con il download del componente aggiuntivo sungstratum.
Con le modifiche recenti e imminenti in AOSP e Android O, sembra che il sistema operativo di Google, un tempo alle prime armi, avrà ancora più personalizzazione da trasmettere all'utente. Alcuni OEM stanno addirittura pianificando di eliminare le loro interfacce utente personalizzate e i componenti aggiuntivi UX a favore di AOSP, e altri come Samsung si avvicinano abbastanza con le proprie soluzioni tematiche. Immaginiamo un futuro in cui i temi giocheranno un ruolo importante nell'esperienza utente di un numero ancora maggiore di persone: un sistema operativo dove controlli veramente l'aspetto del tuo dispositivo, dove l'estetica dell'interfaccia utente è adattata da te Voi. E non saremmo in grado di raggiungere un futuro del genere senza il potere collettivo di questa fantastica comunità e senza progetti come Substratum.
Dai un'occhiata all'integrazione del substrato per Samsung Nougat nei nostri forum Substratum!Substrato su GitHub