Red de conocimiento informático - Aprendizaje de código fuente - Después de obtener el código fuente del proyecto de Android, ¿cómo puedes leerlo a la velocidad más eficiente?

Después de obtener el código fuente del proyecto de Android, ¿cómo puedes leerlo a la velocidad más eficiente?

1. Obviamente, Eclipse no es una buena herramienta para leer el código fuente de Android. No es fluido, la eficiencia de búsqueda es baja y no puede ver de manera efectiva la relación de herencia/llamada. Se recomienda Source Insight Con esta herramienta, puede explorar códigos fuente masivos de Android, explorar libremente entre códigos Java, C++ y C y encontrar rápidamente las relaciones de herencia que necesita.

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.

上篇: ¿Cuál es la diferencia entre i, k y r en la programación CNC? 下篇: Hay varias formas de usar Dark BoxLa nueva fórmula de síntesis de arma mágica en 1.10 se usa para reemplazar la fórmula 3CG, lo cual es muy importante. 3 gemas ordinarias, 1 arma con agujeros (cualquier tipo) = 1 arma mágica con agujeros (mismo tipo). Esta fórmula generará aleatoriamente una nueva arma con agujeros. El tipo de arma es el mismo que la original y el número de agujeros. Las propiedades también cambiarán. El mayor efecto es convertir un arma con un agujero negro en un arma azul. 3 gemas impecables 1 arma mágica = Arma mágica perforadora Perfora un arma azul normal, el número de agujeros no está especificado y debe generarse aleatoriamente. Los atributos cambiarán por completo... 1 escudo mágico pequeño 1 bastón de clavos 2 calaveras - gt Escudo de espinas 4 pociones de salud 1 rubí 1 espada mágica - gt; ; Palo largo salvaje 1 Poción de asfixia 1 Poción de vida-gt; Poción de antídoto 2 Carcaj-gt; ................................................. ................ ............ La fórmula para fabricar gemas no ha cambiado. 3 Ruby-gt agrietado; Ruby-gt agrietado 3 Ruby-gt impecable 3 Ruby-gt impecable La síntesis de otras gemas es la misma que la anterior. ................................................. ................. ................................... 10 Runas La fórmula de síntesis de runas anterior no ha cambiado. 3 Runa 01-gt; Runa 02 3 Runa 02-gt; Runa 03 3 Runa 04-gt; ; Runa 07 3 Runa 07-gt; Runa 07 3 Runa 08 3 Runa 09 3 Runa 09-gt; ................................................. ..... ................ 09 La fórmula clásica de síntesis de la magia, 3PG sigue siendo válida y 3CG está cancelada. 3 Gema Perfecta 1 Objeto Mágico-gt; Objeto Mágico.................... ................................................. 09Golden Las fórmulas de síntesis relevantes permanecen sin cambios. 6 calaveras perfectas, 1 accesorio dorado - gt; accesorios dorados de bajo nivel, 1 calavera perfecta, 1 accesorio dorado, Piedra de Jordan - gt; agujero en el accesorio dorado 1.10 Nuevo La fórmula de síntesis para las runas 11 y superiores.