Android 架構設計的思想與原則是什麼?

2021-07-04 21:45:07 字數 1719 閱讀 8705

引用些經典分析,拋玉引玉吧

rlei分析了android的設計哲學:

理解好intent,就可以理解android哲學(「所有應用生來平等」)的一部分。舉個簡單的例子,ios裡面應用要整合sns如facebook/twitter/sina weibo等,都需要應用自己實現(ios5也只是整合twitter一家);android上只需要廣播乙個share內容的intent。從理解intent如何工作開始,你就在慢慢理解activity manager, package manager, services這些android的重要元件是如何工作的。

另外binder是android架構裡非常核心的一塊。android基於intent的訊息傳遞和元件/應用解耦,下面的基礎都是binder ipc。在這一點上,android實際上是光榮的傳承了beos和palm os 6(悲催的os6…)未能發揚光大的一部分。

mvc(content provider, activity, layout, adapters)這個比較基礎,也不算android特有的。

content provider對資料訪問的抽象也是比較有意思的一塊。理想情況下,content provider可以讓客戶端用uri以語義化的方式訪問資料(uri本身即表示資料層次結構和查詢條件),而下面資料庫表的結構可以任意變動,不影響客戶端**。當然實做的時候content provider還是會被各種複雜的where子句暴露出sql的實現細節……

至於android的許可權管理,其實比較簡單,主要是利用現成的linux安全模型,程序之間相互隔離。api級別的許可權管理和jvm類似。

billy cui重點解析了許可權系統的設計:

android的許可權系統是基於linux,但又增加了很多自己的控制模組。

總體上來說,其分為以下幾部分許可權系統:

3. permission : 這個是最主要的許可權控制,一般開發者開發應用主要是接觸這個部分,在這部分中,會根據應用在androidmanifest.xml中宣告的use-permission而在訪問相應api或資源時判斷其是否有訪問許可權,比如常用的android.permission.internet等。

4. signature: 簽名,是android許可權系統中的重要組成部分,對於系統簽名的應用,會有一些特殊的功能,而shareuid等特性也是需要同一簽名作為基礎。此外,permission在設定/自定義其許可權時也經常會使用到簽名,比如控制只有我自己的應用才可以訪問我自己定義的公開api。

除此以外,其實android在uid的裡面設定了一些預定義有特殊功能的uid,比如system/media等,在配置其system level的services的時候會用到。

董兆輝則認為android主要是基於元件搭配思想:

android是開源的,不過開源不意味著可以亂來,開源只是告訴你我是怎麼做的,至於為什麼這麼做,就是另外乙個問題了。任何乙個系統如果沒有許可權管理,那不是亂套了麼?我倒是覺得android的許可權管理設計的還不錯,有些地方比ios好,也較靈活,不過同樣是因為這一點,容易被利用。

說到android架構的設計思想和原則,按我的理解主要是元件搭配,即在使用者看來,所有的module或者元件,都是可以重複利用和簡單組合的。想法是好的,不過有得必有失,或者說android現在做的還不夠好,在效能方面是很低的,否則的話android也不會推出補丁(ndk之類的,dalvik的不斷公升級)。

我覺得所有framework或者平台或者語言都想給應用開發者最方便使用的介面,最人性化的體驗,同時又要爭取最大的效能,兩者權衡折中吧。不過隨著硬體速度的飛速增長,效能的權重會變低。

架構設計思想總結

1 分而治之 簡單的說就是將複雜的業務,工作進行拆分。開發中最早接觸到的mvc 三層架構就是最經典的案例。在開發中業務總是會比較複雜,通過拆分,任務分配到每個成員,大家各司其職,降低任務難度,同時又能將工作處理好。3 業務發展驅動技術發展,技術發展驅動業務 通俗的說,我們上班是為了賺錢,公司運營也是...

架構之道之軟體架構設計的思想

一 架構師決定著軟體質量 在軟體組織中,架構師的作用舉足輕重。軟體的質量很大程度上是由架構設計的質量來決定的。為了建立高質量的軟體產品 增強產品的競爭力,培養高水平的架構師隊伍,建立有效的架構團隊,提公升架構師隊伍的分析與設計能力,成為企業關注的重心。二 體系結構設計決定著架構的成敗 多年來的實踐告...

架構設計開篇 架構設計的目標與衡量

程式設計即設計,即架構。架構,這個詞比較神秘,以致於很多程式設計師望而卻步,以為要什麼了不得的本事。確實的,架構設計是一種高遠的目標,但千里之行,始於足下。架構的目標是什麼呢?實現所需服務 架構,致力於以更低成本 更高效率 更高質量地實現所需服務。架構,是兼顧質量 效率與成本的魔法。但架構並不研究如...