`
mmdev
  • 浏览: 12885206 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

【专访】小米科技MIUI首席架构师 汪文俊:了解安卓系统架构对程序员很重要 | Android DevCamp

 
阅读更多

为了帮助与会者更好的了解每一个技术讲座的内容,我们对 #DevCamp# 的很多讲师进行了专访,以帮助与会者了解:

WHY 为什么选择这个主题?

WHAT 这个主题覆盖哪些内容?

HOW 以怎样的方式呈现出亮点?


小米科技总结多年安卓系统架构经验:《Android程序的编译,安装和运行》| Android DevCamp

议题简介:Android程序的编译,安装和运行。从程序员的观点探索Android系统提供的编程抽象,从程序的整个生命周期讨论一下Android系统结构。

讲师简介:汪文俊,中国科技大学硕士,原IBM系统工程师,现为小米科技MIUI首席架构师,开源C编译器项目ucc的作者。

详情:http://blog.csdn.net/shiningxyy/article/details/7689710


以下是访谈精华:


Q:这个技术分享的主题关键字是什么?

#安卓系统架构#


Q:为什么选择这个主题?

汪文俊在小米科技负责MIUI源代码结构,主管MIUI机型适配。在过去的3年里,从Android 2.3到Android 4.0,汪文俊接触过几乎所有的机型(2.3有适配30多个机型,4.0大致适配过20多个机型)。机型适配时,要了解整个Android系统的结构。期间积累了大量Android系统架构的知识是实践。本次演讲则是对这些知识和实践的总结。


Q:主题演讲中将涉及哪些内容?解决哪些问题?

汪文俊从程序开发的角度来理解Android系统结构,如,Android如何基于Linux上运行的,与其他普通的程序编写有何不同,Android程序入口点在哪里?等等。


从程序的编译,安装和运行整个流程介绍Android系统的宏观架构。

- 编译:资源编译器,如何资源和代码打包在一起。

- 安装:安卓系统如何管理这些包。

- 运行:程序的入口点在哪里。


Q:编译、安装和运行,三个之间的关系是什么样?


汪文俊:其实就是想通过这个过程,从程序员角度剖析。例如你开发一个程序,肯定要先写一个程序,然后编译好,再编译安装到Android系统上,最终可以运行。从这一整套流程来谈谈,Android系统是怎么运作的。从这一整套流程来研究Android系统结构。


Android本身编译的时候,跟一般的编译不大一样。虽然大家知道Android是基于Java的,但是它跟普通的桌面上的JAVA程序是不一样。它编译的时候有两种:一种是代码,一种是资源。他有这种代码和资源分离的概念。编译的时候我想主要讲讲资源编译器,资源编译器如何把资源和代码打包在一起。安装就涉及到Android整个系统是怎么管理这些应用程序,如何管理这些包。最后运行就是讲Android隐藏了程序的组织构件,它是如何封装起来,通过封装机制最终让程序运行起来。主要就是想通过这三点来讲Android的整个架构。内容保证非常精彩。


一个系统如果你能够理解它是如何运作的,对你写东西的时候是有帮助的。尤其像现在一个普通Android的程序员可能上来就照一些例子去写。但是他不理解背后这些机制,为什么会这样写。从我们MUMI研发组内部来看这些知识很有帮助。


Q:以您的理解Android是一种怎样的结构?


汪文俊:首先Android是基于Linux的内核,它在Linux上有个Dalvik虚拟机。再往上一层,我们把它叫JNI层,就是说,它是Java虚拟机、C、Linux通讯的一个管道。再往上,这是一般大家说Android系统实际上是指的这一层。它有一些系统服务,实现的一些如程序安装包的管理、安装和整个程序运行。因为Android对用户是封装的,程序封装的不是什么程序的概念,它是在Linux提供的进程基础之上,再封装的一些概念。Android开发不仅仅是Java Code。从这样一看,开发者们以后在写Android程序的时候,什么时候我需要去和JNI,什么时候需要去学一些C Code。能理解Android的结构是什么样的,对于大家更好的Android开发实践是很有帮助的。


Q:程序开发为什么需要了解这一流程?对开发者的价值是什么?

对整个系统有一个宏观的理解,这样对开发者了解结构和性能上的东西会更有帮助,避免在程序开发中思维局限。


Q:对于MIUI来说,比如说用户要有一个反馈,咱们这块会有一些什么样的处理流程呢?比如发现一个地方在论坛报告一个Bug,咱们这块我看反应很快?


汪文俊:Bug解决方面,一般没有硬性的实践要求,但是我们原则上不超过一个星期的。


现在我们有一个叫做荣誉开发者,我们论坛会招一些,可以认为他是测试人员,但是他们是一些发烧友当中对Android比较了解熟悉的人。他们会对用户反应的问题进行第一轮过滤,一些很简单的问题,比如说我找不到这个设置项,这个他们可以解答。有一些真正的,他们觉得是我们程序的Bug,再反馈到我们一个叫开发专区的地方。在那我们开发专区对某个模块有专门负责人的,这个很明确。相关负责人每天必须去看。我们要求回复率达到90%以上,这些问题你都得去回复。我们工作有一小部分时间是在论坛上面,我们跟用户要去看用户的反馈。

Q:小米的研发团队如何在内部做技术分享?

小米内部的分享机制:2周1次,MIUI有很多项目,主要是:系统组,通讯组(电话、联系人、短信),米肤,多媒体组。小米鼓励研发团队的经验分享。每一次主讲人会准备简单的PPT,大家在分享中探讨和解决问题。


分享机制的意义:增进大家对产品的了解;对新员工非常有帮助;有些话题能够激发出很好的产品点子!


Q:对7月28日的Android Dev Camp有何期待?


- 通过参加活动,了解大家关注点在哪里?看到大家在做哪些方向?

- 人脉,交流的平台。很难得有这么多移动开发技术的实践者聚在一起。


iOS DevCamp 7月27日 | Android DevCamp 7月28日 | 北京 | 新云南皇冠假日酒店

这是一个真正属于移动开发者的会议,参会者以交流、学习、提高、答疑解惑的移动开发实践者为主,你将极少看到投资人、市场人员、名人大腕、还有不知是何目的来参会的“打酱油”的人。参会者只有像你一样的有经验的开发者和工程师。


【特色】:

- 一个真正意义上的iOS/Android开发技术大会。

- 企业间、团队间交流和学习移动开发技术实践的平台。

- Dev to Dev,来自开发者,服务开发者。所有课程内容均不含任何商业推广目的。

- 课程内容覆盖iOS/Android知识体系的重要方面,并重点分享典型移动产品的开发实践。

- 国内资深移动开发专家评审团队对所有课程进行把关,确保课程内容全部为“无水分” “干货” 。

- 全部课程均有资深开发者讲授,他们或许不是名人大腕,但一定是“技术大牛”

- 与会者全部都是移动开发者和工程师及其开发团队成员


更多讲师和议题,持续更新中!请关注:

官网:http://devcamp.csdn.net/

博客:http://blog.csdn.net/shiningxyy

微博:http://weibo.com/cmdnclub

论坛:http://cmdn.net/






分享到:
评论

相关推荐

    Android DevCamp幻灯片分享:Android程序的编译,安装和运行 | 小米科技 汪文俊

    讲师简介:汪文俊,中国科技大学硕士,原IBM系统工程师,现为小米科技MIUI首席架构师,开源C编译器项目ucc的作者。 话题简介:Android程序的编译,安装和运行。从程序员的观点探索Android系统提供的编程抽象,从...

    汪文俊:Android程序的编译,安装和运行

    Android程序的编译,安装和运行。从程序员的观点探索Android系统提供的编程抽象,从程序的整个生命周期讨论一下Android系统结构。

    ASP.NET基于TCP协议的简单即时通信软件的设计与实现(源代码+论文).rar

    计算机毕业设计,含源码

    青海省各地级市市辖区数据1999-2022人均GDP建成区居住用地道路面积供用水燃气财政收支就业参保人数医院床位等.xls

    数据来源:中经数据库 主要指标110多个(全部都是纯粹的 市辖区 指标),大致是: GDP GDP增速 第一产业增加值占GDP比重 第二产业增加值占GDP比重 第三产业增加值占GDP比重 人均GDP 社会消费品零售总额 固定资产投资(不含农户) 新设外商投资企业数_外商直接投资 实际利用外资金额(美元) 一般公共预算收入 一般公共预算支出 一般公共预算支出_教育 一般公共预算支出_科学技术 金融机构人民币各项存款余额_个人储蓄存款 金融机构人民币各项存款余额 金融机构人民币各项贷款余额 规模以上工业企业单位数 规模以上工业企业单位数_内资企业 规模以上工业企业单位数_港澳台商投资企业 规模以上工业企业单位数_外商投资企业 规模以上工业总产值 规模以上工业总产值_内资企业 规模以上工业总产值_港澳台商投资企业 规模以上工业总产值_外商投资企业 规模以上工业企业流动资产合计 规模以上工业企业固定资产合计 规模以上工业企业利润总额 规模以上工业企业应交增值税 规模以上工业企业主营业务税金及附加 户籍人口数 年均户籍人口数 户籍人口自然增长率 第一产业就业人员占全部城镇单位就业人员比重 第二产业就业人员占全部城镇单位就业人员比重 第三产业就业人员占全部城镇单位就业人员比重 城镇非私营单位就业人员数 城镇非私营单位就业人员数_第一产业 城镇非私营单位就业人员数_第二产业 城镇非私营单位就业人员数_第三产业 城镇非私营单位就业人员数_农、林、牧、渔业 城镇非私营单位就业人员数_采矿业 城镇非私营单位就业人员数_制造业 城镇非私营单位就业人员数_电力、热力、燃气及水生产和供应业 城镇非私营单位就业人员数_建筑业 城镇非私营单位就业人员数_批发和零售业 城镇非私营单位就业人员数_交通运输、仓储和邮政业 城镇非私营单位就业人员数_住宿和餐饮业 城镇非私营单位就业人员数_信息传输、软件和信息技术服务业 城镇非私营单位就业人员数_金融业 城镇非私营单位就业人员数_房地产业 城镇非私营单位就业人员数_租赁和商务服务业 城镇非私营单位就业人员数_科学研究和技术服务业 城镇非私营单位就业人员数_水利、环境和公共设施管理业 城镇非私营单位就业人员数_居民服务、修理和其他服务业 城镇非私营单位就业人员数_教育 城镇非私营单位就业人员数_卫生和社会工作 城镇非私营单位就业人员数_文化、体育和娱乐业 城镇非私营单位就业人员数_公共管理、社会保障和社会组织 城镇非私营单位在岗职工平均人数 城镇就业人员数_私营企业和个体 城镇非私营单位在岗职工工资总额 城镇非私营单位在岗职工平均工资 城镇登记失业人员数 建成区面积 建设用地面积 建设用地面积_居住用地 液化石油气供气总量 液化石油气供气总量_居民家庭 人工煤气、天然气供气总量 人工煤气、天然气供气总量_居民家庭 液化石油气用气人口 人工煤气、天然气用气人口 城市公共汽电车运营车辆数 城市出租汽车运营车辆数 城市公共汽电车客运总量 道路面积 排水管道长度 建成区绿化覆盖面积 建成区绿化覆盖率 绿地面积 公园绿地面积 维护建设资金支出 土地面积 生活用水供水量 供水总量 全社会用电量 城乡居民生活用电量 工业生产用电量 房地产开发投资 房地产开发投资_住宅 限额以上批发和零售业法人单位数 限额以上批发和零售业商品销售总额 普通中学学校数 中等职业教育学校数 普通小学学校数 普通高等学校专任教师数 普通中学专任教师数 中等职业教育专任教师数 普通小学专任教师数 普通高等学校在校生数 普通中学在校生数 中等职业教育在校生数 普通小学在校生数 电视节目综合人口覆盖率 公共图书馆总藏量_图书 医疗卫生机构数_医院和卫生院 卫生人员数_执业(助理)医师 医疗卫生机构床位数_医院和卫生院 城镇职工基本养老保险参保人数 职工基本医疗保险参保人数 失业保险参保人数

    C常用算法程序集数值计算非线性方程与方程组的求解

    C常用算法程序集数值计算非线性方程与方程组的求解提取方式是百度网盘分享地址

    5G非正交多载波机制UFMC收发机matlab代码实现,非常新,给5G通信专业研发人员提供帮助.rar

    5G非正交多载波机制UFMC收发机matlab代码实现,非常新,给5G通信专业研发人员提供帮助.rar

    基于matlab的马尔科夫决策过程程序

    基于matlab的马尔科夫决策过程程序具有很高的价值

    2024年全球1,2-环氧丁烷行业总体规模、主要企业国内外市场占有率及排名.docx

    2024年全球1,2-环氧丁烷行业总体规模、主要企业国内外市场占有率及排名

    快递智能交叉带分拣机sw2020可编辑设计图纸.7z

    快递智能交叉带分拣机sw2020可编辑设计图纸.7z

    可升降双动力泵系统cero3.0设计图纸.7z

    可升降双动力泵系统cero3.0设计图纸.7z

    六路继电器控制板原理图+教程.7z

    六路继电器控制板原理图+教程.7z

    自己学习机器学习与深度学习的笔记,代码,案例.zip

    机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

    一个简单的Fortran脚本示例,它会读取用户输入的两个整数,然后计算它们的和与乘积,最后将结果输出到屏幕上

    Fortran是一种编译型语言,这意味着你需要先使用编译器将源代码编译成可执行文件,然后才能运行它。 在这个示例中,我们使用了Fortran 90/95/2003/2008/2018的语法,因为它是最广泛使用的现代Fortran版本之一。Fortran的不同版本在语法和特性上可能会有所不同,但这个示例应该在大多数现代Fortran编译器中工作。 implicit none语句用于确保所有变量在使用前都必须显式声明,这是一种良好的编程实践,可以避免潜在的错误。 print *和read *分别用于输出和输入操作。星号*表示输出/输入应该使用默认的格式。

    实现登录和注册 在控制层捕捉错误存储作用域提示相关错误信息项目包04.16

    实现登录和注册 在控制层捕捉错误存储作用域提示相关错误信息项目包04.16

    MATLAB实现信号的盲源分离~fastICA方法~源信号与混合信号个数均为2~

    MATLAB实现信号的盲源分离~fastICA方法~源信号与混合信号个数均为2~

    手动实现机器学习的经典算法。.zip

    机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

    清新花朵毕业答辩模板.pptx.zip

    清新花朵毕业答辩模板.pptx

    用Matlab实现模拟长江水质变化情况

    用Matlab实现模拟长江水质变化情况

    吴恩达机器学习视频随堂练习.zip

    机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

    linux驱动编程相关介绍、调试环境

    u-boot的下载:s3c2440.jflash、u-boot.bin

Global site tag (gtag.js) - Google Analytics