Android Oreo führt die Befehlszeilenschnittstelle für Themen ein

Mit dem Start von Android Oreo wird viel Zeit darauf verwendet, nach versteckten Extras im Quellcode zu suchen. In der Vergangenheit hat das Android-Entwicklungsteam über die Aktivierung des Themings in Android O gesprochen. Im Mai berichteten wir, dass die zweite Entwicklervorschau von Android O möglicherweise ein Hinweis darauf war, dass Google den Overlay Manager Service (OMS) und das Runtime Resource Overlay (RRO) unterstützt ), aber jetzt wissen wir sicher, dass es war. Technisch gesehen unterstützt Android Oreo jetzt OMS / RRO-Themes und bietet sogar eine Schnittstelle zum Aktivieren oder Deaktivieren von Themes, vorausgesetzt, Sie können über die Befehlszeile etwas anfangen.

Update: Substratum verwendet diese Befehle seitdem für die Entwickler-Vorschau und jetzt für Oreo!


Was sind RRO und OMS?

RRO wurde intern von Sony für die Themenfunktionalität der Sony Xperia-Reihe entwickelt. Entwickler, die diese Bedeutung erkannten, bemühten sich, die Unterstützung auf andere ROMs auszudehnen, und mit ihr wurde das Thema RRO auf eine Vielzahl von Geräten angewendet - nicht nur auf Sony-Geräte. Es ersetzte Ressourcen auf geniale Weise zur Laufzeit der App - eine Benutzerfreundlichkeit, die zu diesem Zeitpunkt von anderen Theming-Optionen nicht gesehen wurde. Dies hat sich zu OMS entwickelt, das ebenfalls von Sony selbst entwickelt wurde. Der berühmte Layers Manager verwendete ursprünglich RRO-Theming, aber OMS wurde später in das, was heute als Substratum bekannt ist, angepasst und ist das Theming-Framework, das den Benutzern in unseren Foren derzeit am vertrautesten ist. ROMs in unseren Foren mit OMS-Commits unterstützen die Standard-Theming-Engine von Substratum. Der "Legacy-Modus" in Substratum verwendet das RRO-Theming.


Android Oreo führt Themenbefehle ein

Offenbar möchte Google diesen Design-Typ jetzt in AOSP vollständig unterstützen und möglicherweise zu einem vollständig systemgestützten Design-Manager übergehen. Bei Android Gerrit hat Google in den letzten Monaten (und mit Android Oreo) eine Reihe von Änderungen vorgenommen, die Maßnahmen zur systemweiten Aktivierung der Theming-Engine vorschlagen. Die Änderungen sind unten mit Links zu den jeweiligen Commits aufgeführt.

  • Überlagerungsbefehle
  • OverlayManagerService (OMS) eingeführt
  • Eine neue Berechtigung mit dem Titel CHANGE_OVERLAY_PACKAGES

All diese Änderungen bedeuten einen Schritt von Google in Richtung einer Art System-Theming-Anwendung, die in Zukunft einbezogen werden soll. Die oben aufgeführte Berechtigung erfordert Systemberechtigungen und bedeutet daher, dass nur eine Systemanwendung (oder eine Anwendung mit Root-Zugriff) diese Berechtigung aufrufen kann. Trotzdem ist es interessant, denn es zeigt, dass Google endlich auf etwas hinarbeitet .

Warum unterstützt Android Oreo das Theming nur technisch ? Die einfache Antwort ist, dass Sie zwar die Systemmethode zum Installieren von Designs aufrufen können, dies sich jedoch als ziemlich sinnlos herausstellen würde. Dies liegt daran, dass Sie, obwohl Sie die neue Befehlszeilenschnittstelle zum Verwalten installierter Designs verwenden können, keine neuen Designs ohne Root-Zugriff installieren können, da die Designs in ein Verzeichnis verschoben werden müssen, dessen Benutzerbereich beschränkt ist. Mit root-Zugriff können Sie einfach ein Substratum-Design aktivieren, sodass Sie es nicht auf die neue Art und Weise ausführen müssen. Google hat keine Systemanwendung zum Designen des Geräts hinzugefügt. Bis dahin hat der Versuch, es auf die neu hinzugefügte Weise zu tun, keinerlei Vorteile.

Die Befehlszeilen-Benutzeroberfläche

Wir haben den Befehl auf einem Google Pixel getestet, auf dem die Android Oreo-Version ausgeführt wird. Wir haben uns entschlossen, einige der Befehle zu testen und haben sie zuerst verwendet

 cmd overlays list 

um alle vorinstallierten Overlays anzuzeigen. Wir haben festgestellt, dass es ein "com.google.android.theme.pixel" gibt, das deaktiviert und stattdessen "android.auto_generated_rro__" aktiviert, indem wir die folgenden Befehle ausführen.

Wie hier zu sehen ist, ist das Standard-Overlay deaktiviert und das automatisch generierte Overlay aktiviert. Wenn Sie unseren Befehl ausführen, um die installierten Overlays erneut anzuzeigen, wird die folgende Ausgabe angezeigt.

Dies führt zu einer neu gestalteten Anwendung für Android-Systemeinstellungen auf unserem Google Pixel. Beachten Sie, dass die oben aufgeführte Überlagerungsliste auch Themen enthält, die mit Substratum installiert wurden, und wir konnten diese ebenso einfach aktivieren / deaktivieren.

auto_generated_rro Theme

Wir haben auch einen anderen Befehl gefunden, als wir die Quelle durchgegraben haben. Der Befehl lautet wie folgt

 cmd overlay dump --user 0 

gibt uns die folgende Ausgabe.

Ausgabe

die Einstellungen

android.auto_generated_rro __: 0 {

mPackageName …… .: android.auto_generated_rro__

mUserId …………: 0

mTargetPackageName .: android

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

mState ………… .: STATE_ENABLED

mIsEnabled ………: wahr

mIsStatic ……… .: wahr

}

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

mPackageName …… .: com.google.android.theme.pixel

mUserId …………: 0

mTargetPackageName .: android

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

mState ………… .: STATE_DISABLED

mIsEnabled ………: false

mIsStatic ……… .: false

}

Standardüberlagerungen: com.google.android.theme.pixel

PackageInfo-Cache

2 Packung (en)

Wie man sieht, hat Google viel Arbeit in die Entwicklung der Theming-Engine und deren Integration in die AOSP-Quelle gesteckt. Es sieht so aus, als ob systemweit Themen im System-UI-Tuner aktiviert würden. Google hat auch Informationen für OEMs bereitgestellt, sodass es möglich ist, dass zusätzliche OEMs zukünftig Theming-Unterstützung basierend auf der AOSP-Version auf Android Oreo ermöglichen.

Insgesamt ist dies eine sehr spannende Entwicklung. Theming ist einer der vielen Aspekte, die Android als vollständig anpassbares Betriebssystem auf Ihrem Telefon definieren, selbst wenn für systemweite Themes derzeit root erforderlich ist. In Zukunft wäre es ein wichtiger Schritt in Richtung Benutzerfreiheit, wenn es ohne Root-Zugriff arbeiten könnte. Natürlich kann es für einige Zeit im System UI Tuner blockiert sein (da defekte Themes Apps beschädigen können), aber es ist eine enorme Bereicherung für das mobile Betriebssystem, wenn der Benutzer überhaupt die native Themes-Unterstützung nutzen kann.