Android Oreo introduce l'interfaccia della riga di comando per i temi

Android Oreo include il supporto dell'interfaccia a riga di comando per i temi RRO, suggerendo che il sistema operativo si sta avvicinando sempre di più al supporto dei temi a livello di sistema.

Con il lancio di Android Oreo arriva molto tempo dedicato alla ricerca di chicche nascoste nel codice sorgente. In passato, il team di ingegneri Android ha abbiamo parlato dell'abilitazione dei temi in Android O. Abbiamo riferito a maggio che la seconda Developer Preview di Android O potrebbe essere stata un accenno al supporto di Google per Overlay Manager Service (OMS) e Runtime Resource Overlay (RRO), ma ora sappiamo per certo che lo era. Android Oreo ora, tecnicamente, supporta la tematizzazione OMS/RRO e fornisce anche un'interfaccia per abilitare o disabilitare i temi, a condizione che tu possa digerire utilizzando la riga di comando.

Aggiornamento: Substratum ha utilizzato questi comandi con le anteprime degli sviluppatori e ora con Oreo da quando erano disponibili!


Cosa sono RRO e OMS?

RRO è stato sviluppato internamente da Sony per la funzionalità dei temi sulla linea Sony Xperia. Gli sviluppatori che ne hanno riconosciuto l'importanza hanno lavorato per estendere il suo supporto ad altre ROM e con esso sono arrivati ​​i temi RRO su una moltitudine di dispositivi, non solo su quelli Sony. Ha ingegnosamente sostituito le risorse in fase di esecuzione dell'app, una facilità d'uso mai vista da altre opzioni tematiche all'epoca. Questo si è evoluto in OMS, anch'esso sviluppato internamente da Sony. Il famoso

Gestore dei livelli originariamente utilizzava il tema RRO, ma OMS è stato successivamente adattato in quello che ora è noto come Substratum ed è ora il framework tematico più familiare agli utenti sui nostri forum. Le ROM sui nostri forum con commit OMS indicano che supportano il motore di temi standard di Substratum. La "modalità Legacy" all'interno di Substratum utilizza il tema RRO.


Android Oreo introduce i comandi dei temi

Sembra che Google ora desideri supportare pienamente questo tipo di tema in AOSP, possibilmente spostandosi verso un gestore di temi completo e supportato dal sistema. Su Android Gerrit, Google ha apportato una serie di modifiche negli ultimi mesi (e con Android Oreo) che suggeriscono mosse per abilitare il motore dei temi a livello di sistema. Le modifiche sono riportate di seguito, con i collegamenti ai rispettivi commit.

  • Comandi sovrapposti
  • Introduzione di OverlayManagerService (OMS).
  • Una nuova autorizzazione denominata CHANGE_OVERLAY_PACKAGES

Tutti questi cambiamenti indicano un passaggio da parte di Google verso una qualche forma di applicazione di temi di sistema da includere in futuro. L'autorizzazione sopra elencata richiede privilegi di sistema e quindi significa che solo un'applicazione di sistema (o un'applicazione con accesso root) può invocare questa autorizzazione. È comunque interessante, poiché mostra che Google sta finalmente lavorando qualcosa.

Allora perché solo tecnicamente Android Oreo supporta i temi? Bene, la risposta semplice è che mentre puoi invocare il metodo di sistema per installare i temi, farlo si rivelerebbe piuttosto inutile. Questo perché, anche se puoi utilizzare la nuova interfaccia a riga di comando per gestire i temi installati, in realtà non puoi installa nuovi temi senza accesso root perché i temi devono essere inseriti in una directory riservata all'utente spazio. Con l'accesso root puoi semplicemente abilitare comunque un tema Substratum, quindi non è necessario farlo nel nuovo modo. Google non ha incluso un'applicazione di sistema per personalizzare il dispositivo, quindi fino ad allora non c'è alcun vantaggio nel provare a farlo nel modo appena incluso.

L'interfaccia tematica della riga di comando

Noi di XDA abbiamo testato il comando su un Google Pixel con la versione Android Oreo. Abbiamo deciso di testare alcuni comandi e di utilizzarli per primi

cmd overlays list

per visualizzare tutti gli overlay preinstallati. Abbiamo notato l'esistenza di un "com.google.android.theme.pixel", disabilitandolo e abilitando invece "android.auto_generated_rro__" eseguendo i seguenti comandi.

Come puoi vedere qui, l'overlay standard è disabilitato e quello generato automaticamente è abilitato. Eseguendo il nostro comando per visualizzare nuovamente gli overlay installati, vediamo il seguente output.

Ciò si traduce in un'applicazione per le impostazioni del sistema Android con un nuovo tema sul nostro Google Pixel. Tieni presente che l'elenco di overlay sopra include anche temi installati utilizzando Substratum e siamo stati in grado di abilitarli/disabilitarli altrettanto facilmente.

tema auto_generated_rro

Abbiamo trovato anche un altro comando mentre scavavamo nel sorgente. Il comando è il seguente

cmd overlay dump --user 0

ci dà il seguente output.

Produzione

Impostazioni

android.auto_generated_rro__: 0 {

mNomePacchetto...: android.auto_generated_rro__

IDutentem...: 0

mTargetPackageName.: android

mBaseCodePath...: /vendor/overlay/framework-res__auto_generated_rro.apk

mStato...: STATO_ENABLED

mIsEnabled...: vero

mIsStatic...: vero

}

com.google.android.theme.pixel: 0 {

mNomePacchetto...: com.google.android.theme.pixel

IDutentem...: 0

mTargetPackageName.: android

mBaseCodePath...: /vendor/overlay/Pixel/PixelThemeOverlay.apk

mStato...: STATO_DISABILITATO

mIsEnabled...: falso

mIsStatic...: falso

}

Overlay predefiniti: com.google.android.theme.pixel

Cache di PackageInfo

2 pacchetti (i)

Per saperne di più

Quindi, come si può vedere, Google ha dedicato molto lavoro allo sviluppo del motore dei temi e alla sua integrazione nel sorgente AOSP. Sembra che se dovesse essere aggiunto a livello di sistema, i temi verrebbero abilitati nel sintonizzatore dell'interfaccia utente del sistema. Anche Google ha fornito informazioni agli OEM, quindi è possibile che altri OEM possano abilitare il supporto dei temi basato sulla versione AOSP in futuro su Android Oreo.

Nel complesso, questo è uno sviluppo molto interessante. La tematizzazione è una delle tante parti che definiscono Android come un sistema operativo completamente personalizzabile sul tuo telefono, anche se attualmente richiede il root per i temi a livello di sistema. Se in futuro potesse funzionare senza accesso root, sarebbe un passo importante verso la libertà dell'utente. Naturalmente, potrebbe essere bloccato nel sintonizzatore dell'interfaccia utente del sistema per un bel po' di tempo (poiché i temi danneggiati possono danneggiare le app), ma consentendo consentire all'utente di sfruttare anche solo il supporto nativo dei temi è un'enorme aggiunta al funzionamento mobile sistema.