Android的那些輪子

來源:互聯網
上載者:User

標籤:android   io   ar   os   sp   檔案   資料   on   問題   

整個AOSP代碼,包天包地,從kernel,libc,gui,net……簡直包括了絕大多普通程式員職業生涯涉及的整個領域。其實,開源界早已經遇到並且解決了Android的很多問題,不過google討厭GPL說起,或者說,google為了照顧更多的商業公司,以一已之力,重造了很多輪子。下面縮縮。

glibc <---->bionic

首先標準c的api必不可少。另外android構建於linux之上,linux實現的那套posix api,linux專有的系統調用,也得封裝一套出來。gnu開發了glibc,google開發bionic。

glib<---->system/core/libcutils+libsparse

c語言缺乏標準的資料結構實現,類似鏈表,雜湊表,動態數組之類的資料結構在並沒有在標準c中做任何規則。gtk組織開發了glib做為自己的圖形庫的支援,android自然也不能落後,也要來一套,並且增加了,疏鬆陣列這種資料結構。

stl/boost<--->system/core/libutils

android的framework底層是用c++實現的,要用c++,什麼智能指標,thread,string,vector,hashmap,list等基礎資料結構,得首先準備好。stl/boost實現的那套,android這次沒有原樣來一套,原則是,用多少實現多少,實現精簡的stl/boost。

busybox<--->system/core/sh + toolbox + rootdir

有了linux os,終端(shell)同樣是必不可少的組件。我們需要shell指令碼解譯器,各種常用cmd,以及檔案系統構建。busybox的工作,同樣要再做一遍。

udev<--->system/vold

要處理裝置的熱插拔,比如sd卡,u盤等。我們要處理使用者空間也核心的通訊,我們有netlink socket。開源界給出的選擇是udev,google給出的選擇是void。

xinetd<--->system/netd

xinetd linux下的網路守護進程,處理各種網路服務。android給了另外一套netd.

com/dbus/cobra<--->binder

其實idl來描述介面,都是long long ago的事了。比如微軟的com組件,unix的cobra,處理序間通訊的組件何其多也,無論你是用核心虛擬設備驅動,還是socket domain,前撲後繼,大家為了跨越進程,做了太多努力了。

Android的那些輪子

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.