Red de conocimiento informático - Material del sitio web - Cómo leer el código fuente del sistema Android

Cómo leer el código fuente del sistema Android

Si solo desea ver la implementación de algunas clases comunes, descargue el código fuente del Administrador de paquetes de Android y léalo en la ruta del código fuente de cualquier entorno de desarrollo integrado.

Pero si quieres aprender más sobre Android, consulta mi breve resumen.

Conocimiento

Java

Java es uno de los lenguajes principales de AOSP. Ser bueno en eso es crucial.

Desarrollo especializado de aplicaciones de Android

Linux

Android está basado en Linux y el entorno de compilación recomendado para AOSP es Ubuntu 12.04. Por lo tanto, es fundamental dominar y tener conocimientos sobre Linux. Si desea comprender el código subyacente, es necesario comprender el desarrollo básico de programas en el entorno Linux. Si desea comprender en profundidad la capa del controlador, también necesita comprender el núcleo.

Make

AOSP se compila utilizando el sistema Make. Saber cómo escribir un Makefile básico le dará una idea más clara de cómo se construye un proyecto grande como AOSP.

Git

AOSP utiliza git+repo para la gestión del código fuente. Esta debería ser una habilidad esencial para los programadores.

C++

Algunos módulos sensibles al rendimiento y bibliotecas de terceros de Android se implementan en C++, como el sistema de entrada y el proyecto Chromium (la implementación subyacente de WebView).

Hardware

Conexión de red fluida

La descarga del código AOSP requiere una conexión de red fluida. Si pierde la paciencia con el primer paso de descargar el código, no tendrá la paciencia para leer el código AOSP desordenado. Además, un buen programador necesita un Google fluido.

Una PC con Ubuntu 12.04

Si simplemente lees el código fuente sin modificarlo, entonces realmente no necesitas mucho.

Un dispositivo Nexus

El proyecto AOSP solo admite dispositivos Nexus de forma predeterminada. Si no tienes un dispositivo Nexus, aún puedes leer el código. Pero si desea avanzar más para convertirse en un experto, modifique su código y luego depurelo.

Cable USB de alta calidad

No hay nada peor que tener un cable defectuoso cuando intentas flashear tu teléfono.

Software

Ubuntu 12.04

Oficialmente recomendado, no hay elección.

Oracle Java 1.6

Tenga en cuenta que no desea utilizar OpenJDK. Esta es una trampa que, si bien está documentada en la documentación oficial, merece una mención aparte.

Instalación:

sudo apt-get install python-software-properties

sudo add-apt-repository ppa: webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java6-installer

sudo apt-get install oracle-java6-set-default

Eclipse

Se estima que mucha gente se quejará de por qué se utiliza esta antigüedad. La razón es simple, encaja. Cuando comencé a usar AOSP, probé Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags para encontrar la herramienta más efectiva. Al final, elegí Eclipse. Principales ventajas:

Análisis de sintaxis (saltos de clases y métodos rápidos y precisos).

Compatibilidad con C++ (la compatibilidad con C++ de IntelliJ es demasiado lenta).

DDMS integrado, jerarquía de vistas y otras herramientas de depuración.

Para mejorar la eficiencia, vale la pena dedicar 5 minutos a memorizar teclas de acceso directo comunes.

Ajusta tu classpath para evitar importar código inútil. Simplemente hay demasiado código en el proyecto AOSP. No agregue soporte de C++ a su proyecto cuando aún no necesita ver el código C++, el proceso de indexación lo arruinará.

Intellij IDEA

Desarrollo de aplicaciones. Cuando desea depurar una determinada función del sistema, a menudo necesita escribir rápidamente una aplicación de depuración. En este momento, el antiguo Eclipse no es fácil de usar. La función de autocompletar xml de Itellij IDEA es muy poderosa.

Los hombros de los gigantes

Primero debes leer esto. La descripción del proyecto, la descarga del código, la configuración del entorno, el método de actualización y la configuración de Eclipse están todos aquí. Ésta es la base de todo.

Esto es realmente para desarrolladores de aplicaciones. Pero aquí también hay mucha información sobre la mecánica del sistema y vale la pena leerla.

Esto no tiene nada que ver con Luo Yonghao. El blog del Sr. Luo es muy informativo y básicamente sirve como un tutorial para comenzar a usar el código fuente de AOSP. Puedes elegir lo que necesitas leer uno por uno en el orden cronológico del blog. Pero también hay algunos problemas con esta serie:

Los primeros blogs se basan en versiones anteriores de Android

Mucho seguimiento del flujo de código. Al leer un artículo, debe comprender dónde encaja lo que está viendo en el sistema general.

El Sr. Deng Fanping también es un experto en Android y su blog también es muy rico en contenido. Pero no es tan sistemático como el blog del Sr. Luo Shengyang. Es más desde una perspectiva técnica. Es más bien una discusión en profundidad de algunos puntos técnicos.

Lista oficial de problemas de Android. Encontré algunos errores extraños durante el desarrollo y los documenté todos aquí. Por supuesto que puedes hacer nuevas sugerencias, que alguien las cambie es otra cuestión.

Es importante dominar esta herramienta. Hay muchos conocimientos que nadie ha resumido sistemáticamente, por lo que debes hacerlo tú mismo.

Otros

Organizaciones

La unidad de compilación AOSP no corresponde al proyecto git, sino al archivo Android.mk. Hacer un buen uso del comando mmm para la compilación del módulo le ahorrará mucho tiempo.

Binder

Esta es la comunicación entre procesos más básica en Android. Se utiliza mucho entre aplicaciones y servicios del sistema. No solo necesita saber cómo usar AIDL, también necesita saber cómo escribir la interfaz de Binder a mano. Esto es importante para que comprenda cómo interactúan las aplicaciones de Android y los servicios del sistema. No es necesario apresurarse para comprender cómo se implementa Binder.

HAL

No dediques demasiado tiempo a esta capa a menos que estés particularmente interesado en el hardware o quieras trabajar en una empresa de soluciones.

CyanogenMod

Esta es una Rom de terceros basada en AOSP. Puedes aprender mucho de la wiki del proyecto que AOSP no te dice. Por ejemplo, cómo admitir dispositivos distintos de Nexus.

DIA

Esta es una herramienta de diagramación UML para Linux que te ayuda a clasificar el código que lees.

XDA