2012-01-28 18 views
48

He descargado el código fuente de Android. Y quiero hacer algunas modificaciones al código fuente para incorporar algunas funcionalidades que actualmente no existen. Pero el problema aquí es que no puedo entender cómo se organiza el código fuente, qué tipo de archivos se pueden encontrar. Entonces, si alguien puede ayudarme a entender que sería realmente útil.¿Cómo entender la estructura del directorio del árbol raíz de Android?

+2

También puede consultar el siguiente enlace: https://groups.google.com/forum/?fromgroups=#!topic/android-platform/QhrA3RayT-U –

+2

Puede consultar este [Descripción del código fuente de Android] (http: //elinux.org/Android-4.1.1_r4) en eLinux, basado en Android-4.1.1-r4. Explica lo que está en las carpetas. También esta [Descripción general del código fuente de Android] (http://www.netmite.com/android/mydroid/development/pdk/docs/intro_source_code.html) – zhibin

Respuesta

130

Aquí está la versión corta de lo que encontrará al descargar la fuente de Android. Dejaré fuera algunos directorios menores y profundizaré en algunos de los más importantes. Básicamente lo que obtendrá (basado en el lanzamiento actual de Ice Cream Sandwich), en orden alfabético:

  • Bionic: el C-runtime para Android. Tenga en cuenta que Android no está utilizando glibc como la mayoría de las distribuciones de Linux. En cambio, la biblioteca c se llama biónica y se basa principalmente en fuentes derivadas de BSD. En esta carpeta encontrará la fuente de la biblioteca c, las matemáticas y otras bibliotecas de tiempo de ejecución del núcleo.
  • Arrancable: código relacionado con arranque e inicio. Algunos de ellos son heredados, la información del protocolo fastboot podría ser interesante ya que es implementada por los cargadores de arranque en una serie de dispositivos como los Nexus.
  • Compilación: la implementación del sistema de compilación que incluye todas las plantillas de archivos core make. 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 esta secuencia de comandos en un shell permitirá a los comandos configurar las variables de entorno, crear módulos específicos y grep en los archivos de código fuente.
  • Cts - las pruebas de compatibilidad. El conjunto de pruebas para garantizar que una compilación cumpla con la especificación 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 de las herramientas sdk y ndk. Normalmente no es una carpeta que toca cuando trabaja 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, configuraciones de compilación y más.
  • Externo: contiene el código fuente de 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 del marco. Aquí encontrará la implementación de servicios clave como Servidor del sistema con los administradores de paquetes y actividades. Una gran cantidad de la asignación entre las API de la aplicación java y las bibliotecas nativas también se realiza aquí.
  • Hardware: código fuente relacionado con hardware, como la especificación e implementación de la capa de abstracción de hardware de Android. 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 de ayuda para usar con JNI.
  • (Núcleo): no es parte de la descarga de la fuente predeterminada, pero puede obtener acceso a este código descargándolo manualmente o agregando 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 la carpeta está fuera/objetivo/producto /. En la compilación predeterminada para el emulador, la salida se colocará en out/target/product/generic. Aquí es donde encontrará las imágenes utilizadas por el emulador para comenzar (o para descargarlas y flashearlas a un dispositivo si está construyendo para un objetivo de hardware).
  • Paquetes: contiene el código fuente de las aplicaciones predeterminadas, como contactos, calendario, navegador.
  • Preconstruido: contiene archivos que se distribuyen en forma binaria para mayor comodidad. Los ejemplos incluyen las cadenas de herramientas de compilaciones cruzadas para diferentes máquinas de desarrollo.
  • Sistema - archivos de código fuente para el sistema principal de Android. Ese es el sistema mínimo de Linux que se inicia antes de que Dalvik VM y cualquier servicio basado en Java esté habilitado. Esto incluye el código fuente para el proceso init y el script init.rc predeterminado que proporciona la configuración dinámica de la plataforma
  • herramientas - Diversas herramientas IDE.

Además de lo anterior, también tiene el directorio oculto .repo que contiene el origen de la utilidad repo. También contiene el manifiesto que especifica qué repositorios git quieres rastrear para este proyecto fuente de Android. Si tiene sus propias adiciones, puede rastrearlas automáticamente agregando un manifiesto local aquí.

Para las modificaciones del marco de la plataforma, hay algunas instrucciones disponibles en la carpeta dispositivo/muestra del árbol de códigos fuente. Eso le mostrará cómo agregar API a Android sin tener que modificar el marco principal.

+0

¿Por qué el directorio Kernel no forma parte del código fuente predeterminado? – Vins

+0

Excelente respuesta, también veo algunos otros directorios: abi, art, buildcache, developers, docs, libcore, libnativehelper, ndk, sdk, tools, vendor. Por favor explique. Trataré de explicar algunas, supongo. buildcache: algo para optimizar la construcción? desarrolladores: parece muestras para desarrolladores. documentos: documentos. ndk: una herramienta para escribir aplicaciones de Android, en parte en C/C++ (https://developer.android.com/tools/sdk/ndk/index.html). proveedor: aplicaciones predeterminadas de proveedores como Facebook. Por favor corrige. – lindenrovio

+0

También será bueno si hay una descripción general de los subdirectorios en frameworks. – lindenrovio

Cuestiones relacionadas