為了協助與會者更好的瞭解每一個技術講座的內容,我們對 #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知識體系的重要方面,並重點分享典型移動產品的開發實踐。
- 國內資深移動開發專家評審團隊對所有課程進行把關,確保課程內容全部為“無水分” “乾貨” 。
- 全部課程均有資深開發人員講授,他們或許不是名人大腕,但一定是“技術大牛”
- 與會者全部都是移動開發人員和工程師及其Team Dev成員
更多講師和議題,持續更新中!請關註:
官網:http://devcamp.csdn.net/
部落格:http://blog.csdn.net/shiningxyy
微博:http://weibo.com/cmdnclub
論壇:http://cmdn.net/