为了帮助与会者更好的了解每一个技术讲座的内容,我们对 #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/