Xposed Framework ufficiale per Android Nougat è qui - Scarica subito i tuoi moduli preferiti!

Poiché l'ecosistema Android è maturato nel corso degli anni, sempre meno utenti trovano motivi per cui devono eseguire il root del proprio dispositivo. C'è una tendenza crescente degli utenti che scelgono di rimanere nel firmware di serie, sia perché trovano l'esperienza soddisfacente o non vogliono giocare a un gioco cat-and-mouse con l'API SafetyNet di Google. Ma se hai chiesto a un utente all'inizio del 2016 perché ha effettuato il root dei suoi telefoni, forse il motivo numero uno è stato dato per poter installare Xposed Framework. È passato più di un anno dalla prima versione di Android 7.0 Nougat, ma la lunga attesa è finalmente finita: Xposed Framework ufficiale per Android Nougat è finalmente disponibile.

Nel corso dell'ultimo anno, lo sviluppatore riconosciuto senior rovo89, lo sviluppatore principale di Xposed Framework, ha fornito numerosi aggiornamenti sullo stato di avanzamento di Xposed Framework per Android Nougat. Per alcuni, l'attesa è stata tollerabile principalmente a causa dell'enorme numero di funzionalità aggiuntive offerte da Xposed Framework in Android Marshmallow. Ma molti altri sono passati a una vita senza Xposed sui loro dispositivi.

Abbiamo visto un assaggio di rinnovata eccitazione nel progetto quando l'abilità di sviluppatore ha rilasciato un sottomodulo ART per AOSP 7.1.2, ma come la nostra stessa GermainZ sottolinea che sarebbe meglio aspettare la versione ufficiale di Xposed Framework poiché l'implementazione di abforce richiedeva che il framework fosse integrato in ROM personalizzate. Inoltre, questa implementazione non ufficiale era incompleta, portando a comportamenti incoerenti o errati con alcuni moduli Xposed.

Mentre abforce ha fatto un ottimo lavoro nel far funzionare il suo Xposed non ufficiale su Android 7.1 Nougat, la sua implementazione è andata contro la visione di rovo89 per Xposed - che dovrebbe essere una soluzione stabile che fornisce un contratto affidabile e facile da usare sia per utenti che per sviluppatori. Ciò che intendiamo con questo è che non solo i moduli dovrebbero funzionare senza problemi per gli utenti, ma il modo in cui i moduli sono impostati dovrebbe essere coerente tra gli utenti in modo che gli sviluppatori sappiano se un modulo Xposed è responsabile di un arresto anomalo dell'app.

Non dobbiamo più preoccuparci di problemi come rovo89 (dopo un po 'di aiuto da parte dello sviluppatore riconosciuto wanam) è ora pronto per rilasciare un aggiornamento ufficiale di Xposed Framework e Installer, portando la compatibilità con Android 7.0 / 7.1 Nougat . Ciò significa che non dovrai installare una ROM personalizzata o fare confusione con le versioni instabili lampeggianti per goderti Xposed: basta eseguire il root del telefono e installare l'ultima applicazione di installazione Xposed (collegata sotto) e Xposed Installer farà la magia dell'installazione di Xposed per te

Programma di installazione Xposed Navigazione nel repository del modulo

Questo potrebbe sembrare un po 'in ritardo in alcune menti, soprattutto dal momento che questa versione arriva oltre un mese dopo il rilascio di Android 8.0 Oreo. Tieni presente che pochissimi dispositivi avranno accesso a una versione stabile di Android Oreo per molti mesi a venire. Android Oreo è solo sullo 0, 2% di tutti i dispositivi Android (rispetto al ~ 18% su Nougat) secondo le ultime statistiche di Google, ma molti dei nostri utenti sono il tipo che ama installare ROM personalizzate per rimanere al limite.

Distribuzione della versione Android a partire da ottobre 2017. Fonte: Google

Sebbene anche se installi una porta non ufficiale di Android 8.0 disponibile su una miriade di dispositivi sui nostri forum, molte di queste porte non sono lo stato di driver giornaliero. Quindi, a meno che tu non sia disposto a sborsare centinaia di dollari per un nuovissimo Google Pixel 2/2 XL, Sony Xperia XZ1 / XZ1 Compact o un dispositivo imminente come Huawei Mate 10, probabilmente sarai in grado di spremere diversi mesi di utilizzo di Xposed Framework su Android Nougat.

Se suona come te, vai al thread del forum ufficiale per Xposed Installer e le zip del framework per farlo funzionare sul tuo dispositivo Android Nougat.

Scarica Xposed Installer v3.1.2 (Allegato)

Download dell'installer Xposed per Nougat 7.0 (SDK24)

Download dell'installer Xposed per Nougat 7.1 (SDK25)

Per i molti nuovi utenti che non hanno familiarità con ciò che Xposed Framework può essere utilizzato o come funziona, spiegheremo brevemente Xposed Framework di seguito, perché dovresti essere entusiasta e perché lo sviluppo su questo ha richiesto il tempo necessario .


Perché installare Xposed Framework?

Vuoi ottenere funzionalità ROM personalizzate senza eseguire il flashing di una ROM personalizzata? La madre di tutti i moduli Xposed per ottimizzare la tua ROM, nota come GravityBox, ti copre. Vuoi personalizzare le impostazioni di visualizzazione in base all'app? Prova le impostazioni dell'app. Che ne dici di personalizzare determinate applicazioni come Hangouts? O modificando Instagram in modo da poter scaricare qualunque post ti piaccia?

Controllo delle notifiche GravityBox

Impostazioni dell'app

Xposed offre agli sviluppatori la possibilità di modificare praticamente qualsiasi cosa desiderino, principalmente per le singole applicazioni, ma è possibile modificare anche le funzionalità a livello di sistema. Gli esempi che abbiamo elencato sono solo la punta dell'iceberg. Il numero di funzionalità aggiuntive che è possibile aggiungere o di app che è possibile modificare è incredibile: basta cercare nel repository ufficiale Xposed Module per vedere di persona. Tieni presente che potrebbe essere necessario aggiornare alcuni moduli per questa nuova versione e per il supporto Nougat, quindi assicurati di controllare prima di installarli sulla ROM Nougat!

Come funzionano i moduli Xposed?

L'essenza è che Xposed Framework consente ai moduli di "agganciarsi" ai metodi Java di qualsiasi applicazione, sia essa installata dall'utente o un'applicazione di sistema. Xposed consente ai moduli di eseguire i propri metodi prima, durante o al posto dei metodi originali dell'applicazione di destinazione.

Ad esempio, immagina un metodo utilizzato nell'applicazione Gmail che pubblica notifiche per nuove e-mail. Per impostazione predefinita, il metodo crea una nuova notifica con pulsanti per archiviare / eliminare o rispondere all'e-mail. Un modulo Xposed potrebbe essere fatto per agganciarsi a questo metodo e aggiungere un nuovo pulsante come "mark as read". (Sì, c'è già un modulo proprio per quello.)

Quanto sopra è una semplificazione eccessiva del risultato finale di ciò che Xposed Framework consente ai suoi moduli di fare. Il Framework stesso è incredibilmente complesso e farlo funzionare quasi universalmente su dispositivi rooted - senza bisogno di una ROM personalizzata - è il motivo per cui Xposed per Android Nougat ha impiegato così tanto tempo per completarsi.

Perché lo sviluppo di Xposed richiede così tanto tempo?

La magia dietro Xposed - ciò che consente ai moduli di collegarsi ai metodi di altre app - richiede una profonda conoscenza del funzionamento di Zygote e Android Runtime (ART). Questi requisiti impediscono già a un gran numero di persone di contribuire al progetto, ma il problema è aggravato dal fatto che rovo89 è stato il principale contribuente di Xposed negli ultimi 5 anni .

Questo è il motivo per cui le richieste di open sourcing sono state negate le modifiche apportate a Xposed dall'ultima versione pubblica di Xposed. È una sua idea, ed è il migliore a capirlo e modificarlo, quindi aggiungere più forza lavoro al progetto in una fase così avanzata potrebbe semplicemente ritardare ulteriormente il progetto.

Inoltre, se rovo89 aggiornava continuamente la sua fonte, era preoccupato che qualcuno avrebbe preso il codice incompiuto per costruire un Xposed Framework semi-funzionante senza che l'installatore Xposed universale lo accompagnasse. (Questa cosa esatta è accaduta comunque con l'implementazione di abforce, e il risultante pasticcio di vari metodi di installazione ha giustificato l'esitazione di rovo89.)

Pertanto, la cosa migliore che potevamo fare era di dare a rovo89 il tempo di lavorare al suo progetto per animali domestici. Xposed non è il suo lavoro completo o part-time. È semplicemente un hobby, uno che ha fatto a beneficio della comunità per 5 anni. Un progetto complesso come Xposed richiede tempo per lavorare e poi testare - tempo che non aveva spesso a causa dei suoi altri obblighi. Nell'ultimo anno sono stati compiuti progressi, proprio come rovo89 ha documentato in alcuni dei suoi aggiornamenti pubblici sulla questione fino a quando sia Xposed Framework stesso che Xposed Installer sono pronti per il rilascio.

Cosa ha fatto rovo89 per far funzionare Xposed in Nougat?

Le nuove versioni di Android a volte apportano modifiche al modo in cui funziona ART, il che potrebbe richiedere la rielaborazione di parti di Xposed. Android 7.0 Nougat ha introdotto un compilatore Just-in-Time per ART per aiutare a migliorare le prestazioni di runtime delle applicazioni, ad esempio. Ma il framework Xposed non ufficiale di abforce semplicemente disabilita molte ottimizzazioni ART in modo che l'aggancio del metodo possa funzionare correttamente.

Ottimizzazioni ART in Android Nougat. Fonte: Google

Al contrario, l'implementazione di rovo89 mantiene tutte le ottimizzazioni ART in Android Nougat ricompilando il chiamante di un metodo utilizzando JIT e mantenendo ancora gli hook del metodo in atto. Ciò significa che puoi godere dei vantaggi di un modulo Xposed senza sacrificare le prestazioni disabilitando forzatamente le ottimizzazioni ART.

Per ulteriori dettagli su cosa ha fatto rovo89 per ottenere finalmente un metodo di aggancio affidabile in Xposed per Android Nougat, ti consigliamo di leggere la seguente dichiarazione che ci ha fornito.

Dichiarazione completa di rovo89

Il nucleo di Xposed è ovviamente la sua capacità di agganciare i metodi Java, ovvero lasciare che i moduli eseguano il codice prima, dopo o al posto di questi metodi. Praticamente ogni altra funzionalità si basa su questo, quindi è fondamentale che funzioni sempre come previsto. Il concetto generale è stato lo stesso da quando ho inventato Xposed cinque anni fa, richiede di cambiare il punto di ingresso del metodo. Questo inizia a fallire quando il punto di ingresso non viene verificato durante l'esecuzione, il che è in realtà il caso di alcune delle ottimizzazioni in ART.

Un esempio è quando il punto di ingresso è già noto al momento della compilazione, quindi i chiamanti possono passare direttamente a questo indirizzo senza cercarlo. Un altro esempio è in linea. Considera questo esempio:

ART è abbastanza intelligente da notare che il metodo due () è molto semplice e quindi incorpora la logica nel metodo doSomething (), in questo modo:

Puoi ancora agganciare il metodo due (), ma non verrà più chiamato da doSomething () in fase di runtime, e così non sarà il tuo callback. L'ARTE è ancora più intelligente: si rende conto che la magia è sempre 42 e quindi la condizione non può mai essere soddisfatta. Quindi l'intero metodo doSomething () è in realtà un no-op:

Nelle versioni precedenti, Xposed era solito disabilitare completamente queste ottimizzazioni e forzare la ricompilazione di tutto. Ciò è venuto con diversi aspetti negativi. Prima di tutto, gli sviluppatori di ART stanno facendo un lavoro fantastico nel massimizzare le prestazioni con le loro ottimizzazioni, e disabilitarle in parte porta necessariamente a prestazioni inferiori (non ho mai misurato quanto). Quindi, la ricompilazione in sé non è sempre facile e mi ha causato molti mal di testa, soprattutto all'inizio. Infine, i file ricompilati occupano spazio, oltre ai file precompilati su / system.

Le versioni non ufficiali per Nougat disabilitano anche queste ottimizzazioni, ma non impongono la ricompilazione (perché la porta è stata originariamente creata per essere integrata nella ROM). Pertanto, gli hook potrebbero non essere eseguiti a volte.

Con la versione ufficiale, riuscirai a mantenere il codice ottimizzato e avrai comunque hook affidabili. Come funziona? Bene, Xposed registra tutte le chiamate effettuate. Ciò accade durante la compilazione degli APK o in un passaggio separato per il codice preottimizzato. Questi dati aggiuntivi non occupano molto spazio, ma consentono a Xposed di scoprire dove potrebbe essere stato incorporato un determinato metodo. Quindi, quando un metodo viene agganciato, tutti i suoi chiamanti verranno disattivati, ovvero il loro codice non verrà più utilizzato. Questo assicura che il callback hook verrà sicuramente chiamato. E se il chiamante viene utilizzato pesantemente, verrà semplicemente ricompilato con JIT, questa volta con la consapevolezza che il metodo è agganciato e quindi alcune delle ottimizzazioni non si applicano. Ciò significa che gli effetti dei metodi di aggancio sono ridotti al minimo indispensabile. Sìì!

Ora vai avanti e provalo. Assicurati di utilizzare Xposed Installer 3.1.2, poiché il percorso di configurazione doveva essere modificato per supportare la crittografia basata su file.

Conclusione

Ci auguriamo che tu sia così entusiasta del rilascio di Xposed per Android 7.X Nougat. L'attesa è stata lunga, ma inevitabile data la pura complessità di Xposed. Se sei ancora confuso su cos'è Xposed o su come funziona, non preoccuparti. Pochissime persone (inclusi noi) in realtà capiscono come funziona. Gli sviluppatori come rovo89 fanno del loro meglio per impacchettare il loro lavoro in modo da non dover veramente capire cosa sta succedendo sotto il cofano.

Ti piace Xposed Framework? Valuta di fare una donazione a rovo89 per il fantastico lavoro che fa. Se pensi di avere ciò che serve per contribuire al progetto, dai un'occhiata alla pagina GitHub di rovo89 di seguito.

Dona a rovo89

Contribuisci a Xposed

Cerchi moduli Xposed? Dai un'occhiata al nostro subforum Xposed Framework Module o scarica l'applicazione Labs e sfoglia la nostra raccolta di moduli Xposed.

Forum dei moduli Xposed

Scarica Labs

Progresso Android Oreo

Nel caso ti stia chiedendo, ecco come sono fatti i progressi su come ottenere Xposed per Android Oreo:

Ho già iniziato a lavorare su Android 8.0. Ci sono alcune nuove funzionalità linguistiche che dovrò guardare, ma il concetto generale dovrebbe ancora funzionare. Ciò include tutto il lavoro sull'invalidamento del codice compilato di tutti i chiamanti quando viene agganciato un metodo, che ha richiesto molto più tempo quando ho lavorato su Nougat. Quindi sono davvero fiducioso che questa volta sarò molto più veloce. Android 8.1 non dovrebbe essere molto diverso, quindi non mi aspetto molto lavoro aggiuntivo per questo.