Ya está aquí el marco oficial de Xposed para Android Nougat: ¡descargue sus módulos favoritos ahora!

A medida que el ecosistema de Android ha madurado a lo largo de los años, cada vez menos usuarios encuentran razones por las que deberían rootear su dispositivo. Hay una tendencia cada vez mayor de usuarios que optan por permanecer en el firmware de stock, ya sea porque consideran que la experiencia es satisfactoria o no quieren jugar un juego de gato y ratón con la API SafetyNet de Google. Pero si le preguntó a un usuario a principios de 2016 por qué rootearon sus teléfonos, quizás la razón número uno que se le dio fue para poder instalar Xposed Framework. Ha pasado más de un año desde que se lanzó Android 7.0 Nougat por primera vez, pero la larga espera finalmente ha terminado: el Xposed Framework oficial para Android Nougat finalmente está disponible.

Durante el año pasado, el Desarrollador Reconocido Senior rovo89, el desarrollador líder de Xposed Framework, ha proporcionado varias actualizaciones sobre el progreso de Xposed Framework para Android Nougat. Para algunos, la espera ha sido tolerable principalmente debido a la gran cantidad de funcionalidades adicionales que ofrece Xposed Framework en Android Marshmallow. Pero muchos otros han pasado a una vida sin Xposed en sus dispositivos.

Vimos un atisbo de entusiasmo renovado en el proyecto cuando el desarrollador abforce lanzó un submódulo ART para AOSP 7.1.2, pero como nuestro propio GermainZ señala que estaba mejor esperando la versión oficial de Xposed Framework ya que la implementación de abforce requería que el marco fuera integrado en ROM personalizados. Además, esta implementación no oficial fue incompleta, lo que condujo a un comportamiento inconsistente o con errores con ciertos módulos Xposed.

Si bien abforce hizo un gran trabajo al hacer que su Xposed no oficial funcionara en Android 7.1 Nougat, su implementación fue en contra de la visión de rovo89 para Xposed: que debería ser una solución estable que ofrezca un contrato confiable y fácil de usar para usuarios y desarrolladores por igual. Lo que queremos decir con esto es que no solo los módulos deberían funcionar sin problemas para los usuarios, sino que la forma en que se configuran los módulos debe ser coherente entre los usuarios para que los desarrolladores sepan si un módulo expuesto es el responsable de un bloqueo de la aplicación.

Ya no tenemos que preocuparnos por problemas tales como que rovo89 (después de recibir ayuda de Recognized Developer wanam) ahora está listo para lanzar una actualización oficial de Xposed Framework e Installer, lo que brinda compatibilidad con Android 7.0 / 7.1 Nougat . Eso significa que no tendrá que instalar una ROM personalizada o tener que meterse con versiones inestables para disfrutar de Xposed: simplemente arraigue su teléfono e instale la última aplicación de instalador de Xposed (vinculada a continuación) y el instalador de Xposed hará la magia de instalar Xposed para ti

Instalador Xposed navegando por el repositorio de módulos

Esto puede parecer un poco tarde en algunas mentes, especialmente porque esta versión llega más de un mes después del lanzamiento de Android 8.0 Oreo. Tenga en cuenta que muy pocos dispositivos tendrán acceso a una versión estable de Android Oreo durante muchos meses. Android Oreo solo está en el 0.2% de todos los dispositivos Android (en comparación con ~ 18% en Nougat) según las últimas estadísticas de Google, pero muchos de nuestros usuarios son del tipo que les encanta instalar ROM personalizados para mantenerse a la vanguardia.

Distribución de la versión de Android a partir de octubre de 2017. Fuente: Google

Aunque incluso si instala un puerto no oficial de Android 8.0 disponible en una miríada de dispositivos en nuestros foros, muchos de estos puertos no son el estado del controlador diario. Entonces, a menos que esté dispuesto a pagar cientos de dólares por un nuevo Google Pixel 2/2 XL, Sony Xperia XZ1 / XZ1 Compact o un dispositivo próximo como el Huawei Mate 10, entonces probablemente podrá exprimir varios meses de uso de Xposed Framework en Android Nougat.

Si eso suena como usted, diríjase al hilo oficial del foro para el instalador Xposed y las cremalleras del marco para ponerlo en funcionamiento en su dispositivo Android Nougat.

Descargar Xposed Installer v3.1.2 (Adjunto)

Instalador Xposed para Nougat 7.0 (SDK24) Descargar

Instalador Xposed para Nougat 7.1 (SDK25) Descargar

Para los muchos usuarios más nuevos que no están tan familiarizados con para qué se puede usar Xposed Framework o cómo funciona, explicaremos brevemente Xposed Framework a continuación, por qué debería estar entusiasmado y por qué el desarrollo de esto tomó tanto tiempo como lo hizo. .


¿Por qué instalar Xposed Framework?

¿Desea obtener funciones de ROM personalizadas sin actualizar una ROM personalizada? La madre de todos los módulos Xposed para ajustar su ROM, conocida como GravityBox, lo tiene cubierto. ¿Desea personalizar la configuración de pantalla por aplicación? Prueba la configuración de la aplicación. ¿Qué tal personalizar ciertas aplicaciones como Hangouts? ¿O modificar Instagram para que puedas descargar las publicaciones que quieras?

Control de notificaciones GravityBox

Ajustes de Aplicacion

Xposed ofrece a los desarrolladores la capacidad de modificar prácticamente lo que quieran, principalmente dirigido a aplicaciones individuales, pero incluso las características de todo el sistema pueden modificarse. Los ejemplos que enumeramos son solo la punta del iceberg. La cantidad de funciones adicionales que puede agregar o aplicaciones que puede modificar es increíble: solo busque en el repositorio oficial de Xposed Module para verlo usted mismo. Tenga en cuenta que es posible que algunos módulos deban actualizarse para esta nueva versión y para el soporte de Nougat, ¡así que asegúrese de verificar antes de instalarlos en su ROM de Nougat!

¿Cómo funcionan los módulos Xposed?

La esencia de esto es que Xposed Framework permite que los módulos se "enganchen" a los métodos Java de cualquier aplicación, ya sea ​​instalada por el usuario o una aplicación del sistema. Xposed permite a los módulos ejecutar sus propios métodos antes, durante o en lugar de los métodos originales de la aplicación de destino.

Por ejemplo, imagine un método utilizado en la aplicación de Gmail que publica notificaciones para nuevos correos electrónicos. Por defecto, el método crea una nueva notificación con botones para archivar / eliminar o responder al correo electrónico. Se podría hacer que un Módulo Xposed se enganche a este método y agregue un botón nuevo como "marcar como leído" (Sí, ya existe un Módulo para eso).

Lo anterior es una simplificación excesiva del resultado final de lo que Xposed Framework permite que hagan sus módulos. El Framework en sí es increíblemente complejo y hace que funcione casi universalmente en dispositivos rooteados, sin necesidad de una ROM personalizada, es por eso que Xposed para Android Nougat ha tardado tanto en completarse.

¿Por qué el desarrollo de Xposed tarda tanto?

La magia detrás de Xposed, que permite que los módulos se conecten a los métodos de otras aplicaciones, requiere un conocimiento profundo de cómo funciona Zygote y Android Runtime (ART). Estos requisitos ya impiden que una gran cantidad de personas contribuyan al proyecto, pero el problema se ve exacerbado por el hecho de que rovo89 ha sido el principal contribuyente a Xposed durante los últimos 5 años .

Es por eso que se han denegado las solicitudes de contratación abierta de sus modificaciones realizadas a Xposed desde la última versión pública de Xposed. Es su creación, y es el mejor para comprenderlo y modificarlo, por lo que agregar más mano de obra al proyecto en una etapa tan tardía podría simplemente retrasarlo aún más.

Además, si rovo89 actualizaba continuamente su fuente, le preocupaba que alguien tomara el código inacabado para construir un Marco Xposed semi-funcional sin el Instalador Xposed universal que lo acompañara. (Esto sucedió de todos modos con la implementación de abforce, y el desorden resultante de varios métodos de instalación justificó la duda de rovo89).

Por lo tanto, lo mejor que pudimos hacer fue darle tiempo a rovo89 para trabajar en su proyecto favorito. Xposed no es su trabajo completo, ni siquiera a tiempo parcial. Es simplemente un pasatiempo, uno que ha hecho en beneficio de la comunidad durante 5 años. Un proyecto tan complejo como Xposed requiere tiempo para trabajar y luego probar, tiempo que a menudo no tenía debido a sus otras obligaciones. Se hicieron progresos durante el año pasado, tal como rovo89 documentó en algunas de sus actualizaciones públicas sobre el tema hasta que finalmente tanto el propio Xposed Framework como el Xposed Installer están listos para su lanzamiento.

¿Qué hizo rovo89 para que Xposed funcionara en Nougat?

Los nuevos lanzamientos de Android a veces traen cambios en la forma en que funciona ART, lo que puede requerir que algunas partes de Xposed sean modificadas. Android 7.0 Nougat introdujo un compilador Just-in-Time para ART para ayudar a mejorar el rendimiento en tiempo de ejecución de las aplicaciones, por ejemplo. Pero el Xposed Framework no oficial de abforce simplemente deshabilita muchas optimizaciones ART para que el enganche de métodos pueda funcionar correctamente.

Optimizaciones de ART en Android Nougat. Fuente: Google

Por el contrario, la implementación de rovo89 mantiene todas las optimizaciones ART en Android Nougat recompilando la llamada de un método usando JIT y aún manteniendo los ganchos de método en su lugar. Eso significa que puede disfrutar de los beneficios de un Módulo Xposed sin sacrificar el rendimiento al deshabilitar forzosamente las optimizaciones ART.

Para obtener más detalles sobre lo que hizo rovo89 para lograr finalmente un método de enganche confiable en Xposed para Android Nougat, le recomendamos que lea la siguiente declaración que nos proporcionó.

Declaración completa de rovo89

El núcleo de Xposed es obviamente su capacidad de enganchar métodos Java, es decir, dejar que los módulos ejecuten código antes, después o en lugar de estos métodos. Casi todas las demás funciones se basan en esto, por lo que es fundamental que siempre funcione como se espera. El concepto general ha sido el mismo desde que inventé Xposed hace cinco años, requiere cambiar el punto de entrada del método. Esto comienza a fallar cuando el punto de entrada no se verifica durante la ejecución, que en realidad es el caso con algunas de las optimizaciones en ART.

Un ejemplo es cuando el punto de entrada ya se conoce en tiempo de compilación, entonces las personas que llaman pueden saltar directamente a esta dirección sin buscarla. Otro ejemplo es en línea. Considere este ejemplo:

ART es lo suficientemente inteligente como para notar que el método dos veces () es muy simple y, por lo tanto, incorpora la lógica directamente en el método doSomething (), de esta manera:

Todavía puede enganchar el método dos veces (), pero ya no se llamará desde doSomething () en tiempo de ejecución, y tampoco su devolución de llamada. ART es aún más inteligente: se da cuenta de que la magia siempre es 42 y, por lo tanto, la condición nunca se puede cumplir. Entonces, todo el método doSomething () es en realidad un no-op:

En versiones anteriores, Xposed solía deshabilitar estas optimizaciones por completo y forzar la compilación de todo. Eso vino con varias desventajas. En primer lugar, los desarrolladores de ART están haciendo un trabajo fantástico para maximizar el rendimiento con sus optimizaciones, y deshabilitarlos en parte necesariamente conduce a un menor rendimiento (aunque nunca medí cuánto). Entonces, la recompilación en sí misma no siempre es fácil y me causó muchos dolores de cabeza, especialmente al principio. Finalmente, los archivos recompilados ocupan espacio, además de los archivos precompilados en / system.

Las versiones no oficiales para Nougat también deshabilitan estas optimizaciones, pero no fuerzan la recompilación (porque el puerto se hizo originalmente para integrarse en la ROM). Por lo tanto, los ganchos pueden no ejecutarse a veces.

Con la versión oficial, podrá mantener el código optimizado y seguir teniendo ganchos confiables. ¿Cómo funciona? Bueno, Xposed registra todas las llamadas que se realizan. Esto sucede mientras se compilan los APK, o en un pase separado para el código optimizado previamente. Estos datos adicionales no ocupan mucho espacio, pero permiten que Xposed descubra dónde podría haberse introducido un cierto método. Entonces, cuando se engancha un método, todas las personas que llaman serán desoptimizadas, es decir, su código ya no se usará. Esto asegura que definitivamente se llamará a la devolución de llamada de enlace. Y si la persona que llama se usa mucho, simplemente se recompilará con JIT, esta vez sabiendo que el método está enganchado y, por lo tanto, algunas de las optimizaciones no se aplican. Esto significa que los efectos de los métodos de enganche se reducen al mínimo. ¡Hurra!

Ahora ve y pruébalo. Asegúrese de usar Xposed Installer 3.1.2, ya que la ruta de configuración tuvo que cambiarse para admitir el cifrado basado en archivos.

Conclusión

Esperamos que estés tan entusiasmado como nosotros con el lanzamiento de Xposed para Android 7.X Nougat. La espera ha sido larga, pero inevitable dada la gran complejidad de Xposed. Si todavía está confundido acerca de qué es Xposed o cómo funciona, no se preocupe. Muy pocas personas (incluidos nosotros) realmente entienden cómo funciona. Los desarrolladores como rovo89 hacen todo lo posible para empacar su trabajo, por lo que realmente no tiene que entender lo que sucede debajo del capó.

¿Te gusta el Marco Xposed? Considere donar a rovo89 por el increíble trabajo que hace. Si cree que tiene lo que se necesita para contribuir al proyecto, consulte la página de GitHub de rovo89 a continuación.

Done a rovo89

Contribuir a Xposed

¿Buscas módulos Xposed? Eche un vistazo a nuestro subforo del Módulo Marco Xposed o descargue la aplicación Labs y explore nuestra colección de Módulos Xposed.

Foro de módulos Xposed

Descargar Labs

Progreso de Android Oreo

En caso de que te lo estés preguntando, así es como se avanza en obtener Xposed para Android Oreo:

Ya comencé a trabajar en Android 8.0. Hay algunas características nuevas del lenguaje que tendré que ver, pero el concepto general aún debería funcionar. Eso incluye todo el trabajo para invalidar el código compilado de cualquier persona que llama cuando se engancha un método, lo que tomó mucho más tiempo cuando trabajé en Nougat. Así que estoy realmente seguro de que esta vez seré mucho más rápido. Android 8.1 no debería ser muy diferente, por lo que no espero mucho trabajo adicional para ello.