Existe muchísima gente que no podría vivir sin el root hecho en su dispositivo Android, nos guste personalmente que exista la posibilidad o no nos guste. Tenemos la libertad de escoger si queremos hacerlo en nuestro smartphone o tablet o si queremos jugar con las reglas de casa, y es una de las grandes bondades del sistema operativo.
Sin embargo, y aunque probablemente haya sido un daño colateral, puede que las próxima actualizaciones hagan la vida un poco mas difícil a los que emplean esta técnica para ampliar las reglas del juego.
¿Donde se encuentra exactamente el problema?
En un commit reciente al árbol principal de AOSP previene que el «dominio ilimitado» (todo lo que ejecutas a través de su por defecto) ejecute archivos localizados en la partición /data. Un montón de aplicaciones root (aunque no todas) incluyen binarios o scripts […] que están localizados en /data. Esto hace que deje de funcionar de fábrica, y genera un error de acceso denegado.
El cambio de contextos ha pasado a ser mucho mas importante para las aplicaciones Root, a la vez que las políticas de SELinux han pasado a ser significativamente mas seguras. Por ejemplo, ejecutar código en /data como root no funciona en el contexto predeterminado, y llamar código basado en Java (como am y pm) tampoco se debería hacer en el contexto predeterminado.
Al parecer, ART ha pasado a ser el ajuste predeterminado en AOSP. […] Si estás utilizando Dalvik, algunas de las opciones de am y pm siguen funcionando sin problemas, y algunas simplemente no funcionan. Si estás utilizando ART, la combinación de las restricciones de SELinux junto con la inmadurez de ART es capaz de causar crashes que tiren el sistema entero […] sin mencionar que todos los paquetes tienen que ser re-optimizados.
También parece que PIE (Position-Independent Executable) pasa a ser un requerimiento. Ha sido soportado desde Android 4.1, lo que significa que si no estas utilizando ejecutables construidos estáticamente necesitarás dar una versión PIE y una no-PIE si quiere soportar dispositivos anteriores a 4.1 y posteriores a 4.4.2 simultáneamente. Para muchas aplicaciones root esto no supone un problema […], pero algunas aplicaciones se ahogarán en esto.
La versión resumida de los dos posts que ha publicado Chainfire en su Google+ (los textos de arriba son fragmentos traducidos de este y este post, ambos en inglés y de muy interesante lectura), es que, si se llegan a implementar las últimas modificaciones establecidas en AOSP (que es lo mas seguro), la vida a los desarrolladores de aplicaciones Root se les complicaría mucho por los motivos que expone.
SELinux ha pasado a ser mas seguro (y por lo tanto restrictivo), y ART pasa a ser lo predeterminado aun estando en una fase muy temprana de desarrollo. La combinación de estos dos elementos haría que el dispositivo por completo se cayera y fuera necesario reiniciar, y es un problema que puede variar al estar hablando de AOSP, cosa que puede cambiar en cualquier momento antes de ser integrado en las versiones finales de Android.
¿Y cual es la solución?
Por suerte, y a pesar de lo variable y complicado del problema, Chainfire ha sido capaz de actualizar su SuperSU de tal forma que sea compatible con las últimas versiones de AOSP. De momento todavía no ha salido de la fase de pruebas y no se encuentra disponible como actualización en Google Play, pero cualquier valiente que quiera comprobar como funciona en su dispositivo (sea o no de la última versión), puede descargar e instalar de forma manual la actualización a través de este enlace. Y creo que sobra decir que es necesario tener un dispositivo Android con root hecho.
De todas formas, con el gran trabajo que se ha pegado Chainfire para actualizar SuperSU no es suficiente: lo mas probable es que la mayoría de desarrolladores de aplicaciones Root tengan que moverse acorde a las actualizaciones de AOSP para asegurar que siguen funcionando después de que los usuarios actualicen a 4.4.3, 4.5, o lo que termine siendo. Y una aplicación Root necesitará actualizar o no hacerlo dependiendo de si esta afectada o no por uno de los nuevos cambios.
Así que por el momento sólo nos queda tener paciencia hasta que se libere la próxima versión de Android y los desarrolladores realicen los cambios necesarios para que todo funcione como antes.
¿Cómo lo veis vosotros?