Eksklusivt: Android Oreo vil modtage rodløs, systemdækkende temasupport inden for 1 uge

Googles seneste Android Oreo-udgivelse har allerede indbygget temaunderstøttelse, og takket være Substratum-temamotoren kommer den om 1 uge.

Opdatering 09/13/17: Andromeda-tilføjelsen til Substratum, som giver mulighed for brugerdefinerede temaer på ikke-rodfæstede Android Oreo-enheder, er nu blevet frigivet. Se denne artikel for yderligere detaljer. Den originale artikel forbliver nedenfor.

Med hver ny udgivelse af Googles Android OS, er der færre grunde for de fleste brugere til det root deres enheder. Men blandt de resterende brugere, der stadig vælger at roote deres enheder, er en af ​​de mest almindeligt nævnte årsager at aktivere systemdækkende temaunderstøttelse. Typisk styres dette via Substratum temaramme lige siden uheldig bortgang af CyanogenMod Theme Engine. Med tiden har team bag Substratum arbejdet hårdt på at inkludere understøttelse af flere enheder ved at inkorporere Substratum-understøttelse på ROM-niveau så det kunne køre uden root-adgang. Og nu har teamet taget projektet ud over, hvad nogen af ​​os kunne have forestillet os ved at bringe 

fuld systemdækkende temaunderstøttelse uden root til enhver Android Oreo-enhed.

Skærmbilleder viser Sais Android Oreo Black Theme kører på en ikke-rodfæstet Google Pixel på Android Oreo 8.0.0

For at give dig en idé om hvordan det er en utrolig udvikling, overveje, at følgende nu vil være muligt uden rod:

  • Temaer af Android Framework og Android System UI, såvel som andre systemapplikationer. (Mange af jer vil elsker endelig har et mørkt tema tilgængeligt!)
  • Temaer af enhver tredjepartsapplikation
  • Brugerdefinerede skrifttyper til tredjepartsapplikationer
  • Mange andre ændringer såsom en statuslinje center-clock mod

Listen fortsætter! Underlaget har en omfattende liste over tilgængelige temaer der understøtter rammerne (som alle understøttes i denne kommende nye version af Substratum til Android 8.0), et aktivt fællesskab på Google+ og vores egen fora, og givet denne udvikling er støtten kun forpligtet til at vokse!


Android Oreo og Overlay Manager-tjenesten

Et eksempel på nogle undergrundstemaer.

Lige siden Google blev inkorporeret indbygget understøttelse af Sonys Runtime Resource Overlay (RRO) temamotor i Android 6.0 Marshmallow, vi har ventet for Google at levere en indbygget grænseflade samt offentlige API'er, som udviklere kan bruge til at tematisere både systemrammeapplikationer og tredjepartsapplikationer. Desværre bragte Android Nougat-udgivelsen ikke meget nyt til bordet, lige siden Sonys RRO blev føjet til Android Open Source Project (AOSP).

Men takket være det flittige arbejde fra ingeniørerne hos Sony Mobile, udviklede RRO-temamotoren sig til sidst til det, der er kendt som Overlay Manager Service (OMS), hvilket er det, som Substratum er baseret på. Sony var pioneren med hensyn til en open source-temaløsning, men siden deres OMS-temamotor blev accepteret i AOSP omkring tidspunktet for den endelige Android 7.1-udgivelse, er den eneste måde for brugere af ikke-Sony-enheder at drage fordel af temamotoren gennem en brugerdefineret ROM.

Det ændrede sig i Android 8.0. Da Substratum oprindeligt blev udgivet til første par Android O Developer Previews, indså udviklerne af Substratum det fuld støtte til Sonys OMS var tilgængelig. Dette betyder, at en bruger kunne installere et eksisterende Substratum-understøttet tema, og det ville fungere fuldt ud på Android Oreo-enheder uden at kræve nogen ROM-patches. Der var dog kun ét problem: processen med at aktivere et installeret Substratum-tema krævede root-adgang, eller det troede de.


Understøttelse af rodløs, systemdækkende substrattema til Android Oreo

Mens udviklerne stille og roligt lagde deres arbejde på spørgsmålet om at få Android Oreo-brugere til en fuldstændig rodløs temaløsning på bagsiden brænder, gravede vi uafhængigt i hver Android O Developer Preview og fandt beviser for temamotoren, der spillede, selvom vi fejlidentificerede det som værende baseret på den ældre RRO frem for Sonys nyere OMS. Google drillede endda fællesskabet om temastøtte i en udviklercentreret AMA ovre på Reddit, og sagde, at der stadig var nogle forhindringer, der skulle overvindes, før en komplet temaløsning kunne indbygges i Android.

Da vi ikke var tilfredse med det svar, ønskede vi at se, hvor langt Google var gået med at få temaunderstøttelse til Android Oreo. For at gøre det, gravede jeg i kildekoden til Android 8.0 når den endelige udgivelse faldt, og opdagede eksistensen af ​​ADB-skalkommandoer, der kunne aktivere eller deaktivere overlejringer, som XDA-forfatter Adam Conway dækkede i går.

Deaktivering af standardoverlejringen

Til at begynde med var jeg ikke så imponeret over fundet, da det mig bekendt på det tidspunkt var funktionelt ubrugeligt, da jeg selv og mine kolleger havde det indtryk, at installation et tema krævede stadig root-adgang, da temafilerne skulle flyttes til en mappe, der er utilgængelig for brugerrummet (i /system/leverandør/overlay, hvilket er hvordan RRO fungerede). Nicholas Chum selv, en af ​​hovedudviklerne bag Substratum, kommenterede vores indlæg, at han var klar over eksistensen af ​​disse kommandoer i et stykke tid og har allerede brugt det til Android O builds.

En person så dog en mulighed opstå, efter at vi offentliggjorde vores artikel i går. XDA's helt egen Jeff Corcoran, udvikleren bag vores in-house XDA Labs applikation, indså, at der var en potentiel løsning for at få Android Oreos native kommandolinjegrænseflade til OMS til at fungere uden root. Det involverede en metode, der blev brugt af Helium, den populære ikke-root backup-løsning, og for nylig af open source Greenify-alternativet kendt som Brevent.

Forhøjede privilegier gennem et manuskript

Normalt er "cmd overlejring"-kommandoer, som Google føjede til Oreo-udgivelsen, kan kun køres gennem enten en enhed med root-privilegier eller gennem en enhed, der er bundet til en computer, der kalder Android Debug Bridge (ADB)-skallen. En håndfuld kloge udviklere, såsom Helium- og Brevent-udviklerne, har gennem årene fundet ud af det hvordan man i det væsentlige hæver privilegierne for en applikation, der kører på telefonen, så den matcher ADB's skal. På den måde kan applikationen sende kommandoer, som den normalt ikke kunne på grund af begrænsede tilladelser. I tilfældet med Substratum betyder det applikationen kan installere og derefter aktivere eller deaktivere Substratum-temaer uden root.

Denne erkendelse var en major gennembrud, der først blev opdaget i går aftes. I løbet af et par timer var Nicholas (med hjælp fra Jeff) i stand til at skabe en hurtig alfaversion af en rodløs Substratum-temamanager til Android Oreo-enheder. Og det virker – men med et par forbehold.

Forbehold om rodløs undergrundsstøtte

Den proces, der kræves for at give Substratum ADB shell forhøjede privilegier, vil kræve brugen af ​​en meget enkel og let desktop-applikation (eller bare en ADB-shell-kommando, hvis du ved, hvad du laver). Når det er givet, vil Substratum fungere som du ville forvente, da det er i stand til at håndtere alle dine installerede Substratum-temaer. Alle temaer, du installerer, forbliver installeret indtil du vælger at afinstallere det gennem Substratum igen.

De privilegier, som Substratum tildeles, er imidlertid forbigående, da de går tabt, når brugeren udfører en fuld genstart (selv om bløde genstarter af systembrugergrænsefladen heldigvis ikke mister privilegiet). Det betyder, at du bliver nødt til at køre skrivebordsprogrammet igen, hvis du har genstartet din telefon og ønsker at bruge Substratum til at tilføje, fjerne eller ændre et tema. Det vil jeg gerne gentage igen alle temaer, du installerer, forbliver installeret, selvom du genstarter, så det betyder, at hvis du kun vil ændre nogle få temaer af og til, burde dette være perfekt til dig. Du bør også være i stand til at skifte tema fra menuen Indstillinger, som Udvikler Previews "Tema" mulighed under Skærmindstillinger genkender derefter installerede temaer og giver dig mulighed for at skifte mellem dem

Til sidst er den sidste ting, jeg skal nævne, noget, der virker indlysende, når du tænker over det, men i din begejstring over at høre nyheder, har du måske glemt det. Din enhed er stadig unrooted. Det betyder, at du ikke kan røre ved eller ændre nogen filer, der absolut kræver root-adgang for at redigere, selvom det substrat-tema, du installerede, lovede at ændre noget. Beklager, men det betyder desværre, at du ikke kan anvende en skrifttypeændring for hele systemet bringe klatten emojis tilbage, selvom som nævnt i begyndelsen, det er muligt for et Substratum-tema at ændre skrifttyperne i individuelle applikationer.

Nødvendigheden af ​​underlag

Lad os få en vigtig detalje af vejen nu. Hvornår kommer det her? Som titlen nævner, skulle den første offentlige tilgængelighed af det rodløse Substratum til Android 8.0-enheder som Google Nexus 5X, Google Nexus 6P, Google Pixel og Google Pixel XL være inden for 1 uge. Det er ikke en garanti på nogen måde, da ting kan ændre sig i udviklingsprocessen, der kan kræve yderligere tidsinvestering, men da OMS allerede er det fuldt understøttet i AOSP, alt hvad Substratum-teamet arbejder på nu er grænsefladen mellem Substratum-appen og unrooted enheder.

Næste: vil det være gratis? Ingen. Underlag for ikke-rodfæstede Android Oreo-enheder vil være en betalt ansøgning. Jeg kan ikke fortælle dig, hvor meget det vil koste, da Nicholas endnu ikke har besluttet sig for en pris, men vær sikker på, at prisen vil være fair givet værdien af ​​det, du vil modtage. Indtil nu har Substratum været frit tilgængeligt for mange enheder, så overvej at understøtte denne form for udvikling ved først at støtte Team Substratum. Du kan enten vente på, at Google til sidst frigiver det mørke tema, du altid har ønsket dig (ha, godt en), eller du kan smide et par øre ind for at støtte selvstændig udvikling, som mange mennesker tager for givet.

Stadig ikke overbevist om dets værdi? Du kan prøve installation af Substratum-temaer på din egen urodede 8.0-enhed. Faktisk er det præcis, hvad vi gjorde ovenfor. Selvfølgelig havde vi lidt hjælp fra Nicholas til at gøre det. Hvis du vil installere et eksisterende Substratum-tema fra Google Play Butik, er her de generelle trin:

  1. Download og installer APK-filen på din enhed.
  2. Udpak indholdet, og kompilér hvert overlay til en individuel APK-fil for hver app, som du vil have et tema
  3. Installer hver enkelt overlay APK-fil, som du manuelt kompilerede i trin #2
  4. For hver overlejrings-APK, som du installerer, skal du køre følgende kommando for at aktivere den: cmd overlay enable
  5. Hvis du vil ændre overlejrings prioritet, skal du bruge: cmd overlay set-priority PARENT|lowest|highest
  6. Liste alle dine installerede overlejringer med: cmd overlay list
  7. Fjern eventuelle overlejringer, du ikke vil have med: cmd overlay disable

Hvis du virkelig vil bruge kommandolinjen til at administrere temaer, så vær vores gæst! Personligt stod jeg fast ved at komme forbi trin #2. Substratum bruger ikke en skjult metode, som du ikke kan finde på selv, men den gør det langt nemmere for dig at administrere. Når det er muligt at gøre noget manuelt, men en applikation kan gøre det meget nemmere for mig, har jeg en tendens til bare at lade appen gøre sit arbejde. Men det er op til dig.

Personligt er jeg det virkelig, virkelig spændt for at se, hvor det går hen. For alle enheder derude, der ikke allerede understøtter et indbygget temastyringssystem (såsom Motorola- eller OnePlus-enheder), har du nu endnu en grund til at se frem til i Android 8.0-opdateringen. For dem af jer, der er heldige at allerede smage den søde Oreo, har I noget at se frem til om 1 uge.


P.S. Samsung-brugere, kendte du dine enheder understøtter allerede Substratum-temaer uden at have brug for root?

P.P.S Er du udvikler interesseret i at lære mere om Substratum? Tjek Nicholas's fantastisk slideshow præsentation her!