Suponiendo que tiene experiencia en desarrollo, descargue el proyecto de código abierto de Android y comience a leer el código. Si eres totalmente nuevo en Java, también puedes leer los tutoriales de Oracle Java. Una mejor comprensión de sus antecedentes y experiencia dará una mejor respuesta.
=== Editar ===
Divulgación: en realidad no soy el más calificado para responder a esta pregunta, ya que soy un desarrollador de aplicaciones de Android, a diferencia de un desarrollador de sistemas operativos Android, pero tomaré una oportunidad.
- Quiero convertirme en desarrollador de Android, pero me preocupa que el desarrollo de Android se esté desvaneciendo. No tengo experiencia. ¿Vale la pena poner esfuerzos?
- Tengo experiencia en el desarrollo de aplicaciones de Android y quiero aprender el desarrollo de back-end de Java. ¿Cómo podría comenzar?
- Si me gusta jugar en mi teléfono inteligente, ¿es realmente útil Google Play Games?
- Quiero crear una aplicación de Android y me gustaría saber la diferencia entre DigitalOcean y AWS en términos de escalabilidad.
- Codifico en C ++ y quiero desarrollar aplicaciones de Android, ¿cómo debo proceder?
Aprender Java, aunque es importante, no debería ser su enfoque principal, si está interesado en programar el sistema operativo Android. Debes concentrarte en aprender el lenguaje C y C ++, aunque aprender cómo se hacen las cosas en varios lenguajes puede enriquecer tu pensamiento crítico, que es muy importante para programar en cualquier lenguaje.
El lenguaje más utilizado para programar aplicaciones de Android es Java versión 7 y 8. Asegúrese de tener ambas versiones instaladas en su entorno como mínimo. Android Studio es el IDE recomendado para programar aplicaciones Java. Solo ciertas características de Java 8 que son compatibles con la plataforma Android.
Comprender la arquitectura de la plataforma Android lo ayudará a comprender cómo todos los paquetes se unen para formar el sistema operativo Android.
El Android Native Development Kit (NDK) que puede programar en C o C ++, le permite programar aplicaciones de Android en C y / o C ++. Aprender C es el precursor generalmente aceptado para aprender cualquier otro lenguaje de programación, ya que los elementos de C son comunes a cualquier otro lenguaje que se encuentre.
Al programar aplicaciones de Android usando el NDK, comenzará a aprender a codificar en C & C ++, además, se conectará con el SDK de Android, que también le dará una mejor comprensión de la arquitectura de Android.
Además, al programar una aplicación de Android utilizando el NDK, apreciará lo que espera del SDK (que es lo que aspira a desarrollar), cómo se pueden hacer las cosas de manera diferente o por qué un desarrollador quizás ha elegido un particular forma de proporcionar la interfaz que está utilizando en su código fuente. Todo esto te ayudará a convertirte en un mejor desarrollador de SDK en el futuro.
Entender Linux como un sistema operativo lo ayudará a comprender la arquitectura de seguridad de Android, ya que Android 4.3 SELinux se usa para definir entornos limitados de aplicaciones, mientras que antes de 4.3 se usaba un UID de Linux único para garantizar la seguridad del sistema.
Si es el sistema operativo Android al que aspira el programa, aprender a codificar en Linux también proporcionará una base posiblemente necesaria para la codificación en Android, las dos plataformas comparten lenguajes de desarrollo comunes, C y C ++, sin mencionar muchos de los mismos paquetes de software.
Si desea convertirse en un desarrollador de “kernel” de Android, dependiendo de su aptitud para la programación, el pensamiento crítico, las habilidades de resolución de problemas y las habilidades de aprendizaje, necesitará mucha paciencia y perseverancia.
Siento que no debe depositarse sobre usted las expectativas injustas de los resultados de aprendizaje al aprender el material requerido. El tiempo disponible que tiene para asignar a esta tarea influirá si puede alcanzar sus objetivos de convertirse en un desarrollador de Android SDK dentro de 1 año o más de 3 años.
Además, su estado civil, edad y actividades extracurriculares combinadas con sus prioridades en la vida determinarán el tiempo disponible que debe asignar al aprendizaje requerido para alcanzar sus metas.
Teniendo en cuenta su objetivo de convertirse en un desarrollador de kernel de Android, mi consejo es que primero aprenda el desarrollo de aplicaciones nativas utilizando Java. Una vez que se sienta cómodo con eso, pase al desarrollo de aplicaciones nativas utilizando el NDK. Una vez que esté familiarizado con el desarrollo de NDK, solo intentaré pasar al desarrollo del kernel. Convertirse en un desarrollador de kernel sin apreciar primero cómo se usa el kernel sería una ruta que no recomendaría.
Además, durante su viaje de aprendizaje, puede encontrar un área alternativa que le interese dado que tendrá una mejor comprensión del ecosistema.
¡Te deseo suerte en tu viaje y te animo a que saltes!