Código fuente de la capa Sdkui
Permítanme hablar primero sobre mi proceso de incorporación:
Paso 0, descargar el código fuente. Descargué 4.2, el código fuente de la capa de marco es 10G y el kernel es 2G. Los archivos de etiquetas creados por ctags para la capa de marco eran todos de 600 M, lo que me sorprendió en ese momento. Los miré usando vim+ctags+cscope. Son bastante buenos y la estructura es bastante clara.
El primer paso fue encontrar un buen libro "El diseño e implementación de Android Volumen 1", que hablara sobre el inicio, la inicialización, la inicialización del marco de servicios, Binder, el ciclo de mensajes, PackageManagerService y ActivityManagerService de Android. capa de estructura. Según el autor, el segundo volumen de UI Subsystem se publicará más adelante, por lo que todos esperarán y verán. De hecho, después de leer docenas de páginas de este libro, descubrí que necesitaba el conocimiento del segundo paso. De lo contrario, no podría soportarlo, así que salté al segundo paso.
El segundo paso es aprender a programar el sistema Linux. Al leer "El diseño y la implementación de Android", descubrí que la parte nativa de la capa del marco es toda la programación de Linux. Para dominar esta parte del conocimiento, pasé cuatro meses estudiando el "Manual de programación del sistema Linux" (TLPI), que tiene más de 1000 páginas. He trabajado en sistemas de archivos WIndows antes, por lo que estoy relativamente familiarizado con el lenguaje C. Los ejercicios de TLPI son muy interesantes y la cantidad es relativamente grande. He ganado mucho perseverando.
En el tercer paso, pasé cuatro meses aprendiendo algunos conocimientos sobre el kernel de Linux y leí más de la mitad de LKD y PLKA. Cuanto más aprendo, menos sé. Siento cada vez más que no entiendo, pero eso es normal. Tengo que moler lentamente. Se estima que seguiré puliendo esta área en el futuro.
El cuarto paso es volver a mirar el código fuente de Android. Esta vez completé el diseño y la implementación de Android Volumen I de una vez y finalmente obtuve un espectro de capas de marco. También me desmayé varias veces. Después de leer el código fuente anterior del kernel de Linux, no me sentí tan mareado. Es un poco estresante seguir saltando entre la capa Java y la capa nativa. Entre ellos, sentí que la base de Java no era demasiado sólida, así que volví y recuperé la octava edición de Core Java durante un mes. Pero este libro no cubre el subsistema UI, así que leí nuevamente el análisis del kernel de Android.
El quinto paso es "Análisis del kernel de Android" (este libro en realidad habla sobre la capa de marco, y el autor también está integrado, por lo que cuando escribe sobre la capa de marco, la escritura no es muy buena ni detallada. pero todavía hay muchos Es interesante. Cuando escribió la ROM y abrió la placa de desarrollo, probablemente estaba hablando de su propia línea. Después de todo, el libro era un poco antiguo y gran parte del código estaba desactualizado. (Las opiniones del autor son de gran valor de referencia). Este libro es muy valioso sobre los subsistemas de interfaz de usuario y los sistemas de procesamiento de mensajes clave/táctiles, especialmente el Capítulo 13, que atrae opiniones y es muy gratificante cuando se combina con la investigación del código fuente. Más tarde dijo que el marco de compilación y las cosas relacionadas con la ROM son información muy valiosa.
El sexto paso, para complementar el conocimiento de otros subsistemas, como los módulos de administración de energía, leí la serie "Comprensión profunda de Android". Personalmente creo que esta serie parece un poco incómoda, pero aun así resulta valiosa como complemento.
El séptimo paso, análisis de escenarios del código fuente del sistema Android, la obra maestra de análisis del código fuente de Luo Shengyang es más detallado que el diseño y la implementación de Android, pero la desventaja es que involucra menos módulos y el código fuente seleccionado es más. más detallado que el de Android. El diseño y la implementación son un poco más antiguos. Después de leer el libro, debes investigar el blog del autor. Hay muchas cosas que seguro te satisfarán.
El octavo paso es comprar una placa de desarrollo y jugarla tú mismo. Todavía no he llegado a ese punto porque siento que estoy casi listo con el conocimiento. Pueden pasar algunos meses antes de que esté listo para 6410 o pastel de frambuesa.
Finalmente, como trabajé en Windows hace 11 años y no sé mucho sobre Linux, tengo que leer este tipo de libros. Si hubiera estado haciendo Linux, creo que se podrían ahorrar muchos pasos. Ir directamente al código fuente es la forma correcta.
Estoy involucrado en el desarrollo de SIG móviles y aprendí la capa de marco por interés, pero la plataforma de contratación para desarrolladores de la capa de marco de Android es bastante competitiva. Hay muchas ROM personalizadas y los trabajos de televisión inteligente se encuentran en un estado en el que es difícil encontrar talento. Después de todo, existe un cierto umbral. Hoy en día, varias capacitaciones de iOS hacen que las personas se sumerjan en el desarrollo, y las deficiencias de iOS que solo pueden realizar el desarrollo de SDK quedan completamente expuestas. Un grupo de novatos, veteranos y novatos están todos apiñados en el desarrollo del SDK. No creo que sea bueno. Por otro lado, en el lado de Android, aunque los novatos no han ganado dinero con ios, son muy sostenibles y lo están haciendo desde el kernel del controlador sdk-Framework. También hay muchas personas que gradualmente se convierten en desarrolladores/desarrolladores integrados de Linux. Los recién llegados, los veteranos y los novatos están todos en sus respectivas posiciones y la jerarquía es muy buena.