Spiegazione del framework Xposed per Nougat e sottomodulo abforce

In questo articolo esploriamo le differenze tra l'imminente rilascio di Xposed for Nougat di rovo89 e l'attuale implementazione disponibile per Nougat.

Il framework Xposed era - ed è tuttora - un modo importante per personalizzare il tuo dispositivo Android, compatibile praticamente con tutti i dispositivi, permettendoti di installare facilmente moduli per modificare praticamente qualsiasi dettaglio.

Vuoi ottenere tutte le funzionalità offerte da una ROM personalizzata senza doverne installare una?GravityBox OXTouchwiz lo farà. Desideri modificare determinate impostazioni in base all'app, ad esempio modificare il DPI di un'app specifica?Impostazioni dell'app ti ha coperto. Vorrei che gli sviluppatori di un'applicazione pensassero di aggiungere una funzionalità specifica, come se te lo permettesse Googlepersonalizzare Hangouts o Facebook permettendoti di farloscarica i post di Instagram che ti piacciono? Beh, non è necessario perché Xposed offre agli sviluppatori il potere di modificare praticamente qualsiasi cosa desideri, che si tratti di una funzionalità a livello di sistema che richiederebbe una ROM personalizzata o una modifica per uno specifico applicazione.

Il framework Xposed offre un grande vantaggio per gli sviluppatori, ovvero la facilità di sviluppo (rispetto alla necessità di compilare AOSP per modifiche alla ROM o alla modifica del codice Smali). Porta anche un enorme vantaggio per gli utenti: convenienza, poiché non li obbliga più a trovare e eseguire il flashing della ROM che fornisce ogni singola funzionalità che stanno cercando (invece, possono mescolare e abbinare moduli indipendenti) oltre al loro equilibrio target di stabilità e prestazione. Fa anche modificare le applicazioni molto più semplice in quanto non è necessario gestire firme diverse, che di conseguenza richiederebbero agli utenti di disinstallare l'originale versione o saltare attraverso determinati passaggi quando l'applicazione controlla la sua firma (qualcosa di cui si occupano i client YouTube modificati, ad esempio esempio).

L'unico problema? A causa della sua natura e della quantità di tempo libero, lo sviluppatore di Xposed (il nostro sviluppatore senior riconosciuto,rovo89), spesso è in ritardo rispetto alle versioni Android.Ci sono voluti circa quattro mesi per aggiornarsi e supportare Lollipop, e ci vuole circa un anno per arrivare a Nougat. Questo non è così grave come potrebbe sembrare se ci pensi quanti utenti Android utilizzano effettivamente Nougat (circa il 13,5%, anche se tieni presente che anche gli appassionati di Android, il pubblico target di Xposed, hanno maggiori probabilità di utilizzare Nougat). Tuttavia, può essere abbastanza fastidioso non poter utilizzare i tuoi moduli Xposed preferiti e allo stesso tempo avere la versione Android più recente e migliore.

Con la disponibilità del codice sorgente del framework Xposed (almeno per le versioni stabili e rilasciate), Developerabforce ha deciso di sporcarsi le mani e vedere se poteva portare alcune delle modifiche di rovo89 su Nougat. Optando per un approccio diverso e più semplice, abforce ha sostanzialmente adattato la parte di Xposed che in realtà fa la magia una volta installato e rende possibile includerlo durante la compilazione della propria ROM (dopodiché, sono emerse altre soluzioni alternative). Questo approccio è probabilmente molto diverso poiché ignora uno dei vantaggi principali di Xposed, ovvero essere disponibile a tutti con facilità. Tuttavia, ogni progresso è benvenuto e più persone che affrontano un compito possono essere vantaggiose e offrire nuove intuizioni. Il problema principale, a nostro avviso, è la disinformazione che circonda questo sviluppo (diffusa da altri "sviluppatori" e alcuni blog), così come alcune reazioni della comunità. Speriamo che questo articolo renda l’intero quadro più chiaro.


Prima di tutto, per comprendere il lavoro svolto (e tuttora svolto) nel framework ufficiale Xposed e nella versione di Abforce, dobbiamo esaminare come funziona il framework. Mentre il quadro stesso lo è solo una parte del progetto, di solito intendiamo sia il framework che il programma di installazione poiché il framework perde molti dei suoi vantaggi senza l'installatore universale, a cui occorre anche molto lavoro.

La potenza di Xposed deriva da un concetto semplice: qualsiasi metodo può essere "agganciato" (i metodi sono i più piccoli) parti che compongono qualsiasi programma) per eseguire il codice di un modulo Xposed prima, dopo o al posto di Esso. Facciamo un semplice esempio: supponiamo che Instagram utilizzi un metodo chiamato "showMenuOptions" quando fai clic sul pulsante del menu e che il metodo gestisca la visualizzazione dei pulsanti "Segnala" e "Condividi". Creando un modulo Xposed, puoi modificare quel metodo per aggiungere un pulsante aggiuntivo per scaricare l'immagine invece di condividerla, ad esempio. Le modifiche possono variare da semplici ritocchi (ad es. Registro delle modifiche del Play Store) a revisioni importanti (come GravityBox, che mira a fornire tutte le funzionalità che avrebbe una ROM personalizzata)!

Ciò rende Xposed potente, ma è solo una parte dell'equazione. Le altre parti sono la versatilità - o la possibilità di utilizzare Xposed praticamente su qualsiasi dispositivo disponibile (con una versione Android supportata) e la facilità d'uso. Tutto ciò che gli utenti devono fare è prendere il programma di installazione, che fa la sua magia e patcha dinamicamente il loro sistema per integrare Xposed. Per applicare un modulo è sufficiente installarlo, abilitarlo e riavviare. Non è necessario alcun problema, non è necessario eseguire il flashing di una ROM personalizzata (soprattutto quando le ROM personalizzate non sono sempre una scelta praticabile), non è necessario disinstallare un APK per installarne un altro firmato con una firma diversa. Tutto ciò di cui hai bisogno è root (puoi assolutamente avere una ROM personalizzata e questo ha senso la maggior parte delle volte; ma mentre Xposed può fornire la maggior parte delle funzionalità che può fornire una ROM personalizzata, va anche oltre).

Dietro questa semplicità c'è però molto lavoro:

  1. Per gli sviluppatori di moduli, l'API fornita deve essere stabile e garantire il funzionamento. Il framework Xposed non può fallire in modo casuale con determinate combinazioni di ROM e/o hook (tranne in casi eccezionali). In altre parole, se un utente ha un problema, quel problema dovrebbe essere colpa dell'utente (o no installando/abilitando qualcosa correttamente) o colpa dello sviluppatore del modulo (per avere bug nel file modulo). Ma dovrebbe essere quasi certo che il framework stesso funzioni come previsto e non sia la fonte degli errori che lascerebbero gli utenti frustrati e gli sviluppatori confusi.
  2. Per gli utenti, il framework deve essere facile da installare sul proprio dispositivo e sulla ROM, non importa se hanno un Samsung con l'ultima versione di TouchWiz o un Nexus con LineageOS installato. Il programma di installazione di Xposed gestisce tutto ciò dietro le quinte. È necessario molto lavoro per testare il programma di installazione e il framework su una varietà di dispositivi e combinazioni di ROM. Vengono rilevati errori, spesso dovuti a implementazioni diverse da parte degli OEM, che devono essere corretti per garantire l'affidabilità a tutti gli utenti.
  3. Le principali revisioni di Android a volte possono apportare cambiamenti importanti, il che richiede il ripensamento di parti dell'architettura del framework per adattarsi a tali cambiamenti. A volte, con le versioni più recenti emergono anche ulteriori opportunità, che richiedono tempo extra per avere un prodotto migliore. Quando ART fu introdotto per la prima volta, ad esempio, Xposed disabilitava alcune ottimizzazioni in modo che l'hook potesse funzionare correttamente. Nel caso di Nougat, ilcompilatore just-in-time (JIT). offre un'opportunità permantenere quelle ottimizzazioni.

Gran parte del lavoro di cui sopra riguarda dettagli minori, in cui la maggior parte del framework funziona come previsto, ma il incoerenze e problemi minori ne renderebbero l'utilizzo una scommessa per gli utenti e un incubo per il supporto e lo sviluppo del modulo sviluppatori. Il prodotto rilasciato, però, punta ad essere fruibile da tutti e senza sorprese. Ci sono alcune eccezioni, ovviamente, poiché i cambiamenti di alcuni OEM richiedono uno sforzo maggiore per adattarsi, ma quelli sono minori e la stragrande maggioranza degli utenti (e degli sviluppatori) può godere di un Xposed stabile e affidabile esperienza. Eventuali eccezioni riscontrate vengono documentatechiare esclusioni di responsabilità in modo che nessuno si sorprenda.

Tenendo presente quanto sopra, la visione di rovo89 per Xposed è quella di essere una soluzione stabile che fornisca un contratto affidabile e facile da usare per utenti e sviluppatori. La sua filosofia, anche se potresti non essere d'accordo, è semplice e comprensibile: un prodotto dovrebbe esserlo rilasciato quando è pronto per essere utilizzato come previsto, poiché rilasciarlo prima porta a più problemi di benefici.


Sottomodulo Xposed ART di abforce per Nougat

Siamo riluttanti a chiamare il lavoro di Abforce un "port" o un "Xposed non ufficiale" poiché è impreciso e fuorviante. Come abbiamo visto, Xposed ha due componenti principali:

  1. Il nucleo del framework Xposed stesso, che gestisce la magia dei metodi di hooking.
  2. Il programma di installazione Xposed, che garantisce che il framework sia facile da installare correttamente su tutti i dispositivi.

Ciò che ha fatto Abforce è stato il porting del codice Marshmallow di rovo89 sulla prima parte (solo il framework Xposed) su Nougat, in un modo che richiederebbe l'inserimento delle modifiche durante la compilazione della ROM personalizzata. In aggiunta a ciò, molte parti minori (ma importanti) del framework non sono completamente adattate a Nougat. In quanto tale, il comportamento può essere incoerente e, sebbene nella maggior parte dei casi funzioni (tuttavia nonpertutti), non è affidabile. Per gli sviluppatori e gli utenti dei moduli, fare affidamento su un'implementazione incompleta e incoerente sarebbe semplicemente fornire una brutta esperienza a tutte le parti coinvolte, con alcuni moduli non funzionano affatto o impediscono l'avvio del dispositivo. Mentre molti utenti potrebbero essere d'accordo con l'avere qualcosa piuttosto che niente, il punto di vista degli sviluppatori è ancora perfettamente comprensibile (soprattutto se si tiene presente che i disclaimer non fermano le domande di supporto fasulle e le lamentele).

(Oltre ai due punti principali di cui sopra, ci aspetteremo anche ulteriori modifiche al framework Xposed finale e ufficiale per sfruttare le modifiche introdotte in Nougat.)

Va notato che abforce ha fatto un ottimo lavoro quando la maggior parte si accontentava semplicemente di parlare, ma il suo lavoro è lontano dall'esperienza Xposed completa e nessuno sviluppatore o blog afferma il contrario (e sicuramente non abforce; ancora una volta, non abbiamo altro che rispetto verso tutti gli sviluppatori reali che stanno mettendo impegno e lavoro reale in questo). In effetti, come vedremo tra poco, alcune risposte della comunità (siano esse utenti o "sviluppatori") sono l'unica parte amara in questa catena di sviluppi.


Andiamo dritti al punto: ogni comunità ha elementi e aspetti negativi. Con una comunità così grande come quella degli appassionati di Android, gli elementi negativi possono sembrare una porzione enorme quando sono solo una piccola parte (considerevole, ma comunque minore in termini relativi). Senza edulcorare il tutto, però, gran parte della risposta della comunità allo sviluppo di Xposed for Nougat è stata estremamente infantile, sconsiderata o irresponsabile.

Il primo grosso problema è stato l'atteggiamento condiscendente mostrato da molti riguardo alla “morte di Xposed”, perché ci stava mettendo troppo tempo per essere rilasciato per Nougat. Questo nonostante rovo89 aggiornamentiEassicurazioni, e nonostante più o meno lo scenario esatto si sia verificato con Lollipop quando è stata introdotta la versione iniziale di ART. Va bene smettere di usare Xposed, ma non è insultare le capacità di nessuno o attaccare gli altri per avere una filosofia diversa o per non garantire che le tue esigenze di flash siano soddisfatte immediatamente. Ciò è ancora più vero per un progetto interamente gratuito, dove lo sviluppatore ha espresso la sua metodologia di sviluppo e le ragioni che ci stanno dietro.

Un altro problema con la risposta della comunità è stato l'incomprensione della natura del lavoro di Abforce, con molti che lo salutavano come il nuovo Xposed o lo pubblicizzavano come un porting per Nougat. Uno dei problemi principali è stato che gli "sviluppatori" si sono affrettati a offrire versioni flashabili senza comprendere (o preoccuparsi) degli inconvenienti, dal momento che non erano presenti disclaimer. offerto in alcuni thread, alcuni addirittura arrivando al punto di dare credito ad abforce e non a rovo89 (che è dietro la stragrande maggioranza del lavoro su Xposed) e altri contributori.

Come ultimo punto, riteniamo che dovremmo menzionare nuovamente la filosofia di sviluppo di rovo89. Con molti utenti che affermano che avere le ultime modifiche open source sarebbe vantaggioso. Anche se in teoria suona bene, lo ènon è così facile nella pratica soprattutto se consideriamo la spiegazione di rovo89:

[...] Credo che semplicemente respingere lo stato attuale non aiuterebbe il progetto. Forse vedremmo "qualche" rilascio molto veloce da parte delle persone che compilano il codice, vedi che sembra esserlo funziona bene e lo pubblicano come "il loro port", nonostante i problemi e le cose da fare di cui non sarebbero a conoscenza Di. Quindi chiamatemi egoista, ma non vorrei vedere un'uscita così incompiuta.[Fonte]

Che in realtà si è rivelata una previsione abbastanza buona della situazione attuale, con diversi "sviluppatori" che hanno fatto domanda modifiche di abforce e offrendo uno ZIP flashabile con avvisi minimi o assenti, crediti incompleti, il tutto richiedendo donazioni.


Ci auguriamo che queste spiegazioni abbiano chiarito alcuni dei tuoi dubbi e risolto possibili malintesi che potresti aver avuto. Xposed è stato un progetto straordinario che ha raggiunto un'enorme porzione della nostra community di appassionati e flashaholic, e Xposed for Nougat dovrebbe essere un'altra gigantesca pietra miliare piena di opportunità. Con moduli come GravityBox offrendo già il supporto Nougat, il progetto finito di rovo89 tornerà ad avere una serie di opzioni.


Sei entusiasta di Xposed sulla tua ROM Nougat? Fateci sapere nei commenti!