Non molti ne sono a conoscenza e Google lo fa raramente, ma il sistema operativo Android ha incorporato un framework tematico per alcuni anni. Si chiama Runtime Resource Overlay framework, RRO in breve, e riduce drasticamente lo sforzo necessario per creare temi personalizzati per il tuo telefono.
Con RRO, puoi creare rapidamente temi che possono modificare l'aspetto di quasi tutte le app installate su un dispositivo Android. Poiché i componenti dell'interfaccia utente di sistema di Android, tra cui la barra di navigazione, la barra di stato, il vassoio delle notifiche e il vassoio delle impostazioni rapide, appartengono a un'app, puoi anche modificarne l'aspetto. E la parte migliore è che non devi scrivere alcun codice Java qualunque.
Qual è il problema, chiedi? Bene, il framework può essere utilizzato solo da app privilegiate. Più in particolare, dalle app installate in una posizione a cui è possibile accedere solo dall'utente root o da qualcuno che sta creando una ROM personalizzata.
In questo suggerimento rapido, ti mostrerò come utilizzare il framework per creare un tema semplice che modifichi l'aspetto della barra delle impostazioni rapide.
Per poter seguire, avrai bisogno di quanto segue:
Se non hai mai utilizzato l'SDK Android dalla riga di comando e non hai familiarità con il firmware di Android, leggere le seguenti esercitazioni sarebbe una buona idea:
Sebbene la logica aziendale di un'app Android sia scritta in Java o Kotlin, la sua interfaccia utente viene principalmente creata utilizzando file XML. Un'app Android ben scritta avrà risorse XML separate che definiscono layout, colori, stringhe e attributi. Il framework RRO, come suggerisce il nome, consente di sovrapporre tali risorse XML alle proprie risorse XML personalizzate. Tuttavia, non è limitato alle sole risorse XML. Permette anche di modificare i drawable e i font di un'applicazione.
Un'app che utilizza il framework RRO di solito non contiene alcun codice Java. È composto solo da file XML e, se necessario, da font e immagini. Tuttavia, come tutte le app Android, deve essere un APK valido e firmato.
Non avremo bisogno di Android Studio per creare un progetto che utilizza il framework RRO. Per ora, tutto ciò che serve è una nuova directory di progetto e una AndroidManifest.xml file. Sei libero di crearli con un file explorer o un terminale.
mkdir MyOverlays e& cd MyOverlays toccano AndroidManifest.xml
Il file manifest deve contenere il nome del pacchetto dell'applicazione e il nome del pacchetto dell'applicazione per cui si creano le sovrapposizioni. Perché oggi vogliamo cambiare l'aspetto della barra delle impostazioni rapide, dobbiamo usare com.android.systemui
come nome del pacchetto di destinazione.
A questo punto, siamo pronti per iniziare a utilizzare il vassoio delle impostazioni rapide e qualsiasi altro componente dell'interfaccia utente del sistema Android.
Per sovrapporre una risorsa dell'applicazione di destinazione, la tua applicazione deve avere una risorsa con lo stesso nome. Ad esempio, se vuoi cambiare i colori dell'applicazione di destinazione, di solito devi sovrapporne la sua colors.xml file con il tuo colors.xml file.
Per semplificare le cose, il framework RRO non si aspetta che l'overlay sia completo e in grado di gestire tutti i dettagli presenti nella risorsa originale. In altre parole, l'overlay deve avere solo i dettagli che si desidera modificare.
Per rendere le cose più chiare, diciamo che vogliamo cambiare il colore di sfondo della barra delle impostazioni rapide dal blu-grigio predefinito a un'arancia profonda. Il valore del colore è specificato nel res / valori / colors.xml file dell'app UI di sistema. Se sei curioso sul suo contenuto, puoi dare un'occhiata al file sul repository ufficiale di Git per Android.
Per cambiare il colore, ora devi creare un res / valori / colors.xml file nel tuo progetto.
mkdir -p res / values tocca res / values / colors.xml
Dentro il colors.xml file, per cambiare il colore di sfondo del vassoio, dobbiamo scegliere come target un colore chiamato system_primary_color
. Pertanto, aggiungi il seguente codice XML al file:
# FFBF360C
Vale la pena notare che l'XML di cui sopra non è diverso dall'XML che useresti durante la creazione di app normali con Android Studio.
Il nostro tema semplice è pronto! Se lo desideri, puoi aggiungerne altri
tag al file per cambiare gli altri colori dell'interfaccia utente del sistema.
Ora utilizzeremo lo strumento di pacchettizzazione delle risorse Android, aapt
in breve, che fa parte dell'SDK di Android, per convertire il nostro semplice progetto in un file APK che può essere utilizzato dalla piattaforma Android.
Per generare l'APK, devi semplicemente indicare aapt
al file manifest, il res directory e la piattaforma di destinazione android.jar file. Ovviamente, devi anche specificare il nome che vuoi dare al file APK.
pacchetto aapt -M AndroidManifest.xml -S res / \ -I ~ / Android / Sdk / piattaforme / android-23 / android.jar \ -F myoverlays.apk.u
Nel comando precedente, puoi vedere che ho scelto di nominare il file APK myoverlays.apk.u. Questo perché il nostro APK è attualmente non firmato e non allineato.
Per firmarlo, è necessario utilizzare il jarsigner
strumento. Per ora, ti suggerisco di firmarlo con il keystore di debug di Android predefinito.
jarsigner -keystore ~ / .android / debug.keystore \ myoverlays.apk.u androiddebugkey
Infine, devi allineare, e quindi ottimizzare, l'APK usando il Zipalign
strumento. Come input, lo strumento si aspetta i nomi degli APK non allineati e allineati, insieme a un numero che specifica i limiti di allineamento. A partire dal 2017, il numero non può essere nient'altro che 4
.
zipalign 4 myoverlays.apk.u myoverlays.apk
Per installare un APK che utilizza il framework RRO, devi semplicemente inserirlo nel / Sistema / vendor / overlay directory. La directory, per impostazione predefinita, appartiene a un filesystem di sola lettura ed è accessibile solo all'utente root. Se sei uno sviluppatore ROM personalizzato o hai rootato il tuo dispositivo Android, non dovresti avere problemi a installare l'APK.
In questo suggerimento rapido, tuttavia, ti mostrerò come installare l'APK su un emulatore. In questo modo, puoi testare la sovrapposizione senza mettere a repentaglio il tuo telefono.
Inizia accendendo un emulatore nella modalità filesystem scrivibile usando il emulatore
strumento da riga di comando.
emulatore -avd Nexus_5X_API_23 -writable-system
Ora puoi usare il adb
strumento per ottenere i privilegi di root sull'emulatore, se non li hai già.
adb root
Quindi, rimontare il /sistema filesystem come scrivibile, usando ancora adb
.
adb remount
Il / Sistema / vendor / overlay la directory non esiste sull'emulatore. Devi crearlo manualmente tu stesso. Il modo più semplice per farlo è avviando una shell sull'emulatore.
adb shell mkdir -p / system / vendor / overlay exit
Infine, spingere l'APK nella directory usando adb
.
adb push myoverlays.apk / system / vendor / overlay
Attendi alcuni secondi che Android rilevi e installi l'APK, quindi riavvia l'emulatore affinché il tema diventi effettivo.
Dopo il riavvio, se si estrae la barra delle impostazioni rapide, si dovrebbe essere in grado di vedere il tema in azione.
In questo suggerimento rapido, hai imparato come utilizzare il framework Runtime Resource Overlay per creare temi per Android. Sebbene il tema che abbiamo creato fosse estremamente semplice, puoi applicare le abilità acquisite oggi per creare temi molto più complessi. Ad esempio, puoi sovrapporre il strings.xml file per cambiare le etichette degli elementi dell'interfaccia utente viene visualizzata un'app. Allo stesso modo, puoi sovrapporre il dimens.xml file per modificare le dimensioni degli elementi dell'interfaccia utente di un'app.
La documentazione relativa al framework RRO è molto scarsa. Tuttavia, ci sono molte cose che puoi apprendere esaminando il codice sorgente della piattaforma Android.
Mentre sei qui, dai uno sguardo ad alcuni dei nostri altri post sullo sviluppo di Android!