android app从生成到显示的过程

来源:互联网 发布:海外阿里云服务器租用 编辑:程序博客网 时间:2024/05/20 06:38
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的图形显卡   
        ------------>在屏幕上显示

0 0
原创粉丝点击