Il framework ufficiale Xposed per Android Nougat è qui

Dopo una lunga attesa, lo sviluppatore di Xposed Framework ha annunciato ufficialmente che il progetto ora supporta Android Nougat. Installa subito i moduli Xposed!

Poiché l'ecosistema Android è maturato nel corso degli anni, sempre meno utenti trovano motivi per cui dovrebbero eseguire il root del proprio dispositivo. C'è una tendenza crescente di utenti che scelgono di rimanere sul firmware stock, sia perché trovano l'esperienza soddisfacente sia perché non vogliono giocare gioco del gatto e del topo con l'API SafetyNet di Google. Ma se all’inizio del 2016 chiedevi a un utente perché avesse effettuato il rooting dei suoi telefoni, forse il motivo principale fornito era quello di poterlo fare installare il framework Xposed. È stato più di un anno da Android 7.0 Nougat è stato rilasciato per la prima volta, ma la lunga attesa è finalmente finita: Il framework ufficiale Xposed per Android Nougat è finalmente disponibile.

Nel corso dell'ultimo anno, XDA Senior Recognized Developer rovo89, lo sviluppatore principale di Xposed Framework, ha fornito

parecchiaggiornamenti sullo stato di avanzamento di Xposed Framework per Android Nougat. Per alcuni, il l'attesa è stata tollerabile principalmente a causa dell'enorme numero di funzionalità aggiuntive offerte da Xposed Framework Android Marshmallow. Ma molti altri sono passati a una vita senza Xposed sui propri dispositivi.

Abbiamo visto un assaggio di rinnovato entusiasmo nel progetto quando lo sviluppatore Abforce ha rilasciato un file Sottomodulo ART per AOSP 7.1.2, ma come sottolinea il nostro GermainZ faresti meglio ad aspettare l'Xposed Framework ufficiale rilascio poiché l'implementazione di Abforce richiedeva l'integrazione del framework nelle ROM personalizzate. Inoltre, questa implementazione non ufficiale era incompleta, portando a comportamenti incoerenti o difettosi con alcuni Xposed Moduli.

Sebbene Abforce abbia 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: dovrebbe essere una soluzione stabile che fornisca un contratto affidabile e facile da usare per utenti e sviluppatori nello stesso modo. Ciò che intendiamo con questo è che non solo i moduli dovrebbero funzionare senza problemi per gli utenti, ma anche il modo in cui i moduli sono impostati up dovrebbe essere coerente tra gli utenti in modo che gli sviluppatori sappiano se un modulo Xposed è responsabile o meno di un'app incidente.

Non dobbiamo più preoccuparci di problemi come rovo89 (dopo l'aiuto di XDA Recognized Developer wanam) è ora pronto a rilasciare un aggiornamento ufficiale per Xposed Framework e Installer, portando compatibilità con Android 7.0/7.1 Nougat. Ciò significa che non dovrai installare una ROM personalizzata o doverti preoccupare del flashing di versioni instabili goditi Xposed: basta eseguire il root del telefono e installare l'ultima applicazione Xposed Installer (collegata di seguito) e IL Xposed Installer farà la magia di installare Xposed per te.

Programma di installazione Xposed che esplora il repository dei moduli

Questo potrebbe sembrare un po' tardi per alcune menti, soprattutto da quando arriva questa versione più di 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 lo è solo su 0.2% di tutti i dispositivi Android (rispetto a circa il 18% su Nougat) secondo le ultime statistiche di Google, ma molti dei nostri utenti sono tipi che amano installare ROM personalizzate per rimanere all'avanguardia.

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

Anche se installi un port non ufficiale di Android 8.0 disponibili su una miriade di dispositivi sui nostri forum, molte di queste porte non sono lo stato del driver giornaliero. Quindi, a meno che tu non sia disposto a sborsare centinaia di dollari per un prodotto nuovo di zecca Google Pixel 2/2 XL, Sony Xperia XZ1/XZ1 compattoo un dispositivo imminente come il Huawei Mate 10, probabilmente sarai in grado di sfruttare diversi mesi di utilizzo di Xposed Framework su Android Nougat.

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

Scarica Xposed Installer v3.1.2 (Allegato)

Download del programma di installazione Xposed per Nougat 7.0 (SDK24).

Download del programma di installazione Xposed per Nougat 7.1 (SDK25).

Per i molti nuovi utenti che non sanno bene per cosa può essere utilizzato Xposed Framework o come funziona, noi spiegherà brevemente l'Xposed Framework di seguito, perché dovresti essere entusiasta e perché lo sviluppo di questo ha richiesto così tanto tempo fatto.


Perché installare Xposed Framework?

Desideri ottenere funzionalità ROM personalizzate senza eseguire il flashing di una ROM personalizzata? La madre di tutti i moduli Xposed per modificare la tua ROM, nota come GravityBox, hai coperto. Desideri personalizzare le impostazioni di visualizzazione in base all'app? Tentativo Impostazioni dell'app. Che ne dici di personalizzare alcune applicazioni come Hangout? O modificare Instagram in modo da poterlo fare scarica i post che preferisci?

Xposed offre agli sviluppatori la possibilità di farlo modificare praticamente quello che vogliono-per lo più rivolto a 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 puoi aggiungere o di app che puoi modificare è incredibile: basta cercare nel file repository ufficiale del modulo Xposed per vedere di persona. Tieni presente che alcuni moduli potrebbero dover essere aggiornati per questa nuova versione e per il supporto di Nougat, quindi assicurati di controllare prima di installarli sulla tua ROM Nougat!

Come funzionano i moduli Xposed?

Il succo è che Xposed Framework consente ai moduli di farlo "agganciarsi" ai metodi Java di qualsiasi applicazione—sia esso installato dall'utente o un'applicazione di sistema. Xposed consente ai moduli di eseguire i propri metodi prima, durante o al posto di i metodi originali dell'applicazione di destinazione.

Ad esempio, immagina un metodo utilizzato nell'applicazione Gmail che pubblica notifiche per le nuove email. Per impostazione predefinita, il metodo crea una nuova notifica con pulsanti per archiviare/eliminare o rispondere all'e-mail. È possibile creare un modulo Xposed per collegarsi a questo metodo e aggiungere un nuovo pulsante come "segna come letto". (Sì, c'è già un modulo proprio per questo.)

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 essere completato.

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

La magia dietro Xposed, ciò che consente ai moduli di agganciarsi ai metodi di altre app, richiede una profonda conoscenza di come Zygote e il Tempo di esecuzione Android (ARTE) funziona. Questi requisiti già impediscono a un gran numero di persone di contribuire al progetto, ma il problema è aggravato dal fatto che rovo89 è stato il principale collaboratore di Xposed negli ultimi 5 anni.

Ecco perché le richieste di open source per le modifiche apportate a Xposed dall'ultima versione pubblica di Xposed sono state respinte. È il frutto della sua idea ed è il migliore nel capirlo e modificarlo, quindi aggiungendo più manodopera al progetto in una fase così avanzata potrebbe semplicemente ritardare ulteriormente il progetto.

Inoltre, se rovo89 aggiornasse continuamente la sua fonte, era preoccupato che qualcuno prenderebbe il codice incompleto per costruire un Xposed Framework semi-funzionante senza l'Xposed Installer universale ad accompagnarlo. (Questa cosa esatta è accaduta comunque con l'implementazione di abforce, e il conseguente caos di vari metodi di installazione ha giustificato l'esitazione di rovo89.)

Pertanto, la cosa migliore che potevamo fare era dare a rovo89 il tempo di lavorare sul suo progetto preferito. Xposed non è il suo lavoro completo, e nemmeno part-time. È semplicemente un hobby, che pratica a beneficio della comunità da 5 anni. Un progetto complesso come Xposed richiede tempo per lavorare e poi testare, tempo che spesso non aveva a disposizione a causa degli altri suoi obblighi. Progresso era è stato realizzato nell'ultimo anno, proprio come rovo89 ha documentato in alcuni dei suoi aggiornamenti pubblici sulla questione fino a quando finalmente sia lo stesso Xposed Framework che l'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 funzionamento di ART, che potrebbero richiedere la rielaborazione di parti di Xposed. Android 7.0 Nougat ha introdotto un compilatore Just-in-Time per ART per contribuire a migliorare le prestazioni di runtime delle applicazioni, ad esempio. Ma il framework Xposed non ufficiale di abforce disabilita semplicemente molte ottimizzazioni ART in modo che l'hook 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 gli hook del metodo ancora attivi. Ciò significa che puoi goderti i vantaggi di un modulo Xposed senza sacrificare le prestazioni disabilitando forzatamente le ottimizzazioni ART.

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

Dichiarazione completa di rovo89

Il cuore di Xposed è ovviamente la sua capacità di agganciare i metodi Java, cioè di lasciare che i moduli eseguano il codice prima, dopo o al posto di questi metodi. Praticamente tutte le altre funzionalità si basano su questo, quindi è fondamentale che funzioni sempre come previsto. Il concetto generale è 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 controllato durante l'esecuzione, come in realtà è il caso di alcune ottimizzazioni in ART.

Un esempio è quando il punto di ingresso è già noto in fase di compilazione, i chiamanti possono passare direttamente a questo indirizzo senza cercarlo. Un altro esempio è l'inlining. Considera questo esempio:

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

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

Nelle versioni precedenti, Xposed disabilitava completamente queste ottimizzazioni e forzava la ricompilazione di tutto. Ciò ha comportato diversi aspetti negativi. Prima di tutto, gli sviluppatori ART stanno facendo un lavoro fantastico nel massimizzare le prestazioni del loro ottimizzazioni e disabilitarle in parte porta necessariamente a prestazioni inferiori (non ho mai misurato quanto Anche se). Poi la ricompilazione in sé non è sempre facile e mi ha causato non pochi grattacapi, soprattutto all'inizio. Infine, i file ricompilati occupano spazio, oltre ai file precompilati su /system.

Anche le versioni non ufficiali di Nougat disabilitano queste ottimizzazioni, ma non forzano la ricompilazione (perché il port è stato originariamente realizzato per essere integrato nella ROM). Pertanto, a volte gli hook potrebbero non essere eseguiti.

Con la versione ufficiale, potrai mantenere il codice ottimizzato e avere 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. Pertanto, quando un metodo viene agganciato, tutti i suoi chiamanti verranno deottimizzati, ovvero il loro codice non verrà più utilizzato. Ciò garantisce che la richiamata dell'hook verrà sicuramente chiamata. E se il chiamante viene utilizzato molto, verrà semplicemente ricompilato con JIT, questa volta con la consapevolezza che il metodo è agganciato e quindi alcune 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.

Per saperne di più

Conclusione

Ci auguriamo che tu sia entusiasta quanto noi del rilascio di Xposed per Android 7.X Nougat. L'attesa è stata lunga, ma inevitabile data l'enorme complessità di Xposed. Se sei ancora confuso su cosa sia Xposed o come funzioni, non preoccuparti. Pochissime persone (noi compresi) capiscono effettivamente come funziona. Sviluppatori come rovo89 fanno del loro meglio per confezionare il loro lavoro in modo che tu non debba davvero capire cosa sta succedendo sotto il cofano.

Ti piace il framework Xposed? Considera l'idea di fare una donazione a rovo89 per lo straordinario lavoro che svolge. Se pensi di avere quello che serve per contribuire al progetto, controlla la pagina GitHub di rovo89 qui sotto.

Fai una donazione a rovo89

Contribuisci a Xposed

Cerchi moduli Xposed? Dai un'occhiata al nostro forum secondario del modulo Xposed Framework o scarica l'applicazione XDA Labs e sfoglia la nostra raccolta di moduli Xposed.

Forum dei moduli Xposed

Scarica XDA Labs

Progressi Android Oreo

Nel caso te lo stia chiedendo, ecco come sono i progressi nell'ottenere Xposed per Android Oreo:

Ho già iniziato a lavorare su Android 8.0. Ci sono alcuni nuove funzionalità linguistiche che dovrò esaminare, ma il concetto generale dovrebbe funzionare ancora. Ciò include tutto il lavoro sull'invalidazione del codice compilato di qualsiasi chiamante quando un metodo viene agganciato, che ha richiesto di gran lunga la maggior parte del tempo quando ho lavorato su Nougat. Quindi sono davvero fiducioso che sarò molto più veloce questa volta. Android 8.1non dovrebbe essere molto diverso, quindi non mi aspetto molto lavoro aggiuntivo.