`
mmdev
  • 浏览: 12923907 次
  • 性别: 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系统结构。

    智慧酒店项目智能化系统汇报方案qy.pptx

    智慧酒店项目智能化系统汇报方案qy.pptx

    基于C语言编写的高并发Epoll服务器.zip

    基于C语言编写的高并发Epoll服务器.zip

    liba2ps1-4.14-bp156.5.5.ppc64le.rpm

    liba2ps1-4.14-bp156.5.5.ppc64le

    基于matlab实现囚徒困境中的博弈策略的模拟:尝试了采用几种策略进行博弈使最终双赢的概率变大.rar

    基于matlab实现囚徒困境中的博弈策略的模拟:尝试了采用几种策略进行博弈使最终双赢的概率变大.rar

    毕业设计:springboot的乐器社区网站设计与实现(源码 + 数据库 + 说明文档)

    毕业设计:springboot的乐器社区网站设计与实现(源码 + 数据库 + 说明文档) 2相关技术介绍 3 2.1 MySQL数据库简介 3 2.2 springboot编程技术 3 2.3 VUE框架 3 2.4 B/S结构 4 3系统可行性分析 5 3.1概况 5 3.2可行性研究的前提 5 3.3可行性分析 6 3.3.1技术的可行性 6 3.3.2经济的可行性 6 3.3.3操作可行性 6 3.3.4法律的可行性 7 3.4设计的基本思想 7 3.5性能需求 7 3.5.1系统的安全性 7 3.5.2数据的完整性 7 4 系统设计 9 4.1总体设计 9 4.2数据库的分析与设计 9 4.3数据库表 10 第五章 系统功能实现 12 5.1 乐器社区网站首页界面 12 5.2 乐器信息列表界面 12 5.3管理员管理界面 13 5.4新建乐器信息界面 14 5.5二手商品购买界面 14 6 系统测试 15 6.1测试说明 15 6.2功能测试 15 6.3可用性测试 15 6.5性能测试 16 6.6用例测试 16 6.7测试结果 16

    2024-2030全球及中国鼓机踏板行业研究及十五五规划分析报告.docx

    2024-2030全球及中国鼓机踏板行业研究及十五五规划分析报告

    毕业设计:基于springboot的中小企业财务管理系统(源码 + 数据库 + 说明文档)

    毕业设计:基于springboot的中小企业财务管理系统(源码 + 数据库 + 说明文档) 2 开发技术简介 6 2.1 基于B/S结构开发 6 2.2 jsp语言简介 6 2.3MYSQL简介 6 2.4 eclipse工具 7 3 需求分析 7 3.1 可行性分析 7 3.1.1 经济可行性 7 3.1.2 技术可行性 7 3.1.3 操作可行性 7 3.2 功能需求分析 8 3.3 非功能需求分析 8 4 系统设计 9 4.1 数据库设计 9 4.2 系统模块总体设计 10 5 系统详细设计 10 5.1 后台登录页面 10 5.2 管理员信息 11 5.3 财务人员信息 11 5.4 资产负债 12 5.5 税收管理 12 6 系统测试 13 6.1 测试的目的 13 6.2 测试的方法 13 6.3 测试的重要性 14 6.4 测试内容 14 6.5 测试结果 14

    基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip

    基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构建基于神经网络的图片识别系统源码.zip基于Springboot集成yolo3构

    基于C#的开源音乐播放器MetroPlayer.zip

    基于C#的开源音乐播放器MetroPlayer.zip

    MD5哈希算法的C++实现(兼容大端字节序的CPU)

    MD5哈希算法的C++实现(兼容大端字节序的CPU) 测试代码 #include<iostream> #include<iomanip> #include"md5.c" int main() { using namespace std; u8 $finalHash[16] = {}; const char* str = "a"; //调用MD5 int ret = MD5((u8*)str, strnlen_s(str, INT_MAX), $finalHash); cout << ret << "\n\n"; //输出结果 for (int i = 0; i < 16; i++) { cout << hex << setw(2) << setfill('0') << int($finalHash[i]); } cout << "\n\n"; return 0; }

    2024新版Java基础从入门到精通全套视频+资料下载

    2024新版Java基础从入门到精通全套视频+资料下载

    51单片机输出PWM波,可调频率、占空比

    项目基于Proteus仿真,使用at89c52作为主控芯片,输出PWM波,通过按键设置PWM波的频率和占空比,并且将频率和占空比显示在数码管上。

    2024年全球油性皮肤保湿霜行业总体规模、主要企业国内外市场占有率及排名.docx

    2024年全球油性皮肤保湿霜行业总体规模、主要企业国内外市场占有率及排名

    Windows系统下安装与配置Neo4j的步骤

    附件是Windows系统下安装与配置Neo4j的步骤,包含具体的操作步骤, 文件绿色安全,仅供学习交流使用,欢迎大家下载学习交流!

    Bash脚本优化JAR应用启动与停止流程.zip

    本Bash脚本用于自动化管理Java JAR应用的启动、停止及监控。首先检查JAR进程是否在运行,如在运行则安全终止。随后,使用预设的Java参数启动JAR文件,并将输出和错误日志重定向至日志文件。启动后,脚本持续监控JAR进程状态,确保其在预设时间内成功启动。本脚本提供了灵活的配置和错误处理机制,为Java应用的运维管理带来了便捷与可靠性。

    基于python+django+mysql大数据反电信诈骗管理系统(源码+论文+演示视频)

    【基于Python+Django的毕业设计】基于大数据反电信诈骗管理系统(源码+录像演示+说明).zip 【项目技术】 python+Django+mysql 【实现功能】 主要的功能有文本分析、文本管理、修改密码、个人信息和用户管理。 详见:https://blog.csdn.net/Timi2019/article/details/138357613

    libAvogadro1-1.98.1-bp156.1.1.ppc64le.rpm

    libAvogadro1-1.98.1-bp156.1.1.ppc64le

    261ssm-mysql-jsp 高校学生请假管理系统.zip(可运行源码+数据库文件+文档)

    本系统从使用者角度看,分为学生群体、教师群体。学生及教师都在本系统中录入自己的基本信息。当学生需要请假的时候,可以直接在本系统上填写请假事由、请假时间及返校时间,提交申请即可,然后关注老师的审批进度;当老师在系统上查询到请假信息记录时,审批确认是否同意批复学生的请假意向;当老师审批完成之后,学生就可以看到老师对请假单的审批结果。 高校学生请假管理系统可以让老师和学生在任何时间、任何地点都可以完成请假的整个流程工作。系统会有请假历史记录,学校可以按照月、季度、年度对学生的请假情况进行分析。因此,本系统大大提高了学生请假的效率,同时也有助于学校分析学生请假的情况。 关键字:请假;审批;学生;ssm框架;jsp技术;MySQL数据库;

Global site tag (gtag.js) - Google Analytics