Después de obtener el código fuente del proyecto de Android, ¿cómo puedes leerlo a la velocidad más eficiente?
Por cierto, nuestra empresa ha estado trabajando con Windows+Linux+Samba.
2. Desde una perspectiva macro, el código fuente de Android se divide en implementación de funciones verticales y expansión de funciones horizontales. Al leer el código fuente, es necesario comprender ambas ideas.
Por ejemplo, si necesita estudiar el principio de implementación del sistema de audio, verticalmente: debe comenzar desde el seguimiento de la reproducción de una pieza musical y, hacia abajo, encontrará que Jni llama a la biblioteca de decodificación, creación y uso de memoria compartida, conmutación de enrutamiento, apertura de dispositivos de entrada de audio e inicio de transmisiones de audio.
3. La mayoría de los módulos funcionales de Android son de arquitectura C/S. Debes tener en cuenta esta relación jerárquica. Debes pensar claramente en la ubicación del servidor, que es lo que debes romper. . ciudad. Luego, quítelo capa por capa para encontrar HAL y Kernel.
Hace unos tres meses, terminé de leer el código fuente del sistema de interfaz de usuario de Android. Es la parte más compleja de Android, sin excepción.
Primero necesito encontrar un comienzo, y creo que el que está directamente relacionado con la interfaz de usuario es la actividad más común, así que comenzaré a analizarlo minuciosamente.
Comencé creando la Actividad, buscando dónde se creó realmente la Actividad, el método setContentview estaba obviamente relacionado con la UI, y cuando estos dos aspectos se unieron, encontré ViewRoot y WindowManager, junto con el WM y WMS Encontré la superficie, y la función de dibujo, que en realidad dibuja cosas en el DeCorView que aparece cuando se crea la actividad. Usando Source Insight, resumí un diagrama estático horizontal de la capa Java de la interfaz de usuario.
Después de completar este UML estático, siento que puedo comenzar a rastrear la implementación de la función, la mayor parte de la cual es código C++ (es por eso que estoy decidido a no renunciar a Eclipse. Miré cada capa y). SurfaceSession según la función de dibujo Relaciones entre controles y transacciones, controles de lectura/escritura SharedBuffer, controles robustos de SurfaceSession, controles de lectura/escritura SharedBuffer, controles de lectura/escritura SharedBuffer, controles de lectura/escritura SharedBuffer y controles de lectura/escritura SharedBuffer. SurfaceFlinger se encarga de todo, la salida de imágenes OpenGL ES penman, frameBuffer y FrameBufferDevice. Todo sucede de una vez.