android app从生成到显示的过程_android 从app到送显-程序员宅基地

技术标签: android  

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的图形显卡   
        ------------>在屏幕上显示

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Ray_Chou/article/details/39084367

智能推荐

Dating(PAT A 1061)/ 福尔摩斯的约会(B 1014)-程序员宅基地

文章浏览阅读71次。在一行中输出约会的时间,格式为 `DAY HH:MM`,其中 `DAY` 是某星期的 3 字符缩写,即 `MON` 表示星期一,`TUE` 表示星期二,`WED` 表示星期三,`THU` 表示星期四,`FRI` 表示星期五, `SAT` 表示星期六,`SUN` 表示星期日。题目输入保证每个测试存在唯一解。

labelImg启动闪退的解决方法_labyrinthine闪退-程序员宅基地

文章浏览阅读4.5k次,点赞5次,收藏25次。labelImg启动闪退解决方法在C:\Users\Administrator将文件.labelImgSettings.pkl删除,重新运行。labelImg软件安装的路径中不能出现中文,更换一个不含中文的路径。使用anaconda prompt终端依次执行以下命令(注意大小写)(使用国内的清华镜像源,下载速度比较快):pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/pip install pyqt5-to_labyrinthine闪退

【转】学会这13个原则写UI界面文案,用户才能秒懂-程序员宅基地

文章浏览阅读78次。原文网址:http://www.niaogebiji.com/article-12011-1.html摘要: 首先,在写UI文案之前,为了理清思路,要先搞清楚三个问题:我(设计师)想让用户做什么? – 我写文案的目的为什么要让用户这么做?– 对用户有什么好处或影响怎么写才能符合用户体验?– 怎么以简洁明了的表达,让 ...首先,在写UI文案之前,为了..._网页语言文案编写规范

Python 3、selenium/执行js命令显示隐藏元素,封装js工具类-程序员宅基地

文章浏览阅读2.4k次。为什么需要js?我们需要执行函数,但是实现成本很高或很难甚至无法实现事件的时候,可以直接通过js命令调用页面上有些元素无点击事件,不可点击等,调用js直接实现效果即可还有种种原因导致,没达到我们想要的效果。使用js是一种途径(方法)1.添加 webdriver依赖from selenium import webdriver2.编写js命令,存储为字符串形式...

数据结构--平衡二叉树和红黑树-程序员宅基地

文章浏览阅读388次。来了来了,今天就要讲讲听起来就很厉害的红黑树。说道红黑树,不得不先弄明白平衡二叉树的概念,我在上一篇博客中简单提到了平衡二叉树的概念。平衡二叉树平衡二叉树又叫AVL树。在平衡二叉树中,任意节点对应的两棵子树的高度差最大为1,因此它也被称为高度平衡树。每个节点除了关键字之外,它还会记录一个平衡因子,这个平衡因子=左子树的高度-右子树的高度。因此平衡因子取值只能为0,+1或-1。拿一张维基百科...

Java入门必备知识-程序员宅基地

文章浏览阅读1.8w次,点赞108次,收藏496次。目录一、前言二、HelloWord案例编写三、基础语法1.快速生成语句:2.注释:3.标识符标识符:标识符的组成:标识符的组成规则:4.标识符命名约定:小驼峰命名法: 命名规则:5.变量变量的注意事项:6.常量常量的概述:常量的种类:7.关键字关键字的描述:关键字的特点:8.java数据类型9.类型转化自动类型转化:自动类型转化的原因:强制类型转化:一、前言前面已经进行..._java入门

随便推点

Hibernate 缓存策略-程序员宅基地

文章浏览阅读94次。Hibernate 缓存策略一级缓存又被称为” Session 的缓存”。Session 缓存是内置的,不能被卸载,是事务范围的缓存,在一级缓存中,持久化类的每个实例都具有唯一的 OID。一级缓存的生命周期与 Session 一致。一级缓存查询保存对象到数据库时,也会将此对象存储到一级缓存中,后续再根据 id 查询该对象时,也会从一级缓存中查询,不会再向数据库发送 select 语句查询。第一次查询时,首先会从一级缓存中查询,若不存在则向 MySQL 数据库发送 SQL 语句,查询到结果并

华为鸿蒙HarmonyOS,HDC2020,华为鸿蒙HarmonyOS会带来哪些不一样的体验?-程序员宅基地

文章浏览阅读678次。说个正事,下个月 HDC.2020 就要来了。算起来,距离华为去年发布 HarmonyOS,已经过去了整整一年。不出意外的话,这次它将迎来一次新的升级。这个在特殊时期诞生的 HarmonyOS,因为某些特殊的因素,一度被很多用户片面地理解成专为智能手机设计的操作系统。至今机哥的后台里,仍然有人在问诸如“Mate40 会不会搭载 HarmonyOS”的问题。其实这种期待并不难理解,但华为想要的并不仅..._华为升级鸿蒙打游戏能开陀螺仪吗?

滤波器设计(二)模拟到数字_qt实现低通滤波器-程序员宅基地

文章浏览阅读3.3k次,点赞4次,收藏38次。系列文章目录【音频处理】如何“认识”一个滤波器?【音频处理】IIR滤波器设计(一)【音频处理】IIR滤波器设计(二)文章目录系列文章目录前言一、模拟信号滤波器到数字信号滤波器的转换1. S域与Z域2. 模拟信号滤波器3. 双线性变换二前言在 【音频处理】IIR滤波器设计(一) 中,我们介绍了多种滤波器,并给出它们的差分方程、变换方程等。针对每种滤波器,我们都举了一个具体的实例来说明。同时,还讨论了零点和极点对频响的影响,已经如何用平面几何的方法计算_qt实现低通滤波器

poj3268 Silver Cow Party(最短路变形)_poj3268 数据-程序员宅基地

文章浏览阅读612次。Silver Cow PartyTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 13243 Accepted: 5959DescriptionOne cow from each of N farms (1 ≤ N ≤ 1000) conveniently_poj3268 数据

harmonyos2.0开发者beta,华为鸿蒙 HarmonyOS 2.0 手机开发者 Beta 活动(广州站)报名开启...-程序员宅基地

文章浏览阅读100次。IT之家 3 月 11 日消息华为在去年 12 月 16 日举行 HarmonyOS 2.0 手机开发者 Beta 活动。现场正式发布了 HarmonyOS 2.0 手机开发者 Beta 版本。同时,HarmonyOS 2.0 手机开发者 Beta 开启公测。华为表示,HarmonyOS 是面向万物互联时代的全场景分布式操作系统,华为希望和合作伙伴、开发者一起打造面向万物互联时代的超级终端体验。..._如何让手机参与华为beta软件活动

cc1: all warnings being treated as errors 解决办法_make 如何不要 all warnings being treated as errors-程序员宅基地

文章浏览阅读6.9k次。1、只需要运行:$ CXXFLAGS="-Wall"$ ./waf configure($不属于命令) 或者 2、在 makefile 中找到 -Werror 将其注释掉或者删除_make 如何不要 all warnings being treated as errors