¡Sungstratum del equipo [projekt.] trae todas las ventajas temáticas de RRO-OMS a los dispositivos Samsung Nougat a través de Substratum! ¡Siga leyendo para saber más!
La temática de Android ha recorrido un largo camino, desde ediciones hacky hasta Substratum y ahora, estrato cantado. Hace años, la palabra "tema" en las discusiones sobre Android fue reemplazada con frecuencia por la palabra "selector", un guiño a el selector de temas de T-Mobile que se encuentra en CyanogenMod y que sentó las bases que convirtieron a Android en un tema paraíso. La capacidad de modificar la apariencia del sistema operativo otorgó a los usuarios otra dimensión de personalización, permitiéndoles realizar cambios que hacen que sus dispositivos sean mucho más personalizados.
El buen trabajo continuó en dos direcciones diferentes. El selector de temas evolucionó hasta convertirse en el motor de temas CyanogenMod, pero a pesar de los años de esfuerzos dedicados a los recursos de temas, el CMTE quedó obsoleto. cuando surgieron otras alternativas.
RRO y capas
La base de una de las alternativas se sentó cuando la contribución del código de Sony en forma del nuevo marco llamado Superposición de recursos en tiempo de ejecución (RRO) fue aceptado en AOSP. Este marco proporciona la capacidad de reemplazar los recursos de la aplicación durante el tiempo de ejecución (de ahí el nombre). Las "superposiciones" por sí mismas han estado presentes y soportadas en Android desde Gingerbread (y quizás también antes), se utiliza principalmente para intercambiar recursos y hacer que las aplicaciones funcionen en ese lugar específico. dispositivo. El enfoque de Sony hacia RRO implicó modificar el administrador de activos para que acepte aplicaciones que utilizan recursos asignados a otros recursos correspondientes existentes en el dispositivo. Estos nuevos recursos de la apk se superpusieron a los recursos base solo en tiempo de ejecución, lo que permitió que el sistema funcionara como si estos nuevos recursos siempre hubieran sido parte de él.
El marco RRO se fusionó con AOSP antes de que Lollipop 5.0 se hiciera público, pero las pocas compilaciones iniciales de 5.0 tenían partes del marco rotas debido a otros cambios. Las vistas previas para desarrolladores de Android 6.0 Marshmallow fueron las primeras en agregar un marco RRO funcional, aunque limitado., abriendo las puertas de la personalización directamente en el nivel estándar de Android. Entonces, a menos que un OEM haya intentado deliberadamente desviarse de las opciones temáticas estándar de Android, un cierto Se podría mantener un nivel de coherencia en el enfoque de cómo se implementarían los "temas" en Androide.
Mientras AOSP jugaba con RRO y buscaba la mejor manera de incorporarlo todo, un equipo de desarrolladores llamó BitSyko trabajaron juntos en un esfuerzo colectivo llamado "Capas". Las capas ampliaron la funcionalidad RRO estándar en Android 5.1 Lollipop para permitir un cambio de recursos más complejo y permitir un mayor control de elementos para los temas del que es posible con RRO estándar. Debido a que Layers se desarrolló en RRO, los fabricantes de ROM necesitaban agregar código adicional para habilitar la funcionalidad de Layers en sus ROM, ya que no todos los temas de Layers funcionarían en RRO estándar en Marshmallow.
Mientras tanto, Sony siguió adelante con sus propios esfuerzos hacia la temática de Android. Se empezó a trabajar en OMS (servicio de administrador de superposición), un cliente para gestionar superposiciones que permitiría a los proveedores controlar dinámicamente las prioridades y habilitar y deshabilitar superposiciones. OMS se fusionará con AOSP y llegará a Android O. Desarrollador reconocido por XDA nicholaschum pudo confirmar a través de sus fuentes que Android O tendrá "superposiciones dinámicas", lo que se cree que es una referencia a OMS.
OMS causó conflictos con las capas, ya que tradicionalmente dichas funciones estaban bajo el control del tema. Para abordar los problemas planteados por OMS y ampliar la funcionalidad de Layers, BitSyko se unió nuevamente (y se rebautizó como [proyecto.]) crear Sustrato. Substratum es un cliente con funcionalidad OMS que intenta conciliar la funcionalidad de Capas con OMS, y también toma prestados otros elementos de otras soluciones temáticas anteriores. Las superposiciones ya no se superponían entre sí para crear temas en elementos individuales, ya que ahora todos los elementos necesarios se inyectaban en una sola superposición. Funciones como la compilación en el dispositivo permitieron aplicar temas sin necesidad de reiniciar entre cambios, lo que lo hizo significativamente Es más fácil para los usuarios finales probar temas y experimentar. Substratum ha estado en desarrollo activo desde sus inicios y enumera todas sus características y La funcionalidad adicional estaría fuera del alcance de este artículo, por lo que pasaremos al tema real de este pedazo.
Sustrato en Sungstratum
Como se explicó en la sección anterior, Substratum comenzó como una forma de ampliar la funcionalidad estándar de OMS, así como la funcionalidad estándar de RRO (a través de capas). Substratum estaba destinado a usarse junto con ROM basadas en AOSP, ya que la mayoría de los otros OEM habrían realizado cambios contradictorios. eso no permitiría que Substratum coexistiera con sus modificaciones en una máscara UX editada, como la de Samsung para ejemplo.
Samsung, por sí solo, también estaba trabajando en una solución temática para usar en sus propios dispositivos en Nougat. A diferencia de Sony, Samsung no mostró interés en contribuir con el código temático a AOSP. Pero como la solución de Samsung era bastante básica, AOSP no estaba perdiendo mucho. La solución temática de Samsung integrada en Touchwiz hizo su aparición real en el Samsung Galaxy S6, pero como se mencionó, estaba bastante restringido en lo que podía intentar lograr. Antes de eso, hubo experimentos limitados que comenzaron con el Galaxy Alpha, aunque la mayoría de los elementos de la interfaz de usuario del sistema estaban fuera de su alcance. Los temas podrían cambiar fondos de pantalla e íconos, así como algunas aplicaciones estándar de Samsung, como el marcador, los contactos, los mensajes y el área de notificación, por ejemplo.
Resulta que el motor temático de Samsung se extiende RRO como se encuentra en AOSP. Samsung también recreó su propia versión interna de OMS después de extender RRO, por lo que sus implementaciones tanto de RRO como de OMS difieren de AOSP. Pero, sorprendentemente, no en gran medida: un comportamiento anómalo si se considera el carácter distintivo y la complejidad de Touchwiz. Los temáticos que utilizan los nuevos buques insignia de Samsung informaron que podían instalar superposiciones de RRO y crear temas para aplicaciones de terceros.
Esta fue la señal que el equipo [projekt.] necesitaba buscar soporte oficial para dispositivos Samsung en Substratum. El equipo convirtió una pequeña cantidad de código de la sección RRO/Legacy de su aplicación, pero en lugar de Al solicitar root y solicitar reiniciar, dispararon intents específicos para que se instalaran las superposiciones. Luego, el equipo trabajó para garantizar que las aplicaciones afectadas por los temas se cerraran a la fuerza en segundo plano para garantizar una actualización completa de los activos en el próximo lanzamiento.
Le preguntamos al desarrollador reconocido de XDA nicholaschum para brindarnos algunas ideas sobre los desafíos que enfrentó el equipo al trabajar contra la implementación de código cerrado de RRO-OMS de Samsung:
Los desafíos que enfrentamos eran bastante oscuros y desconocidos para muchos que no tienen mucho conocimiento. comprender los sistemas de temas, ya sean de código abierto o de código cerrado: todo tiene su propia versión de prueba y fase de error. En este caso, al trabajar con Samsung, me encontré con muchos problemas, pero el principal fue que las intenciones del sistema no estaban disponibles. disparado para superposiciones una vez completada la instalación, como utilizar receptores de transmisión con “acción.de.intención.de.android. PACKAGE_ADDED”: el Servicio de temas niega cualquier cosa que no forme parte de la firma del sistema con un Samsung específico permiso del servicio temático para recibir eso, por lo que la parte más difícil son las soluciones que tuvimos que encontrar una manera alrededor.
La forma en que usamos Substratum junto con Theme Engine de Samsung es utilizando el mismo sistema que ellos. Utilizan una versión muy modificada del sistema Resource Runtime Overlay de Sony, abreviado como RRO o conocido como heredado entre los usuarios de Substratum. Sin embargo, la diferencia es que los temas de Samsung tienen un permiso adicional que oculta estas superposiciones de Configuración, por lo que no puedes desinstalarlas una por una manualmente. Usamos el mismo sistema, sin embargo, utilizamos la implementación de AOSP/Sony, razón por la cual Samsung Themes puede tener un marco de temas completo, mientras Las superposiciones de sustrato no pueden tocar un objetivo mediador que no exista "fwk"; como todos sabemos, el marco es solo un paquete "android" nombre.
Parecía extraño que [projekt.] pudiera trabajar junto con la implementación RRO de Samsung con relativa facilidad. Cualquiera que haya trabajado alguna vez en dispositivos Samsung puede dar fe de lo difíciles que Samsung suele poner las cosas. Preguntamos por cualquier bloqueo específico que el equipo encontró durante su puerto:
De hecho, existe algún tipo de mecanismo de seguridad que afectó a algunos usuarios, donde las superposiciones se revierten al inicio. Esto se debe a la forma en que Samsung inicia su dispositivo. Como casi todos utilizamos la versión 7.0 en TouchWiz/Samsung Experience, utilizamos un nuevo método de “Optimización de aplicaciones” (puedes ver esto cuando actualizas tu teléfono, mostrará una notificación con el ícono de Android Nougat, indicando que se está actualizando en segundo plano), por lo que esta forma de optimizar aplicaciones también descarga el objetivo paquetes, lo que en última instancia interrumpe el proceso de mapeo de id en el arranque (debido a que el paquete de destino no existe) y, por lo tanto, algunas personas experimentan descargas de superposición después de un reiniciar.
También puedes ver que esto sucede con algunos temas de Samsung, particularmente el tema Oscuro/Negro de @envy~. hace que el color predeterminado de la barra de navegación en Pantalla -> Barra de navegación sea negro, donde el color predeterminado real es blanco. Después de configurarlo en negro, podrá abrir el teclado y la barra de navegación permanecerá negra. Esto también se revertirá aleatoriamente al reiniciar en muchos dispositivos.
Con la temática recuperando su prominencia, ¿cuáles son los planes de Substratum para las ramas laterales como Sungstratum?
En el futuro, fusionaremos una pequeña aplicación en nuestro complemento para nuestros usuarios actuales para que puedan podrá detener el Servicio de temas de Samsung si todos los temas instalados en sus dispositivos se instalan desde XDA. Entonces, las personas que usarán temas formateados con temas Samsung de XDA, podrán usar el complemento para evitar El servicio de Samsung impide que vuelva al tema original después de cada reinicio (porque no se instaló desde la tienda Samsung). oficialmente). Requerirá una clave de desarrollador de Samsung gratuita que se puede obtener en su sitio, pero vendrá incluida con la descarga del complemento sungstratum.
Con los cambios recientes y futuros en AOSP y Android O, parece que el alguna vez incipiente sistema operativo de Google tendrá aún más personalización para el usuario. Algunos fabricantes de equipos originales incluso planean deshacerse de sus interfaces de usuario personalizadas y complementos de UX. a favor de AOSP, y otros como Samsung se acercan bastante con sus propias soluciones temáticas. Prevemos un futuro en el que los temas desempeñen un papel importante en la experiencia del usuario de aún más personas: un sistema operativo donde usted realmente controla el aspecto de su dispositivo, donde usted adapta la estética de la interfaz de usuario para tú. Y no podríamos alcanzar ese futuro sin el poder colectivo de esta increíble comunidad y proyectos como Substratum.
¡Consulte la integración de Substratum para Samsung Nougat en nuestros foros de Substratum!Sustrato en GitHub