AOSP probablemente ya sea tan universal como sea posible.
Android Open Source Project es la parte de “código abierto” de Android. Incluso los dispositivos Nexus no ejecutan software completamente de código abierto.
Hasta donde yo sé, todos los componentes de teléfonos inteligentes de hoy usan controladores propietarios. Esto también es cierto para los componentes de los dispositivos Nexus. Dado que los componentes siguen evolucionando rápidamente, no es posible estandarizarlos y tener un modo a prueba de fallas que todos los dispositivos admiten en este momento. Por lo tanto, no puede crear una ROM universal con controladores estándar. Debe agregar controladores propietarios específicos a cada compilación.
- ¿Quién gana 100 $ o más por día con las aplicaciones de Android?
- ¿Cómo debo desarrollar la aplicación de Android? ¿Qué idiomas debo aprender?
- ¿Qué son las herramientas de framework para Android?
- ¿Cuáles son algunas de las aplicaciones de Android muy útiles en Google Play Store pero que no son tan famosas?
- ¿Qué tan compleja de una aplicación puedes desarrollar con Android App Inventor? ¿Vale la pena aprenderlo?
El único tratamiento especial que reciben los dispositivos Nexus es que cuando compilas el código AOSP, puedes elegir una configuración preestablecida para compilar para el dispositivo Nexus en particular. Si alguien crea un dispositivo con los mismos componentes que un Nexus, teóricamente puede compilar su dispositivo directamente desde AOSP.
Pero esto no sucede, ¿verdad? Ninguna compañía quiere lanzar un dispositivo con exactamente los mismos componentes que un dispositivo existente (excepto tal vez para Android One). Es por eso que cada vez que el fabricante necesita agregar nuevos controladores y luego ajustar el código para que se ajuste al nuevo modelo.
Hay muchas cosas que pueden cambiar de un modelo a otro. Hay muchas cosas que pueden romper el código de estos cambios. Es por eso que cualquiera que intente portar una ROM, intenta elegir una ROM que funcione para un dispositivo similar y luego la ajusta para que funcione en el nuevo dispositivo. Menos cosas cambian, menos posibilidades de fracaso.
Incluso un gran código no siempre está libre de defectos, porque es monumentalmente difícil mantener un código que tenga más de 1.2 líneas de código de crore. Incluso una sola asignación de variables incorrecta puede hacer que su sistema operativo caiga de rodillas. Es por eso que cada vez que se lanza un nuevo dispositivo, debe pasar por una evaluación de calidad rigurosa.
Todo esto solo se tiene en cuenta que las empresas quieren portar AOSP directamente a sus dispositivos.
Las empresas tienen la capacidad de modificar y complementar el código. Como alguien señaló en otra respuesta, aquellos que escriben Android no pueden predecir si Samsung presenta un lector de huellas digitales o una pantalla curva o si Motorola introduce la detección de palabras activas siempre activa en sus dispositivos. No puede escribir código que prevea dichos cambios. Si una empresa desea agregar dicha funcionalidad, debe invertir su propio tiempo. Lo mismo se aplica a todas las características de software que los fabricantes introducen en sus dispositivos.
Espero que esto te ayude a apreciar los muchos desafíos insuperables para hacer una versión universal de Android que simplemente funcione.