Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo leer el código fuente de Android

Cómo leer el código fuente de Android

Debido a la necesidad de modificar una gran cantidad de código marco durante el trabajo, se dedicó mucho esfuerzo al código fuente AOSP (Proyecto de código abierto de Android) y se leyó y cambió mucho contenido tanto en el lado de la aplicación como en el servidor. lado.

Si solo desea ver la implementación de algunas clases comunes, puede descargar el código fuente desde el Administrador de paquetes de Android y leerlo en cualquier ruta IDE que tenga el código fuente.

Si quieres saber 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 el repositorio de git 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).

Soporte C (el soporte C de IntelliJ es demasiado lento).

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

Para mejorar la eficiencia, vale la pena dedicar 5 minutos a memorizar las teclas de acceso directo más utilizadas.

Ajusta tu classpath para evitar importar código inútil. Simplemente hay demasiado código en el proyecto AOSP. No agregue soporte C a su proyecto cuando aún no necesita verlo, 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, sino que 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. Puede aprender mucho de la wiki del proyecto que los funcionarios de AOSP no le cuentan. 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