Cómo entender la estructura de directorios de árbol de raíz de android?

He descargado el código fuente de Android. Y quiero hacer algunas modificaciones al código fuente para incrustar alguna funcionalidad que actualmente no existe. Pero el problema aquí es que no soy capaz de entender cómo se organiza el código fuente, qué tipo de archivos se puede encontrar dónde. Así que si alguien me podría ayudar a entender que sería realmente útil.

Esta es una versión corta de lo que encontrarás al descargar la fuente de Android. Dejaré fuera algunos directorios secundarios y profundizaré en un par de los importantes. Básicamente lo que obtendrá (basado en el lanzamiento actual de Ice Cream Sandwich), en orden alfabético:

  • Bionic – el tiempo de ejecución C para Android. Tenga en cuenta que Android no está usando glibc como la mayoría de las distribuciones de Linux. En su lugar, la biblioteca c se llama biónica y se basa principalmente en fuentes derivadas de BSD. En esta carpeta encontrará el origen de la biblioteca c, las matemáticas y otras bibliotecas de núcleo de tiempo de ejecución.
  • Bootable – código de inicio y inicio relacionado. Algunos de ellos son legados, la información del protocolo de inicio rápido podría ser interesante, ya que es implementado por cargadores de arranque en una serie de dispositivos como los de Nexus.
  • Build – la implementación del sistema de compilación incluyendo todas las plantillas de archivo de base. Un archivo importante aquí es el script envsetup.sh que te ayudará mucho cuando trabajes con la fuente de la plataforma. La ejecución de este script en un shell habilitará comandos para configurar variables de entorno, crear módulos específicos y grep en archivos de código fuente.
  • Cts – las pruebas de compatibilidad. El conjunto de pruebas para garantizar que una compilación cumple con las especificaciones de Android.
  • Dalvik – el código fuente para la implementación de la máquina virtual Dalvik
  • Desarrollo – proyectos relacionados con el desarrollo como el código fuente para las herramientas sdk y ndk. Normalmente no es una carpeta que toque al trabajar con la plataforma para un objetivo.
  • Dispositivo – código específico del producto para diferentes dispositivos. Este es el lugar para encontrar módulos de hardware para los diferentes dispositivos Nexus, crear configuraciones y más.
  • Externo: contiene código fuente para todos los proyectos externos de código abierto, como SQLite, Freetype y webkit.
  • Frameworks – esta carpeta es esencial para Android ya que contiene las fuentes para el framework. Aquí encontrará la implementación de servicios clave como el Servidor del Sistema con los gestores de Paquetes y Actividades. Una gran parte de la asignación entre las API de aplicaciones de Java y las bibliotecas nativas también se hace aquí.
  • Hardware – hardware código fuente relacionado, como la especificación de la capa de abstracción de hardware de Android y la implementación. Esta carpeta también contiene la implementación de la capa de interfaz de radio de referencia (para comunicarse con el lado del módem).
  • Libcore – Apache Harmony.
  • Libnativehelper – Funciones auxiliares para su uso con JNI.
  • (Kernel) – no forma parte de la descarga predeterminada de la fuente, pero puede obtener acceso a este código descargándolo manualmente o añadiendo el repositorio a la herramienta de repositorio. Contiene las fuentes para la versión de Android del kernel de Linux.
  • Out – la salida de compilación se colocará aquí después de ejecutar make. La estructura de carpetas está fuera / target / product /. En la compilación predeterminada para el emulador, la salida se colocará en out / target / product / genérico. Aquí es donde encontrará las imágenes utilizadas por el emulador para iniciar (o para descargarlas y mostrarlas a un dispositivo si está construyendo un destino de hardware).
  • Paquetes: contiene el código fuente de las aplicaciones predeterminadas, como contactos, calendario, navegador.
  • Preconfigurado – contiene archivos que se distribuyen en forma binaria por conveniencia. Los ejemplos incluyen las compilaciones cruzadas toolchains para diferentes máquinas de desarrollo.
  • Sistema – archivos de código fuente para el sistema Android principal. Ese es el sistema Linux mínimo que se inicia antes de que la VM de Dalvik y los servicios basados ​​en Java estén habilitados. Esto incluye el código fuente para el proceso init y el script init.rc predeterminado que proporcionan la configuración dinámica de la plataforma
  • Herramientas – Varias herramientas IDE.

Más allá de lo anterior, también tiene el directorio .repo oculto que contiene el origen de la utilidad de repo. También contiene el manifiesto que especifica qué repositorios git desea realizar el seguimiento de este proyecto de origen de Android. Si tiene sus propias adiciones, puede seguirlas automáticamente agregando un manifiesto local aquí.

Para modificaciones de la estructura de la plataforma hay algunas instrucciones disponibles en la carpeta de dispositivo / ejemplo del árbol de código fuente. Esto le mostrará cómo agregar API a Android sin tener que modificar el framework principal.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.