În acest articol, explorăm diferențele dintre viitoarea lansare Xposed for Nougat a rovo89 și implementarea actuală disponibilă pentru Nougat.
Cadrul Xposed a fost – și este încă – o modalitate majoră de a vă personaliza dispozitivul Android, compatibil cu aproape toate dispozitivele, permițându-vă să instalați cu ușurință module pentru a modifica practic orice detaliu.
Doriți să obțineți toate caracteristicile oferite de un ROM personalizat fără a fi nevoie să flashizați unul?GravityBox sauXTouchwiz va face asta. Doriți să modificați anumite setări în funcție de aplicație, cum ar fi modificarea DPI-ului unei anumite aplicații?Setările aplicației te-a acoperit. Doriți ca dezvoltatorii unei aplicații să se gândească să adauge o funcție specifică, cum ar fi permisiunea Googlepersonalizați Hangouts sau Facebook care vă permitedescărcați postările pe Instagram care vă plac? Ei bine, nu este nevoie pentru că Xposed oferă dezvoltatorilor puterea de a modifica aproape orice ei doriți, fie că este o caracteristică la nivel de sistem care ar necesita un ROM personalizat sau o modificare pentru un anumit aplicarea.
Cadrul Xposed vine cu un avantaj major pentru dezvoltatori, care este ușurința de dezvoltare (comparativ cu a trebui să compilați AOSP pentru ajustări ale ROM-ului sau să editați codul Smali). De asemenea, aduce un avantaj imens pentru utilizatori: comoditate, deoarece nu îi mai obligă să găsească și să flash ROM-ul care oferă fiecare caracteristică pe care o caută (în schimb, pot amesteca și potrivi module independente) pe lângă echilibrul țintă de stabilitate și performanţă. De asemenea, face ajustarea aplicațiilor mult mai ușor, deoarece nu este nevoie să se ocupe de semnături diferite, ceea ce, ca urmare, ar necesita utilizatorii să dezinstaleze originalul versiune sau săriți prin anumite cercuri atunci când aplicația își verifică semnătura (ceva cu care se confruntă clienții YouTube modificați, pentru instanță).
Singura problema? Datorită naturii sale și cantității de timp liber, dezvoltatorul Xposed (propriul nostru dezvoltator senior recunoscut,rovo89) are, adesea rămâne în urma versiunilor Android.A durat aproximativ patru luni pentru a fi actualizat pentru a sprijini Lollipop, și durează aproximativ un an să vină la Nougat. Acest lucru nu este atât de rău pe cât ar putea părea dacă te gândești câți utilizatori Android sunt de fapt pe Nougat (aproximativ 13,5%, deși rețineți că pasionații de Android, publicul țintă al lui Xposed, sunt, de asemenea, mai probabil să fie pe Nougat). Cu toate acestea, poate fi totuși destul de enervant să nu poți folosi modulele tale favorite Xposed și să ai cea mai recentă și cea mai bună versiune Android în același timp.
Cu codul sursă al cadrului Xposed fiind disponibil (cel puțin pentru versiunile stabile, lansate), dezvoltatorforţat a decis să-și murdărească mâinile și să vadă dacă poate porta unele dintre modificările lui rovo89 la Nougat. Optând pentru o abordare diferită și mai simplă, abforce a adaptat în esență partea din Xposed care de fapt face magia odată instalată și a făcut posibilă includerea acesteia la compilarea propriului ROM (după aceea, au apărut alte soluții). Această abordare este, fără îndoială, foarte diferită deoarece ignoră unul dintre avantajele de bază ale Xposed, care este disponibil pentru toată lumea cu ușurință. Cu toate acestea, toate progresele sunt binevenite și mai mulți șefi care abordează o sarcină pot fi avantajoase și oferă noi perspective. Problema principală, așa cum o vedem, este dezinformarea din jurul acestei dezvoltări (răspândită de alți „dezvoltatori” și unele bloguri), precum și unele dintre reacțiile comunității. Sperăm că acest articol va clarifica întreaga imagine.
În primul rând, pentru a înțelege munca care a mers -- și continuă -- în cadrul oficial Xposed, precum și în versiunea lui abforce, trebuie să ne uităm la modul în care funcționează cadrul. În timp ce cadrul în sine este doar o parte a proiectului, de obicei ne referim atât la cadru cât și la instalator deoarece cadrul își pierde multe dintre avantajele fără instalatorul universal, în care se depune și multă muncă.
Puterea lui Xposed vine dintr-un concept simplu: orice metodă poate fi „prinsă” (metodele fiind părți care alcătuiesc orice program) pentru ca codul unui modul Xposed să fie executat înainte, după sau în loc de aceasta. Să luăm un exemplu simplu: să presupunem că Instagram folosește o metodă numită „showMenuOptions” atunci când faceți clic pe butonul de meniu, iar metoda respectivă se ocupă de afișarea butoanelor „Raport” și „Share”. Prin crearea unui modul Xposed, puteți modifica acea metodă pentru a adăuga un buton suplimentar pentru a descărca imaginea în loc să o partajați, de exemplu. Modificările pot varia de la simple ajustări (de ex. Jurnalul de modificări din Magazin Play) la revizii majore (cum ar fi GravityBox, care își propune să ofere toate caracteristicile pe care le-ar avea un ROM personalizat)!
Asta face ca Xposed să fie puternic, dar este doar o parte a ecuației. Celelalte părți sunt versatilitatea - sau de fapt posibilitatea de a utiliza Xposed pe aproape orice dispozitiv de acolo (cu o versiune Android acceptată) și ușurința de utilizare. Tot ce trebuie să facă utilizatorii este să apuce programul de instalare, care își face magia și își corectează sistemul în mod dinamic pentru a integra Xposed. Pentru a aplica un modul, trebuie doar să îl instalați, să îl activați și să reporniți. Nu este nevoie de agitație, nu este nevoie să flashați un ROM personalizat (mai ales atunci când ROM-urile personalizate nu sunt întotdeauna o alegere viabilă), nu este nevoie să dezinstalați un APK pentru a instala un altul semnat cu o altă semnătură. Tot ce aveți nevoie este root (puteți avea absolut un ROM personalizat și asta are sens de multe ori; dar în timp ce Xposed poate oferi cea mai mare parte a funcționalității pe care o poate oferi un ROM personalizat, depășește și asta).
În spatele acestei simplități se află totuși multă muncă:
- Pentru dezvoltatorii de module, API-ul furnizat trebuie să fie stabil și să funcționeze garantat. Cadrul Xposed nu poate eșua aleatoriu cu anumite combinații de ROM și/sau de cârlig (cu excepția cazurilor excepționale). Cu alte cuvinte, dacă un utilizator are o problemă, acea problemă ar trebui să fie fie din vina utilizatorului (pentru nu instalarea/activarea corectă a ceva) sau vina dezvoltatorului modulului (pentru că are erori în fișierul modul). Dar ar trebui să fie aproape sigur că cadrul în sine funcționează conform intenției și nu este sursa erorilor care ar lăsa utilizatorii frustrați și dezvoltatorii confuzi.
- Pentru utilizatori, cadrul trebuie să fie ușor de instalat pe dispozitivul și pe ROM-ul lor, indiferent dacă au un Samsung care rulează cea mai recentă versiune de TouchWiz sau un Nexus cu LineageOS instalat. Programul de instalare Xposed se ocupă de toate acestea în culise. Trebuie depusă multă muncă pentru a testa programul de instalare și cadrul pe o varietate de dispozitive și combinații ROM. Sunt găsite erori, adesea din cauza implementărilor diferite de către OEM, și trebuie remediate pentru a asigura fiabilitatea pentru toți utilizatorii.
- Revizuirile majore ale Android pot aduce uneori schimbări majore, ceea ce necesită regândirea unor părți ale arhitecturii cadrului pentru a se adapta la aceste modificări. Uneori, oportunități suplimentare apar și cu versiuni mai noi, necesitând ceva timp suplimentar pentru a avea un produs mai bun. Când ART a fost introdus pentru prima dată, de exemplu, după ce Xposed a dezactivat anumite optimizări, astfel încât hookingul să poată funcționa corect. În cazul lui Nougat, celcompilator just-in-time (JIT). oferă o oportunitate de apăstrați acele optimizări.
O mare parte din lucrările de mai sus intră în detalii minore, unde cea mai mare parte a cadrului funcționează conform intenției, dar inconsecvențele și problemele minore ar face un joc de noroc de utilizat pentru utilizatori și un coșmar de asistență și dezvoltare pentru modul dezvoltatori. Produsul lansat, însă, își propune să fie utilizabil de toți și fără surprize. Există, desigur, câteva excepții, deoarece schimbările unor OEM necesită mai mult efort pentru a se adapta, dar la acestea sunt minore și marea majoritate a utilizatorilor (și dezvoltatorilor) se bucură de un Xposed stabil și de încredere experienţă. Orice excepții întâlnite sunt documentate cudeclinări clare pentru ca nimeni să nu fie surprins.
Având în vedere cele de mai sus, viziunea lui rovo89 pentru Xposed este să fie o soluție stabilă care să ofere un contract de încredere și ușor de utilizat pentru utilizatori și dezvoltatori. Filosofia lui, deși s-ar putea să nu fiți de acord cu ea, este simplă și de înțeles: un produs ar trebui să fie eliberat atunci când este gata de a fi folosit conform intenției, deoarece eliberarea lui înainte duce la mai multe probleme decât beneficii.
submodulul Xposed ART de la abforce pentru Nougat
Suntem reticenți să numim munca lui abforce un „port” sau un „Xposed neoficial”, deoarece este inexact și înșelător. După cum am văzut, Xposed are două componente majore:
- Nucleul cadrului Xposed în sine, care se ocupă de magia metodelor de agățare.
- Programul de instalare Xposed, care asigură că cadrul este ușor de instalat corect pe toate dispozitivele.
Ceea ce a făcut abforce a fost să port codul Marshmallow al lui rovo89 în prima parte (numai cadrul Xposed) la Nougat, într-un mod care ar necesita ca modificările să fie coapte în timp ce se compilează ROM-ul personalizat. În plus, multe părți minore (dar importante) ale cadrului nu sunt complet adaptate la Nougat. Ca atare, comportamentul poate fi inconsecvent și, în timp ce funcționează în mare parte (totuși nupentrutoata lumea), nu este de încredere. Pentru dezvoltatorii de module și utilizatori, bazarea pe o implementare incompletă și inconsecventă ar fi doar oferă o experiență proastă pentru toate părțile implicate, cu unele module nu funcționează deloc sau fac ca dispozitivul să nu pornească. În timp ce mulți utilizatori ar putea fi de acord să aibă ceva mai degrabă decât nimic, punctul de vedere al dezvoltatorilor este încă perfect de înțeles (mai ales dacă țineți cont de faptul că declinările de răspundere nu opresc întrebările false de asistență și plânsul).
(Pe lângă cele două puncte majore de mai sus, ne vom aștepta și la noi modificări ale cadrului Xposed final, oficial, pentru a profita de modificările introduse în Nougat.)
Trebuie remarcat faptul că abforce a făcut o treabă excelentă când cei mai mulți s-au mulțumit să vorbească pur și simplu, dar munca lui este departe de experiența completă Xposed și niciun dezvoltator sau blog nu pretinde altfel (și cu siguranță nu în mod obligatoriu; din nou, nu avem decât respect față de toți dezvoltatorii actuali care depun efort și muncă reală în asta). De fapt, după cum vom aborda puțin, o parte din răspunsurile comunității (fie că este vorba de utilizatori sau „dezvoltatori”) este singura parte acru din acest lanț de dezvoltări.
Să trecem prin urmărire și să trecem direct la subiect: orice comunitate are elemente și aspecte proaste. Cu o comunitate la fel de mare ca și pasionații de Android, elementele proaste pot părea o parte uriașă atunci când sunt doar o parte mică (de dimensiuni considerabile, dar încă minore în termeni relativi). Fără a-l acoperi cu zahăr, totuși, o mare parte din răspunsul comunității față de dezvoltarea Xposed for Nougat a fost extrem de copilăresc, neconsiderat sau iresponsabil.
Prima problemă majoră a fost atitudinea condescendentă arătată de mulți cu privire la „moartea lui Xposed”, deoarece durează prea mult să fie lansat pentru Nougat. Asta în ciuda lui rovo89 actualizărișiasigurăriși în ciuda scenariului exact care s-a întâmplat cu Lollipop când a fost introdusă versiunea inițială a ART. Este bine să nu mai folosiți Xposed, dar nu este pentru a insulta capacitatea cuiva sau pentru a ataca pe alții pentru că au o altă filozofie sau pentru a nu vă asigura că nevoile dvs. de flash sunt îndeplinite imediat. Acest lucru este și mai adevărat pentru un proiect complet gratuit, în care dezvoltatorul și-a exprimat metodologia de dezvoltare și motivele din spatele acesteia.
O altă problemă cu răspunsul comunității a fost înțelegerea greșită a naturii muncii abforce, mulți l-au salutat drept noul Xposed sau l-au promovat ca port pentru Nougat. O problemă majoră cu aceasta a fost cea a „dezvoltatorilor” care se grăbesc să ofere versiuni flashabile fără să înțeleagă (sau să le pese de) dezavantajele, deoarece nu au fost declinate. oferite deloc în unele fire, unele ajungând chiar atât de departe încât să crediteze abforce și nu rovo89 (care se află în spatele marii majorități a lucrărilor de pe Xposed) și altele contribuabili.
Ca un ultim punct, considerăm că ar trebui să aducem din nou în discuție filosofia de dezvoltare a rovo89. Cu mulți utilizatori vocali care susțin că a avea cele mai recente modificări open-source ar fi benefic. Deși acest lucru sună bine în teorie, estenu la fel de usor in practica mai ales dacă luăm în considerare explicația lui rovo89:
[...] Cred că doar împingerea stării actuale nu ar ajuta proiectul. Poate că am vedea „unele” lansări foarte rapide de către oamenii care compilează codul, vezi că pare să fie funcționează bine și îl publică ca „portul lor”, în ciuda problemelor și a lucrurilor de făcut de care nu ar fi conștienți de. Așa că spuneți-mă egoist, dar nu aș vrea să văd o astfel de lansare pe jumătate terminată.[Sursă]
Ceea ce sa dovedit de fapt a fi o predicție destul de bună a situației actuale, cu mai mulți „dezvoltatori” care aplică modificările abforce și oferind un ZIP intermitent cu avertismente minime sau fără avertismente, credite incomplete, toate în timp ce se solicită donatii.
Sperăm că aceste explicații v-au clarificat unele îndoieli și au abordat posibilele concepții greșite pe care le-ați fi avut. Xposed a fost un proiect uimitor care a ajuns la o mare parte a comunității noastre entuziaști și flashaholic, iar Xposed for Nougat ar trebui să fie o altă piatră de hotar gigantică plină de oportunități. Cu module precum GravityBox oferind deja suport Nougat, proiectul terminat al rovo89 va reveni la o serie de opțiuni.
Ești încântat de Xposed pe ROM-ul tău Nougat? Spune-ne în comentarii!