Sfat rapid Tema Android Cu Cadrul Supraom de Resurse pentru Runtime

Nu mulți știu despre asta, iar Google rareori o face publicitate, dar sistemul de operare Android are un cadru tematic construit în el de câțiva ani. Se numește cadrul de acoperire pentru resursele de timp, RRO pe scurt, reducând drastic efortul necesar pentru a crea teme personalizate pentru telefonul dvs..

Cu RRO, puteți crea rapid teme care pot schimba aspectul și aproape orice aplicație instalată pe un dispozitiv Android. Deoarece componentele interfeței utilizator de sistem Android, inclusiv bara de navigare, bara de stare, tava de notificări și tava de setări rapide, aparțin ele însele unei aplicații, puteți schimba aspectul acestora. Și cea mai bună parte este că nu trebuie să scrieți niciun cod Java.

Care e prinderea, întrebi? Ei bine, cadrul poate fi utilizat numai de aplicații privilegiate. Mai precis, prin aplicații instalate într-o locație care poate fi accesată numai de utilizatorul rădăcină sau de către cineva care creează un ROM personalizat.

În acest sfat rapid, vă voi arăta cum să utilizați cadrul pentru a crea o temă simplă care modifică aspectul tava de setări rapide.

Cerințe preliminare

Pentru a putea urmări, veți avea nevoie de următoarele:

  • un emulator Android care rulează Android Marshmallow sau mai mare
  • cea mai recentă versiune a SDK-ului Android

Dacă nu ați folosit SDK Android din linia de comandă și nu sunteți familiarizat cu firmware-ul Android, citirea următoarelor tutoriale ar fi o idee bună:

Ce face RRO într-adevăr?

Deși logica de afaceri a aplicației Android este scrisă în Java sau Kotlin, interfața sa de utilizator este în primul rând creată utilizând fișiere XML. O aplicație Android bine scrisă va avea resurse XML separate care definesc aspectul, culorile, șirurile și atributele sale. Cadrul RRO, așa cum sugerează și numele, vă permite să suprapuneți aceste resurse XML cu propriile resurse personalizate XML. Nu este limitat doar la resurse XML, deși. De asemenea, vă permite să modificați extensiile și fonturile unei aplicații.

O aplicație care utilizează cadrul RRO nu conține de obicei niciun cod Java. Este compus numai din fișiere XML și, dacă este necesar, fonturi și imagini. Cu toate acestea, ca toate aplicațiile Android, trebuie să fie un fișier APK valid și semnat.

1. Creați un proiect nou

Nu vom avea nevoie de aplicația Android Studio pentru a crea un proiect care utilizează cadrul RRO. Pentru moment, tot ce aveți nevoie este un nou director și un proiect AndroidManifest.xml fişier. Puteți să le creați fie cu un explorator de fișiere, fie cu un terminal.

mkdir MyOverlays && cd MyOverlays ating AndroidManifest.xml

Fișierul manifest trebuie să conțină numele pachetului aplicației dvs. și numele pachetului aplicației pentru care creați suprapuneri. Pentru că vrem să schimbăm aspectul tava cu setări rapide astăzi, trebuie să folosim com.android.systemui ca nume de pachet țintă.

   

În acest moment, suntem gata să lansăm tava de setări rapide - și orice alte componente ale interfeței UI de sistem Android.

2. Creați o temă

Pentru a suprapune o resursă a aplicației țintă, aplicația dvs. trebuie să aibă o resursă cu același nume. De exemplu, dacă doriți să schimbați culorile aplicației țintă, va trebui de obicei să o suprapuneți colors.xml fișier cu propria dvs. colors.xml fişier.

Pentru a vă face ușor lucrurile, cadrul RRO nu se așteaptă ca suprapunerea să fie cuprinzătoare și capabilă să se ocupe de toate detaliile prezente în resursa originală. Cu alte cuvinte, suprapunerea trebuie să aibă doar acele detalii pe care doriți să le schimbați.

Pentru a face lucrurile mai clare, să presupunem că dorim să schimbăm culoarea de fundal a tava de setări rapide de la albastru-gri la un portocaliu profund. Valoarea culorii este specificată în res / valori / colors.xml fișierul aplicației de sistem UI. Dacă sunteți interesat de conținutul său, puteți să aruncați o privire la fișierul din depozitul oficial Android Git.

Pentru a schimba culoarea, trebuie să creați acum res / valori / colors.xml fișier în proiectul dvs..

mkdir -p res / values ​​atingeți res / values ​​/ colors.xml

În interiorul colors.xml fișier, pentru a modifica culoarea de fundal a tăvii, trebuie să vizăm o anumită culoare system_primary_color. Prin urmare, adăugați următorul fișier XML în fișier:

  # FFBF360C  

Merită menționat faptul că XML-ul de mai sus nu se deosebește de XML pe care l-ați utiliza în timp ce creați aplicații normale cu Android Studio.

Tema noastră simplă este gata! Dacă doriți, puteți adăuga mai multe  tag-uri în fișier pentru a schimba alte culori ale interfeței UI.

3. Generați un fișier APK

Acum vom folosi Instrumentul de ambalare a dispozitivelor Android, aapt pe scurt, care face parte din Android SDK, pentru a converti proiectul nostru simplu într-un fișier APK care poate fi folosit de platforma Android.

Pentru a genera fișierul APK, trebuie doar să indicați aapt la fișierul manifest, res directorul și platforma țintă android.jar fişier. Desigur, trebuie să specificați și numele pe care doriți să-l acordați fișierului APK.

aapt pachet -M AndroidManifest.xml -S res / \ -I ~ / Android / Sdk / platforms / android-23 / android.jar \ -F myoverlays.apk.u

În comanda de mai sus, puteți vedea că am ales să denumesc fișierul APK myoverlays.apk.u. Asta pentru că fișierul nostru APK este în prezent atât nesemnat, cât și nealiniat.

Pentru al semna, trebuie să utilizați jarsigner instrument. Pentru moment, vă sugerez să îl semnați cu setul implicit de depanare pentru depanare Android. 

jarsigner -keystore ~ ​​/ .android / debug.keystore \ myoverlays.apk.u androiddebugkey

În cele din urmă, trebuie să aliniați - și astfel să optimizați - APK-ul utilizând zipalign instrument. Ca intrări, instrumentul așteaptă numele fișierelor APK nealiniate și aliniate, împreună cu un număr care specifică limitele de aliniere. Din 2017, numărul nu poate fi altceva decât 4.

zopalign 4 myoverlays.apk.u myoverlays.apk

4. Instalați fișierul APK

Pentru a instala un fișier APK care utilizează cadrul RRO, trebuie pur și simplu să îl plasați înăuntru / Sistem / furnizor / suprapunere director. Directorul, în mod implicit, aparține unui sistem de fișiere numai pentru citire și este accesibil numai utilizatorului rădăcină. Dacă sunteți dezvoltator ROM personalizat sau dacă ați înrădăcit dispozitivul Android, nu trebuie să aveți probleme cu instalarea fișierului APK.

În acest sfat rapid, cu toate acestea, vă voi arăta cum să instalați APK-ul pe un emulator. În acest fel, puteți testa suprapunerea fără a vă pune în pericol telefonul.

Începeți prin lansarea unui emulator în modul de scriere sistem de fișiere cu ajutorul funcției emulator instrument de linie de comandă.

emulator -avd Nexus_5X_API_23-sistem de scriere

Acum puteți folosi adb pentru a obține privilegii root pe emulator, dacă nu le aveți deja.

adb rădăcină

Apoi, remontați /sistem sistem de fișiere ca scriitor, folosind din nou adb.

adb remount

/ Sistem / furnizor / suprapunere directorul nu există pe emulator. Trebuie să-l creați manual. Cel mai simplu mod de a face acest lucru este pornirea unui shell pe emulator.

adb shell mkdir -p / sistem / furnizor / ieșire suprapusă

În sfârșit, împingeți APK-ul în director utilizând adb.

adb împinge myoverlays.apk / system / vendor / overlay

Așteptați câteva secunde pentru ca Android să detecteze și să instaleze fișierul APK, apoi reporniți emulatorul pentru ca tema să aibă efect.

După repornire, dacă trageți în jos tava de setări rapide, ar trebui să puteți vedea tema în acțiune.

Concluzie

În acest sfat rapid, ați învățat cum să utilizați cadrul de acoperire pentru resursele runtime pentru a crea teme pentru Android. Deși tema pe care am creat-o a fost extrem de simplă, puteți aplica abilitățile pe care le-ați câștigat astăzi pentru a crea teme mult mai complexe. De exemplu, puteți suprapune strings.xml fișier pentru a modifica etichetele elementelor UI pe care este afișată o aplicație. În mod similar, puteți suprapune dimens.xml fișier pentru a modifica dimensiunile elementelor UI ale unei aplicații.

Documentația despre cadrul RRO este foarte limitată. Cu toate acestea, există multe lucruri pe care le puteți învăța despre acest lucru prin accesarea codului sursă al platformei Android.

În timp ce sunteți aici, consultați câteva dintre celelalte postări ale noastre privind dezvoltarea Android!

Cod