android = Linux Kernel + c/c++ Runtime Framework + Dalvik Virtual Machine + Java Runtime Framework
-生成apk的流程
(源码) (dx工具) 打包在apk中的
java编译器----------->java字节码(.class)------------>Dex字节码------------------->classes.dex文件中
-手机安装apk的过程
(java Runtime Framework中的) Socket IPC通知c/c++ Runtime Framework 中的
PackageManagerService解析 install守护进程优化apk的classes.dex
apk文件--------------------------------> + ---------------------------------------------->classes.odex文件
-apk的运行过程
(向Java Runtime Framework中的 (通过socket IPC向c/c++ Runtime Framework 里的
ActivityManagerService发送请求 ) zygote守护进程)
从Launcher点击图标-----------------------------------------> + ------------------>应用程序进程(包含一个Dalvik,并通过
Dalvik加载classes.odex文件 )
-应用程序界面的绘制和渲染过程
(Java Runtime Framework中的
By Binder IPC
SDK提供的UI类 --->
WindowManagerService) +------------------>c/c++Runtime Framework中的
申请分配Graphic Buffers SurfaceFlinger申请分配Graphic
Buffer,这时
SufaceFlinger通过HAL层次Gralloc模块向Kernel中的
显卡或GPU驱动申请分配真正的Graphic Buffers
------------>绘制UI
(硬件绘制,即,通过c/c++ Runtime Framework 中的OpenGL E绘制) 这时候SDK的UI类的与绘制相关的函数调用通过Dalvik虚拟机都转化成了C/C++ Runtime Framework里面的OpenGL操作。)
应用程序UI绘制完成之后,结果就保存上述的图形缓冲区中。
- 图形缓冲区----->手机屏幕的过程
OpenGL或HWCompsor渲染到
Binder
IPC 手机屏幕上的图形缓冲区
SurfaceFlinger提交给
图形缓冲区------------------------>SurfaceFlinger---------------------------------------->主图形缓冲区-------------------->Kernel的图形显卡
------------>在屏幕上显示
本文详细介绍了Android应用从生成APK到最终在屏幕上显示的整个生命周期,包括生成APK的流程、手机安装APK的过程、APK的运行过程及应用程序界面的绘制和渲染过程等关键步骤。
1883

被折叠的 条评论
为什么被折叠?



