Cum substratul a adus mai multe alegeri unui TouchWiz inflexibil

Sungstratum de la echipa [projekt.] aduce toate bunătățile tematice ale RRO-OMS pe dispozitivele Samsung Nougat prin Substratum! Citiți mai departe pentru a afla mai multe!

Tematica Android a parcurs un drum lung, de la editări hacker la Substratum și acum, Sungstratum. Cu ani în urmă, cuvântul „temă” în discuțiile Android a fost adesea înlocuit de cuvântul „alegetor”, un semn din cap către Selectorul de teme T-Mobile găsit în CyanogenMod care a pus bazele care au făcut din Android un tema paradis. Abilitatea de a modifica aspectul sistemului de operare a oferit utilizatorilor o altă dimensiune de personalizare, permițându-le să facă modificări care fac dispozitivele lor mult mai personalizate.

Munca bună a continuat în două direcții diferite. Theme Chooser a evoluat în CyanogenMod Theme Engine, dar în ciuda anilor de eforturi depuse în resursele tematice, CMTE a devenit învechit când au apărut alte alternative.


RRO și straturi

Fundamentul uneia dintre alternative a fost stabilit atunci când contribuția de cod a Sony sub forma noului cadru numit

Suprapunerea resurselor de rulare (RRO) a fost acceptat în AOSP. Acest cadru oferă posibilitatea de a înlocui resursele aplicației în timpul rulării (de unde și numele). „Suprapunerea” în sine au fost prezente și acceptate în Android încă de la Gingerbread (și poate și mai devreme), folosit în primul rând pentru a schimba resurse pentru a face aplicațiile să funcționeze în acest specific dispozitiv. Abordarea Sony față de RRO a implicat modificarea managerului de active pentru a accepta apk-uri care foloseau resurse mapate cu alte resurse corespunzătoare existente pe dispozitiv. Aceste noi resurse din apk au fost apoi suprapuse peste resursele de bază numai în timpul execuției, permițând sistemului să funcționeze ca și cum aceste noi resurse ar fi făcut întotdeauna parte din el.

Cadrul RRO a fost fuzionat în AOSP înainte ca Lollipop 5.0 să fie făcut public, dar câteva versiuni inițiale ale 5.0 aveau părți ale cadrului rupte din cauza altor modificări. Previzualizările pentru dezvoltatori Android 6.0 Marshmallow au fost primele care au adăugat un cadru RRO funcțional, deși limitat, deschizând ușile personalizării chiar la nivelul stocului Android. Deci, cu excepția cazului în care un OEM a încercat în mod deliberat să se abată de la opțiunile de tematică Android stoc, un anumit nivelul de coerență ar putea fi păstrat în abordarea modului în care ar fi implementate „temele” în Android.

În timp ce AOSP se juca cu RRO și căuta cea mai bună modalitate de a le încorpora pe toate, o echipă de dezvoltatori numită BitSyko au lucrat împreună la un efort colectiv numit „Straturi". Straturile s-au extins pe funcționalitatea stocului RRO în Android 5.1 Lollipop pentru a permite comutarea mai complexă a resurselor și pentru a permite mai mult control al elementelor pentru teme decât este posibil cu stocul RRO. Deoarece Straturile construite în sus pe RRO, producătorii de ROM au trebuit să adauge cod suplimentar pentru a activa funcționalitatea Layers în ROM-urile lor, deoarece nu toate temele Layers ar funcționa pe stoc RRO în Marshmallow.

Între timp, Sony a continuat cu propriile eforturi către tematica Android. A început să lucreze OMS (Serviciul manager de suprapunere), un client pentru gestionarea suprapunerilor care ar permite furnizorilor să controleze în mod dinamic prioritățile și să activeze și să dezactiveze suprapunerile. OMS este fuzionat cu AOSP și își va face loc în Android O. Dezvoltator recunoscut XDA nicholaschum a putut confirma prin sursele sale că Android O va avea „suprapuneri dinamice”, despre care se crede că este o referință la OMS.

OMS a provocat conflicte cu Straturile, deoarece în mod tradițional, astfel de funcții erau sub controlul subiectului. Pentru a rezolva problemele aduse de OMS, precum și pentru a extinde funcționalitatea Straturilor, BitSyko a făcut echipă din nou (și s-a redenumit în [proiect.]) a crea Substratul. Substratum este un client cu funcționalitate OMS care încearcă să reconcilieze funcționalitatea Straturi cu OMS și, de asemenea, împrumută alte elemente din alte soluții de tematică anterioare. Suprapunerile nu mai erau suprapuse unele peste altele pentru a tema elementele individuale, deoarece acum, toate elementele necesare au fost injectate într-o singură suprapunere. Caracteristici precum compilarea pe dispozitiv au permis ca teme să fie aplicate fără a fi nevoie de o repornire între modificări, făcându-l semnificativ mai ușor pentru utilizatorii finali să încerce teme și să experimenteze. Substratum a fost în curs de dezvoltare activă de la începuturile sale și a enumerat toate caracteristicile sale și funcționalitatea adăugată ar fi în afara domeniului acestui articol, așa că vom trece la subiectul real al acestui articol bucată.


Substrat în Sungstratum

După cum sa explicat în secțiunea anterioară, Substratum a început ca o modalitate de a extinde funcționalitatea stoc OMS, precum și funcționalitatea stoc RRO (prin straturi). Substratul a fost destinat să fie utilizat alături de ROM-uri bazate pe AOSP, deoarece majoritatea celorlalți OEM ar fi făcut modificări contradictorii care nu ar permite Substratum să coexiste cu modificările lor pe un skin UX editat, cum ar fi cel de la Samsung pentru exemplu.

Samsung, de la sine, lucra și la o soluție de tematică pentru utilizarea pe propriile dispozitive pe Nougat. Spre deosebire de Sony, Samsung nu și-a arătat interesul să contribuie la codul de tematică la AOSP. Dar, deoarece soluția Samsung era destul de simplă, AOSP nu pierdea prea mult. Soluția de tematică Samsung inclusă în Touchwiz și-a făcut apariția reală pe Samsung Galaxy S6, dar, după cum am menționat, a fost destul de limitată în ceea ce ar putea încerca să realizeze. Înainte de aceasta, au existat experimente limitate care au început cu Galaxy Alpha, deși majoritatea elementelor de interfață a sistemului erau în afara domeniului său de aplicare. Temele ar putea schimba imaginile de fundal și pictogramele, precum și câteva aplicații stoc Samsung, cum ar fi dialer-ul, contactele, mesajele și zona de notificare, de exemplu.

După cum se dovedește, motorul de tematică al Samsung se extinde RRO așa cum se găsește în AOSP. Samsung și-a recreat, de asemenea, propria versiune internă a OMS după extinderea RRO, astfel încât implementările lor atât pentru RRO, cât și pentru OMS diferă de AOSP. Dar, în mod surprinzător, cu o sumă nu foarte mare -- un comportament anormal când luăm în considerare caracterul distinctiv și complexitatea Touchwiz. Temei care folosesc noile modele Samsung au raportat că ar putea instala suprapuneri RRO și le pot avea aplicații tematice ale terților.

Acesta a fost indiciul de care echipa [projekt.] a avut nevoie pentru a se uita la sprijinirea oficială a dispozitivelor Samsung pe Substratum. Echipa a convertit o cantitate mică de cod din secțiunea RRO/Legacy a aplicației lor, dar în loc solicitând root și cerând repornirea, au declanșat intenții specifice, astfel încât suprapunerile să fie instalate. Echipa a lucrat apoi pentru a se asigura că aplicațiile afectate prin teme au fost închise forțat în fundal, astfel încât să asigure o reîmprospătare completă a activelor la următoarea lansare.

Am întrebat XDA Recognized Developer nicholaschum pentru a ne oferi câteva informații despre provocările cu care s-a confruntat echipa când a lucrat împotriva implementării RRO-OMS de către Samsung:

Provocările cu care ne-am confruntat au fost destul de obscure și necunoscute de mulți care nu au prea multe cunoștințe înțelegerea sistemelor de tematică, indiferent dacă sunt open source sau closed source - totul are propria încercare și faza de eroare. În acest caz, lucrând cu Samsung, am dat peste multe probleme, dar principala fiind intenția sistemului declanșat pentru suprapuneri după ce instalarea este completă - cum ar fi utilizarea receptoarelor de transmisie cu „android.intenție.acțiune. PACKAGE_ADDED” - Serviciul de teme neagă orice nu face parte din semnătura sistemului cu un anumit Samsung permisiunea serviciului tematic de la primirea acesteia, deci cea mai grea parte sunt soluțiile prin care a trebuit să găsim o cale în jurul.

Modul în care folosim Substratum împreună cu motorul tematic al Samsung este prin utilizarea aceluiași sistem ca și ei. Ei folosesc o versiune foarte modificată a sistemului Sony Resource Runtime Overlay, abreviată ca RRO sau cunoscută ca moștenire printre utilizatorii Substratum. Cu toate acestea, ceea ce diferă este că temele Samsung au o permisiune suplimentară care ascunde aceste suprapuneri din Setări, așa că nu le puteți dezinstala una câte una manual. Folosim același sistem, totuși utilizăm implementarea AOSP/Sony, motiv pentru care temele Samsung pot teme complet, în timp ce Suprapunerile de substrat nu pot atinge o țintă de mediator care nu există „fwk” - așa cum știm cu toții, framework-ul este doar un pachet „android”. Nume.

Părea ciudat că [projekt.] a putut lucra împreună cu implementarea RRO de la Samsung cu relativă ușurință. Oricine a lucrat vreodată pe dispozitive Samsung poate să mărturisească cât de dificile face Samsung adesea lucrurile. Am întrebat pentru orice bloc specific pe care echipa l-a întâlnit în timpul portului lor:

Într-adevăr, există un fel de mecanism de securitate care a afectat câțiva utilizatori - unde suprapunerile revin la pornire. Acest lucru se datorează modului în care Samsung își pornește dispozitivul. Deoarece suntem în mare parte pe 7.0 pe TouchWiz/Samsung Experience, folosim o nouă metodă de „Optimizarea aplicațiilor” (puteți vedea acest lucru atunci când actualizați telefonul, va afișa o notificare cu pictograma Android Nougat, spunând că se face upgrade în fundal), așa că acest mod de optimizare a aplicațiilor descarcă și ținta pachete, întrerupând în cele din urmă procesul de mapare a idmapping la pornire (din cauza pachetului țintă care nu există) și, astfel, câțiva oameni experimentează descărcări de suprapunere după o reporniți.

De asemenea, puteți vedea că acest lucru se întâmplă și cu câteva teme Samsung, în special tema Dark/Black a lui @envy~ - el face culoarea implicită a barei de navigare din Display -> Bara de navigare la negru, unde este culoarea implicită reală alb. După ce îl setați pe negru, puteți deschide tastatura și bara de navigare rămâne neagră. Acest lucru va fi revenit aleatoriu la repornire și pe multe dispozitive.

Odată cu tematica recâștigând proeminența, care sunt planurile lui Substratum pe ramurile laterale precum Sungstratum?

În continuare, vom îmbina o mică aplicație în suplimentul nostru pentru utilizatorii noștri actuali, astfel încât aceștia să o facă să poată opri Samsung Theme Service dacă toate temele instalate pe dispozitivele lor sunt instalate de la XDA. Deci, persoanele care vor folosi teme formatate cu temă Samsung de la XDA, veți putea folosi suplimentul pentru a preveni Serviciul Samsung de la revenirea la tema stocului după fiecare repornire (pentru că nu a fost instalat din magazinul Samsung oficial). Va necesita o cheie de dezvoltator Samsung gratuită, disponibilă pentru a fi obținută de pe site-ul lor, dar va fi pre-împachetată cu descărcarea suplimentului sungstratum.


Odată cu modificările recente și viitoare ale AOSP și Android O, se pare că sistemul de operare Google, odinioară, va avea și mai multă personalizare transmisă utilizatorului. Anumiți OEM plănuiesc chiar să scape de interfețele de utilizator personalizate și de suplimentele UX în favoarea AOSP, iar alții precum Samsung trec suficient de aproape cu propriile lor soluții de tematică. Ne imaginăm un viitor în care temele joacă un rol major în experiența utilizatorului a și mai multor oameni -- un sistem de operare unde controlezi cu adevărat modul în care arată dispozitivul tău, unde estetica interfeței cu utilizatorul este adaptată de tine tu. Și nu am putea ajunge la un astfel de viitor fără puterea colectivă a acestei comunități minunate și proiecte precum Substratum.


Consultați Integrarea Substratum pentru Samsung Nougat pe forumurile noastre Substratum!Substrat pe GitHub