導航:首頁 > 文檔加密 > android內核剖析pdf

android內核剖析pdf

發布時間:2022-05-01 02:35:47

A. 比較不錯的android學習書籍

學習一樣新事物或許有多種方式,報培訓班,看視頻,向高手請教等等,但一本好書往往可以讓你少走很多彎路,事半功倍。
下面我會推薦幾本個人覺得搞Android開發值得一讀的書籍。
1,Head First java(中文版)(第2版)(涵蓋Java5.0)
推薦理由:Android應用層和大部分framework層用的都是java,加上現在大學教育大家都懂得,學的少,混的多,所以立志於搞這個,java基礎還是有必要夯實一下的。
2,Head First設計模式(中文版)(2004年度JOLT大獎獲獎圖書)
自己做一個模塊挺長時間了,導師讓出個文檔。自己去寫了,但導師看一遍後,就問,你知道這個功能是什麼了,但是為什麼這樣設計,你想過沒?當時我就被問住了,他也沒多說什麼,只是讓我找些設計模式的書看看。
推薦理由:雖然這本書看起來也很歡樂,但是設計模式到底還是一種編程習慣的濃縮,很多模式即使看到了,也不一定能理解,即使理解了,也不一定能用上。即使用上了,也不定真用對了。這本書我只是明白了點皮毛。
3,深入理解Android(卷1)
推薦理由:能幫助你深入理解view,作者的文筆流暢,見解獨到,而且系統地,深入地講解了Android系統原理。同時作者那種層層遞進,抽絲剝繭式的分析模塊的手法也非常值得學習。聽說很快出2了,期待一下,哪怕是收藏。
4,Android內核剖析
推薦理由:作者本人就是從上到下無所不通的全才,但是行文非常務實,專注。講的點都能講透,感覺要是會點c或驅動看這本書會更有帶入感。

B. linux和安卓具體是存在什麼關系

安卓(Android)是一種基於Linux的自由及開放源代碼的操作系統。兩者是並存關系。

Android一詞的本義指「機器人」,同時也是Google於2007年11月5日宣布的基於Linux平台的開源手機操作系統的名稱,該平台由操作系統、中間件、用戶界面和應用軟體組成。

Android的系統架構和其操作系統一樣,採用了分層的架構。從架構圖看,Android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和Linux內核層。

2010年2月,Linux內核開發者Greg Kroah-Hartman將Android的驅動程序從Linux內核「狀態樹」(「staging tree」)上除去,從此,Android與Linux開發主流將分道揚鑣。

(2)android內核剖析pdf擴展閱讀

Linux大多數情況下指的是Linux發行版,即GNU/Linux發行版。它不僅包括Linux內核,還包括各種各樣的系統管理軟體或應用工具軟體,就好比Windows實際上是由NT內核與應用程序的組合一樣。

只不過巧合的是,Linux發行版的內核名字就叫Linux,時間長了,很多人就將Linux內核與Linux發行版混為一談。Linux發行版中的軟體通常只收錄經過開源社區審核過的開源軟體,或者經過商業機構審核的閉源軟體。

而安卓對應的則是Android/Linux,毫無疑問系統也是開源的,但問題就在於安裝在上面的軟體基本都是閉源的,而且針對這些軟體基本沒有審核機制。僅僅這一點就能說明安卓與Linux發行版是有比較大的區別的。

C. 請問做android驅動研發需要如何入門啊有么有推薦的書籍啊

驅動研發都是底層研發,而android系統的底層相當於一個裁剪版的linux系統。所以你想對android驅動研發入門也就是要對linux驅動入門。

要推薦書的話,你可以看看 《Android 內核剖析》。希望對你有幫助

D. android和Linux的區別

有以下三點區別:

1、Android沒有本地窗口系統,而Linux是有X窗口系統。

2、Android沒有glibc支持,而Linux是有glibc支持的。

3、Android是有自己專有的驅動程序。

雖然Android基於Linux內核,但是它與Linux之間還是有很大的差別。

(4)android內核剖析pdf擴展閱讀

Android專有的驅動程序

1、Android Binder 基於OpenBinder框架的一個驅動,用於提供 Android平台的進程間通信(InterProcess Communication,IPC)功能。源代碼位於drivers/staging/android/binder.c。

2、Android電源管理(PM) 一個基於標准Linux電源管理系統的輕量級Android電源管理驅動,針對嵌入式設備做了很多優化。源代碼位於:

kernel/power/earlysuspend.c

kernel/power/consoleearlysuspend.c

kernel/power/fbearlysuspend.c

kernel/power/wakelock.c

kernel/power/userwakelock.c

3、低內存管理器(Low Memory Killer) 比Linux的標準的OOM(Out Of Memory)機制更加靈活,它可以根據需要殺死進程以釋放需要的內存。源代碼位於 drivers/staging/ android/lowmemorykiller.c。

4、匿名共享內存(Ashmem) 為進程間提供大塊共享內存,同時為內核提供回收和管理這個內存的機制。源代碼位於mm/ashmem.c。

5、Android PMEM(Physical) PMEM用於向用戶空間提供連續的物理內存區域,DSP和某些設備只能工作在連續的物理內存上。源代碼位於drivers/misc/pmem.c。

6、Android Logger 一個輕量級的日誌設備,用於抓取Android系統的各種日誌。源代碼位於drivers/staging/android/logger.c。

7、Android Alarm 提供了一個定時器,用於把設備從睡眠狀態喚醒,同時它還提供了一個即使在設備睡眠時也會運行的時鍾基準。源代碼位於drivers/rtc/alarm.c。

8、USB Gadget驅動 一個基於標准 Linux USB gadget驅動框架的設備驅動,Android的USB驅動是基於gaeget框架的。源代碼位於drivers/usb/gadget/。

9、Android Ram Console 為了提供調試功能,Android允許將調試日誌信息寫入一個被稱為RAM Console的設備里,它是一個基於RAM的Buffer。源代碼位於drivers/staging/android / ram_console.c。

10、Android timed device 提供了對設備進行定時控制的功能,目前支持vibrator和LED設備。源代碼位於drivers/staging/android /timed_output.c(timed_gpio.c)。

參考資料:網路——Android

網路——linux

E. 怎樣評價羅升陽的android系統源代碼分析

我幹了3年Android sdk開發,覺得到了瓶勁沒法更進一步,於是花了一年多點時間,大概摸到點門徑。根據前輩的經驗,Android底層完全入門需要兩年。 先說下我的入門過程: 第零步,下載源碼,我下的4.2的,框架層源碼10G,內核2G多,ctags給框架層建的標簽文件都有600M,當時讓我有點震撼,用的vim+ctags+cscope來閱讀,還算不錯,架構挺清晰的。 第一步,我找到了一本好書《Android的設計與實現 第一卷》它講了Android框架層的啟動,初始化,服務框架初始化,Binder,消息循環,PackageManagerService,ActivityManagerService。據作者說後面會出講UI子系統的第二卷,拭目以待。其實這本書看了幾十頁我就發現需要第二步的知識,否則看不下去,於是跳去第二步。 第二步,學習Linux系統編程,在看《Android的設計與實現》的時候我發現,框架層的Native部分,全是Linux編程。為了掌握這部分知識,我花了4個月學習了《Linux系統編程手冊》(TLPI)這本1000多頁的書,我以前是搞WIndows文件系統這塊的,所以C語言還比較熟,TLPI的習題很有意思,量也比較大,堅持下來還是收獲很多。 第三步,花了4個月學習了一些Linux內核的知識,看了LKD,PLKA看了一半多。越學越沒底,覺得不懂得越來越多,不過這個也正常,只有靠慢慢磨,估計以後要不斷的磨這塊。 第四步,回頭看Android源碼,這次一口氣看完了《Android的設計與實現 第一卷》,終於對框架層有了譜。同時真的數次把我看暈,前面看Linux內核源碼都沒這么暈,不斷在Java層和Native層之間跳有點磨腦漿。其中我又覺得Java的基礎沒有打太牢,回去補了一個月的《Core Java》第八版。但是這書沒有涉及UI子系統,於是又看了《Android內核剖析》 第五步,《Android內核剖析》(這本書實際上是講框架層的,作者也是個搞嵌入式的,所以他在寫框架層的時候文筆不太好,很羅嗦,不過還是有很多看點,到他後來寫做ROM,玩開發板時估計是說到了他的本行,一下子遛起來了看得出還是挺有水平的,這本書知識有點舊畢竟講的是2.3很多代碼已經過時,但是作者很多點子很有參考價值)這本書講UI子系統和按鍵/觸摸消息處理系統還是很有分量的,尤其13章View繪制那裡,結合源碼研究很有收獲。而後面他講編譯框架和ROM相關的東西都是挺寶貴的資料。 第六步,為了再補一下其他諸如電源管理模塊等子系統的知識看了,《深入理解android》系列,個人認為這個系列看起來有點不太舒服,不過作為補充印證還是比較有價值。 第七步,《Android系統源代碼情景分析》,羅升陽的源碼分析大作,比《Android的設計與實現》分析得更細致,但缺點是涉及到模塊比較少,選用的源碼也比《Android的設計與實現》更舊一點。看完書後需要去研究作者的博客,東西挺多的,一定讓你滿意。 第八步,買塊開發板自己玩。這步我還沒走到,原因是我覺得我還差點准備知識。可能要再幾個月,到時准備入塊6410或者樹莓派。 最後,由於我11年以前都是搞Windows這塊的,所以對Linux知識不是很了解,不得已看了這么些書,如果是一直做Linux的人,很多步驟估計可以省掉了。直接上源碼才是正道。 我本身做著移動GIS開發的工作,學框架層全是因為興趣,但招聘平台Android框架層開發人員還是蠻有競爭力的有不少定製ROM,智能電視的工作都處於人才難求狀態,畢竟有一定的門檻,現在各種ios培訓,讓奔著錢干開發的人紛紛湧入,而ios只能幹sdk開發的缺點就暴露出來了,一堆新手老手,菜鳥大牛全擠在SDK開發這塊,我覺得不太妙。 反觀Android這邊,雖然入門菜鳥沒有搞ios來錢,但是可持續性很好,從sdk-》框架》驅動》內核這樣幹下去。干著干著發現自己漸漸變成了Linux開發者/嵌入式開發者的人也不少,新人,老手,菜鳥大牛各居其位,層次性很好。 轉載

F. Android內核剖析和深入理解Android哪個更好

內核剖析不錯!強烈建議!
深入理解,不如內核剖析與源碼結合的緊密。

G. 如何學習安卓軟體開發

一、前言

不知不覺自己已經做了幾年開發了,由記得剛出來工作的時候感覺自己能牛逼,現在回想起來感覺好無知。懂的越多的時候你才會發現懂的越少。
如果你的知識是一個圓,當你的圓越大時,圓外面的世界也就越大。
最近看到很多Android新手問Android學習路線,學習方法啊,如何入門啊,所以我從網上找了一些資料,然後以我的工作經驗給大家總結一下,讓你們少走彎路,提取一些工作中經常用到的技術。
二、學習知識匯總1、Java se基礎
1).Java基本數據類型與表達式,分支循環。
2).String和StringBuffer的使用、正則表達式。
3).面向對象的抽象,封裝,繼承,多態,類與對象,對象初始化和回收;構造函數、this關鍵字、方法和方法的參數傳遞過程、static關鍵字、內部類。
4).對象實例化過程、方法的覆蓋、final關鍵字、抽象類、介面、繼承的優點和缺點剖析;對象的多態性:子類和父類之間的轉換、抽象類和介面在多態中的應用、多態帶來的好處。
5).Java異常處理,異常的機制原理。
6).常用的設計模式:Singleton、Template、Strategy模式。
7).JavaAPI介紹:種基本數據類型包裝類,System和Runtime類,Date和DateFomat類等。
8).Java集合介紹:Collection、Set、List、ArrayList、LinkedList、Hashset、Map、HashMap、Iterator等常用集合類API。
9).JavaI/O輸入輸出流:File和FileRandomAccess類,位元組流InputStream和OutputStream,字元流Reader和Writer,以及相應實現類,IO性能分析,位元組和字元的轉化流,包裝流的概念,以及常用包裝類,計算機編碼。
10).Java高級特性:反射和泛型。
11).多線程原理:如何在程序中創建多線程(Thread、Runnable),線程安全問題,線程的同步,線程之間的通訊、死鎖。
2、android UI編程
1)、Android開發環境搭建:Android介紹,Android開發環境搭建,第一個Android應用程序,Android應用程序目錄結構。
2)、Android初級控制項的使用:
TextView控制項的使用
Button控制項的使用方法
EditText控制項的使用方法
ImageView的使用方法
RadioButton的使用方法
Checkbox的使用方法
Menu的使用方法
3)、Android高級控制項的使用:
ListView的使用方法
GridView的使用方法
Adapter的使用方法
Spinner的使用方法
Gallary的使用方法
ScrollView的使用方法
RecyclerView
4、對話框與菜單的使用:
Dialog的基本概念
BlockquoteAlertDialog的使用方法
DatePickerDialog的使用方法
Menu的使用方法
自定義Menu的實現方法
5.控制項的布局方法:
線性布局的使用方法
相對布局的使用方法
6.多Acitivity管理:
AndroidManifest.xml文件的作用
Intent的使用方法
使用Intent傳遞數據的方法
啟動Activity的方法
IntentFilter的使用方法
Activity Group的使用方法
7、自定義控制項實現方法:
自定義ListView的實現方法
可折疊ListView的使用方法
自定義Adapter的實現方法
自定義View的實現方法
動態控制項布局的上實現方法
上拉刷新下拉載入更多
3、android網路編程與數據存儲
1).基於Android平台的HTTP通訊:
Http協議回顧
使用Get方法向伺服器提交數據的方法
使用POST方法向伺服器提交數據的實現方法
使用Http協議實現多線程下載
使用Http協議實現斷點續傳
2).Android數據存儲技術:
SQLite3資料庫簡介
SQL語句回顧
SQLite3編程介面介紹
SQLite3事務管理
SQLite3游標使用方法
SQLite3性能分析
訪問SDCard的方法
訪問SharedPreferences的方法
參考自:Android學習路線
三、進階之路(初級->中級->高級)1、初級工程師
小明之前完全沒接觸過Android開發,是個應屆生,他的待遇是13k,然後小明以校招的身份進入了網路,然後小明需要怎麼學習才能成為初級工程師呢?這個時候,小明對編程基礎、數據結構、C語言都有一定基礎,Java語法什麼的也都掌握的比較好,Android才有java語言,無奈的是小明並不會搞Android。
小明首先需要購買一本Android入門的書籍,為了更快地學習Android,小明業余時間也都用來一邊看書一邊照著書中的例子敲代碼,結果2周時間小明就把這本書學了一遍。看完這本書後,小明對Android的歷史、結構、代碼規范等都有了一個大概的了解,並且,小明已經可以寫出一些簡單的Activity了。這個時候在小明眼裡,Android開發很簡單很好玩,通過在xml中擺放一些按鈕文本框什麼的就可以做一些界面了。
小明開始跟著他的技術導師做需求,一些簡單的小需求小明自然是不在話下了。突然有一天來了一個需求,該需求要求小明在Activity中為一個button加一個動畫效果,小明慌了:「完全沒接觸過,書上也沒有講,怎麼辦呢?」小明冷靜了下,打開了網路搜索,輸入「Android 動畫」,打開前幾個鏈接,小明恍然大悟,照著網上的例子把需求給實現了。後來導師告訴他:「學好Android,官方文檔是必須看的,既全面又權威」。然後小明如獲至寶,花了一年時間把上面的guide和training都看了一遍,並且他還動手抄了幾個小例子。
有一天,小明又需要做一個動畫相關的需求,這可難不倒小明,它熟練地打開了網路一下,你就知道,輸入「Android 動畫」,突然他楞了一下:」總不能每次寫動畫都要網路一下吧!「,於是他在CSDN開了一個博客,把動畫相關的知識點都寫上去,為的是後面再寫動畫相關的代碼就不用網路去搜了,事實如何呢?後面再寫動畫相關的代碼,小明的確不用再去網路搜了,因為通過寫一篇動畫博客,他把動畫相關的細節都已經記住了,這樣他就可以不用再去參考任何文檔了,後來小明還學會了把一些瑣碎的不方便放在博客上的東西寫到了印象筆記上面,什麼時候忘了10秒鍾以內都可以快速找回來,而不是花10分鍾去再次搜索一遍。
這里總結一下,Android入門的時候,需要有一本入門書,好好學習書中的內容,同時花一年時間把Android官方文檔中的training和guide看一遍,同時通過寫博客和記筆記的方式來做總結,建議讓自己的每篇博客都有價值些。通過一年時間的學習,相信每個人都可以達到中級工程師的水平。
技術要求:
基本知識點
比如四大組件如何使用、如何創建Service、如何進行布局、簡單的自定義View、動畫等常見技術
書籍推薦
《第一行代碼 Android》、《瘋狂Android》
2、中級工程師
小明經過一年的努力學習終於成為Android中級工程師了,月薪變成了17k。到了中級工程師,已經可以在公司里干很多體力活了,但是一些很重要的任務小明還不能一個人承擔起來,這個時候小明需要學習的內容就很多了,如下所示:
AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的區別;
Binder:從Java層大概理解Binder的工作原理,懂Parcel對象的使用;
多進程:熟練掌握多進程的運行機制,懂Messenger、Socket等;
事件分發:彈性滑動、滑動沖突等;
玩轉View:View的繪制原理、各種自定義View;
動畫系列:熟悉View動畫和屬性動畫的不同點,懂屬性動畫的工作原理;
懂性能優化、熟悉mat等工具
懂點常見的設計模式
學習方法
閱讀進階書籍,閱讀Android源碼,閱讀官方文檔並嘗試自己寫相關的技術文章,需要有一定技術深度和自我思考。在這個階段的學習過程中,有2個點是比較困擾大家的,一個是閱讀源碼,另一個是自定義View以及滑動沖突。
如何閱讀源碼呢?這是個頭疼的問題,但是源碼必須要讀。閱讀源碼的時候不要深入代碼細節不可自拔,要關注代碼的流程並盡量挖掘出對應用層開發有用的結論。另外仔細閱讀源碼中對一個類或者方法的注釋,在看不懂源碼時,源碼中的注釋可以幫你更好地了解源碼中的工作原理,這個過程雖然艱苦,但是別無他法。
如何玩轉自定義View呢?我的建議是不要通過學習自定義view而學習自定義view。為什麼這么說呢?因為自定義view的種類太多了,各式各樣的絢麗的自定義效果,如何學的玩呢!我們要透過現象看本質,更多地去關注自定義view所需的知識點,這里做如下總結:
搞懂view的滑動原理
搞懂如何實現彈性滑動
搞懂view的滑動沖突
搞懂view的measure、layout和draw
然後再學習幾個已有的自定義view的例子
最後就可以搞定自定義view了,所謂萬變不離其宗
大概再需要1-2年時間,即可達到高級工程師的技術水平。我個人認為通過《Android開發藝術探索》和《Android群英傳》可以縮短這個過程為0.5-1年。注意,達到高級工程師的技術水平不代表就可以立刻成為高級工程師(受機遇、是否跳槽的影響),但是技術達到了,成為高級工程師只是很簡單的事。
技術要求:
稍微深入的知識點
AIDL、Messenger、Binder、多進程、動畫、滑動沖突、自定義View、消息隊列等
書籍推薦
《Android開發藝術探索》、《Android群英傳》
3、高級工程師
小明成為了夢寐以求的高級工程師,月薪達到了20k,還拿到了一丟丟股票。這個時候小明的Android水平已經不錯了,但是小明的目標是資深工程師,小明聽說資深工程師月薪可以達到30k+。
為了成為Android資深工程師,需要學習的東西就更多了,並且有些並不是那麼具體了,如下所示:
繼續加深理解」稍微深入的知識點「中所定義的內容
了解系統核心機制:
了解SystemServer的啟動過程
了解主線程的消息循環模型
了解AMS和PMS的工作原理
能夠回答問題」一個應用存在多少個Window?「
了解四大組件的大概工作流程

基本知識點的細節
Activity的啟動模式以及異常情況下不同Activity的表現
Service的onBind和onReBind的關聯
onServiceDisconnected(ComponentName className)和binderDied()的區別
AsyncTask在不同版本上的表現細節
線程池的細節和參數配置

熟悉設計模式,有架構意識學習方法
這個時候已經沒有太具體的學習方法了,無非就是看書、看源碼和做項目,平時多種總結,盡量將知識融會貫通從而形成一種體系化的感覺。同時這個階段對架構是有一定要求的,架構是抽象的,但是設計模式是具體的,所以一定要加強下設計模式的學習。關於設計模式的學習,最近一本新書推薦給大家《Android 源碼設計模式解析與實戰》,既可以學習設計模式,又可能體會到Android源碼中的設計思想,我最近也在閱讀此書。
技術要求:
稍微深入的知識點
系統核心機制
基本知識點的細節
設計模式和架構
書籍推薦
《Android開發藝術探索》、《Android 源碼設計模式解析與實戰》、《Android內核剖析》
參考自:Android學習路線指南
四、學習視頻跟書籍
當你有了學習線路,學習哪些內容,也知道以後的路怎麼走了,理論看多了總要實踐的,我這里給你們整理了大概80G的學習視頻跟書籍,趕快點我點我點我。。。下載。。

附上出處鏈接:https://www.hu.com/question/21112875/answer/97586938

H. linux和centos的區別

linux的一個著名版本是red hat,本來是有個人版本和企業版本,後來個人版本不再開發,改為fedora。而企業版本呢是要收費的。centOS就是red hat企業版本的重寫,不要收費的。
所以說centOS是linux操作系統的一個版本。
1、完全可以把CentOS理解為RedHat AS系列!它完全就是對RedHat AS進行改進後發布的!各種操作、使用和RedHat沒有區別!
2、CentOS完全免費,不存在像RedHat AS系列那樣需要序列號的問題。
3、CentOS獨有的yum命令支持在線升級,可以即時更新系統,不像RedHat那樣需要花錢購買支持服務!
4、CentOS修正了許多RedHat AS的BUG!
5、CentOS版本說明:
CentOS4.0等同於RedHat AS4
CentOS4.1等同於RedHat AS4 U1
CentOS4.2等同於RedHat AS4 U2
CentOS4.3等同於RedHat AS4 U3
CentOS4.4等同於RedHat AS4 U4
RedHat在發行的時候,有兩種方式:二進制的發行方式以及源代碼的發行方式。無論是哪一種發行方式,你都可以免費獲得(例如從網上下載),並再次發布。但如果你使用了他們的在線升級(包括補丁)或咨詢服務,就必須要付費。
RedHat一直都提供源代碼的發行方式,CentOS就是將RedHat發行的源代碼重新編譯一次,形成一個可使用的二進製版本。由於Linux的源代碼是GNU,所以從獲得RedHat的源代碼到編譯成新的二進制,都是合法。只是RedHat是商標,所以必須在新的發行版里將RedHat的商標去掉。

I. Android系統文件夾結構詳細解析!

\\system\\app
這個裡面主要存放的是常規下載的應用程序,可以看到都是以APK格式結尾的文件。在這個文件夾下的程序為系統默認的組件,自己安裝的軟體將不會出現在這里,而是\\data\\文件夾中。下面是詳細的介紹:
\\system\\app\\AlarmClock.apk 鬧鍾
\\system\\app\\AlarmClock.odex
\\system\\app\\Browser.apk 瀏覽器
\\system\\app\\Browser.odex
\\system\\app\\Bugreport.apk Bug報告
\\system\\app\\Bugreport.odex
\\system\\app\\Calculator.apk 計算器
\\system\\app\\Calculator.odex
\\system\\app\\Calendar.apk 日歷
\\system\\app\\Calendar.odex
\\system\\app\\CalendarProvider.apk 日歷提供
\\system\\app\\CalendarProvider.odex
\\system\\app\\Camera.apk 照相機
\\system\\app\\Camera.odex
\\system\\app\\com.amazon.mp3.apk 亞馬遜音樂
\\system\\app\\Contacts.apk 聯系人
\\system\\app\\Contacts.odex
\\system\\app\\DownloadProvider.apk 下載提供
\\system\\app\\DownloadProvider.odex
\\system\\app\\DrmProvider.apk DRM數字版權提供
\\system\\app\\DrmProvider.odex
\\system\\app\\Email.apk 電子郵件客戶端
\\system\\app\\Email.odex
\\system\\app\\FieldTest.apk 測試程序
\\system\\app\\FieldTest.odex
\\system\\app\\GDataFeedsProvider.apk GoogleData提供
\\system\\app\\GDataFeedsProvider.odex
\\system\\app\\Gmail.apk Gmail電子郵件
\\system\\app\\Gmail.odex
\\system\\app\\GmailProvider.apk Gmail提供
\\system\\app\\GmailProvider.odex
\\system\\app\\GoogleApps.apk 谷歌程序包
\\system\\app\\GoogleApps.odex
\\system\\app\\GoogleSearch.apk 搜索工具
\\system\\app\\GoogleSearch.odex
\\system\\app\\gtalkservice.apk GTalk服務
\\system\\app\\gtalkservice.odex
\\system\\app\\HTMLViewer.apk HTML查看器
\\system\\app\\HTMLViewer.odex
\\system\\app\\IM.apk 即使通訊組件包含MSN、yahoo通
\\system\\app\\ImCredentialProvider.apk
\\system\\app\\ImProvider.apk
\\system\\app\\ImProvider.odex
\\system\\app\\Launcher.apk 啟動載入器
\\system\\app\\Launcher.odex
\\system\\app\\Maps.apk 電子地圖
\\system\\app\\Maps.odex
\\system\\app\\MediaProvider.apk 多媒體播放提供
\\system\\app\\MediaProvider.odex
\\system\\app\\Mms.apk 簡訊、彩信
\\system\\app\\Mms.odex
\\system\\app\\Music.apk 音樂播放器
\\system\\app\\Music.odex
\\system\\app\\MyFaves.apk T-Mobile MyFaves程序
\\system\\app\\MyFaves.odex
\\system\\app\\PackageInstaller.apk apk安裝程序
\\system\\app\\PackageInstaller.odex
\\system\\app\\Phone.apk 電話撥號器
\\system\\app\\Phone.odex
\\system\\app\\Settings.apk 系統設置
\\system\\app\\Settings.odex
\\system\\app\\SettingsProvider.apk 設置提供
\\system\\app\\SettingsProvider.odex
\\system\\app\\SetupWizard.apk 設置向導
\\system\\app\\SetupWizard.odex
\\system\\app\\SoundRecorder.apk 錄音工具
\\system\\app\\SoundRecorder.odex
\\system\\app\\Street.apk 街景地圖
\\system\\app\\Street.odex
\\system\\app\\Sync.apk 同步程序
\\system\\app\\Sync.odex
\\system\\app\\Talk.apk 語音程序
\\system\\app\\Talk.odex
\\system\\app\\TelephonyProvider.apk 電話提供
\\system\\app\\TelephonyProvider.odex
\\system\\app\\Updater.apk 更新程序
\\system\\app\\Updater.odex
\\system\\app\\Vending.apk 製造商信息
\\system\\app\\Vending.odex
\\system\\app\\VoiceDialer.apk 語音撥號器
\\system\\app\\VoiceDialer.odex
\\system\\app\\YouTube.apk Youtube視頻
\\system\\app\\YouTube.odex

\\system\\bin
這個目錄下的文件都是系統的本地程序,從bin文件夾名稱可以看出是binary二進制的程序,裡面主要是Linux系統自帶的組件,Android手機網就主要文件做下簡單的分析介紹:
\\system\\bin\\akmd
\\system\\bin\\am
\\system\\bin\\app_process 系統進程
\\system\\bin\\dalvikvm Dalvik虛擬機宿主
\\system\\bin\\dbus-daemon 系統BUS匯流排監控
\\system\\bin\\debuggerd 調試器
\\system\\bin\\debug_tool 調試工具
\\system\\bin\\dexopt DEX選項
\\system\\bin\\dhcpcd DHCP伺服器
\\system\\bin\\mpstate 狀態抓取器
\\system\\bin\\mpsys 系統抓取器
\\system\\bin\\dvz
\\system\\bin\\fillup
\\system\\bin\\flash_image 快閃記憶體映像
\\system\\bin\\hciattach
\\system\\bin\\hcid HCID內核
\\system\\bin\\hostapd
\\system\\bin\\hostapd_cli
\\system\\bin\\htclogkernel
\\system\\bin\\input
\\system\\bin\\installd
\\system\\bin\\itr
\\system\\bin\\linker
\\system\\bin\\logcat Logcat日誌列印
\\system\\bin\\logwrapper
\\system\\bin\\mediaserver
\\system\\bin\\monkey
\\system\\bin\\mountd 存儲掛載器
\\system\\bin\\netcfg 網路設置
\\system\\bin\\ping Ping程序
\\system\\bin\\playmp3 MP3播放器
\\system\\bin\\pm 包管理器
\\system\\bin\\qemud QEMU虛擬機
\\system\\bin\\radiooptions 無線選項
\\system\\bin\\rild RIL組件
\\system\\bin\\sdptool
\\system\\bin\\stil
\\system\\bin\\service
\\system\\bin\\servicemanager 服務管理器
\\system\\bin\\sh
\\system\\bin\\ssltest SSL測試
\\system\\bin\\surfaceflinger 觸摸感應驅動
\\system\\bin\\svc 服務
\\system\\bin\\system_server
\\system\\bin\\telnetd Telnet組件
\\system\\bin\\toolbox
\\system\\bin\\wlan_loader
\\system\\bin\\wpa_cli
\\system\\bin\\wpa_supplicant

\\system\\etc
從文件夾名稱來看保存的都是系統的配置文件,比如APN接入點設置等核心配置。
\\system\\etc\\apns-conf.xml APN接入點配置文件
\\system\\etc\\AudioFilter.csv 音頻過濾器配置文件
\\system\\etc\\AudioPara4.csv
\\system\\etc\\bookmarks.xml 書簽資料庫
\\system\\etc\\dbus.conf 匯流排監視配置文件
\\system\\etc\\dhcpcd
\\system\\etc\\event-log-tags
\\system\\etc\\favorites.xml 收藏夾
\\system\\etc\\firmware 固件信息
\\system\\etc\\gps.conf GPS設置文件
\\system\\etc\\hcid.conf內核HCID配置文件
\\system\\etc\\hosts 網路DNS緩存
\\system\\etc\\init.goldfish.sh
\\system\\etc\\location 定位相關
\\system\\etc\\mountd.conf 存儲掛載配置文件
\\system\\etc\\NOTICE.html 提示網頁
\\system\\etc\\permissions.xml 許可權許可
\\system\\etc\\pvplayer.conf
\\system\\etc\\security
\\system\\etc\\wifi WLAN相關組件
\\system\\etc\\dhcpcd\\dhcpcd-hooks
\\system\\etc\\dhcpcd\\dhcpcd-run-hooks
\\system\\etc\\dhcpcd\\dhcpcd.conf
\\system\\etc\\dhcpcd\\dhcpcd-hooks\\01-test
\\system\\etc\\dhcpcd\\dhcpcd-hooks\\20-dns.conf
\\system\\etc\\dhcpcd\\dhcpcd-hooks\\95-configured
\\system\\etc\\firmware\\brf6300.bin
\\system\\etc\\location\\gps
\\system\\etc\\location\\gps\\location 定位相關
\\system\\etc\\location\\gps\\nmea GPS數據解析
\\system\\etc\\location\\gps\\properties
\\system\\etc\\security\\cacerts.bks
\\system\\etc\\security\\otacerts.zip OTA下載驗證
\\system\\etc\\wifi\\Fw1251r1c.bin
\\system\\etc\\wifi\\tiwlan.ini
\\system\\etc\\wifi\\wpa_supplicant.conf WPA驗證組件

\\system\\fonts
字體文件夾,除了標准字體和粗體、斜體外可以看到文件體積最大的可能是中文字型檔,或一些unicode字型檔,從T-Mobile G1上可以清楚的看到顯示簡體中文正常,其中DroidSansFallback.ttf文件大小
\\system\\fonts\\DroidSans-Bold.ttf
\\system\\fonts\\DroidSans.ttf
\\system\\fonts\\DroidSansFallback.ttf
\\system\\fonts\\DroidSansMono.ttf
\\system\\fonts\\DroidSerif-Bold.ttf
\\system\\fonts\\DroidSerif-BoldItalic.ttf
\\system\\fonts\\DroidSerif-Italic.ttf
\\system\\fonts\\DroidSerif-Regular.ttf

\\system\\framework
framework主要是一些核心的文件,從後綴名為jar可以看出是是系統平台框架。
\\system\\framework\\am.jar
\\system\\framework\\am.odex
\\system\\framework\\android.awt.jar AWT庫
\\system\\framework\\android.awt.odex
\\system\\framework\\android.policy.jar
\\system\\framework\\android.policy.odex
\\system\\framework\\android.test.runner.jar
\\system\\framework\\android.test.runner.odex
\\system\\framework\\com.google.android.gtalkservice.jar GTalk服務
\\system\\framework\\com.google.android.gtalkservice.odex
\\system\\framework\\com.google.android.maps.jar 電子地圖庫
\\system\\framework\\com.google.android.maps.odex
\\system\\framework\\core.jar 核心庫,啟動桌面時首先載入這個
\\system\\framework\\core.odex
\\system\\framework\\ext.jar
\\system\\framework\\ext.odex
\\system\\framework\\framework-res.apk
\\system\\framework\\framework-tests.jar
\\system\\framework\\framework-tests.odex
\\system\\framework\\framework.jar
\\system\\framework\\framework.odex
\\system\\framework\\input.jar 輸入庫
\\system\\framework\\input.odex
\\system\\framework\\itr.jar
\\system\\framework\\itr.odex
\\system\\framework\\monkey.jar
\\system\\framework\\monkey.odex
\\system\\framework\\pm.jar 包管理庫
\\system\\framework\\pm.odex
\\system\\framework\\services.jar
\\system\\framework\\services.odex
\\system\\framework\\ssltest.jar
\\system\\framework\\ssltest.odex
\\system\\framework\\svc.jar 系統服務
\\system\\framework\\svc.odex

\\system\\lib
lib目錄中存放的主要是系統底層庫,如平台運行時庫。
\\system\\lib\\libaes.so
\\system\\lib\\libagl.so
\\system\\lib\\libandroid_runtime.so Android運行時庫
\\system\\lib\\libandroid_servers.so 系統服務組件
\\system\\lib\\libaudio.so 音頻處理
\\system\\lib\\libaudioeq.so EQ均衡器
\\system\\lib\\libaudioflinger.so 音頻過濾器
\\system\\lib\\libbluetooth.so 藍牙組件
\\system\\lib\\libc.so
\\system\\lib\\libcamera.so 超相機組件
\\system\\lib\\libcameraservice.so
\\system\\lib\\libcorecg.so
\\system\\lib\\libcrypto.so 加密組件
\\system\\lib\\libctest.so
\\system\\lib\\libcutils.so
\\system\\lib\\libdbus.so
\\system\\lib\\libdl.so
\\system\\lib\\libdrm1.so DRM解析庫
\\system\\lib\\libdrm1_jni.so
\\system\\lib\\libdvm.so
\\system\\lib\\libexif.so
\\system\\lib\\libexpat.so
\\system\\lib\\libFFTEm.so
\\system\\lib\\libGLES_CM.so
\\system\\lib\\libgps.so
\\system\\lib\\libhardware.so
\\system\\lib\\libhgl.so
\\system\\lib\\libhtc_ril.so
\\system\\lib\\libicudata.so
\\system\\lib\\libicui18n.so
\\system\\lib\\libicuuc.so
\\system\\lib\\liblog.so
\\system\\lib\\libm.so
\\system\\lib\\libmedia.so
\\system\\lib\\libmediaplayerservice.so
\\system\\lib\\libmedia_jni.so
\\system\\lib\\libnativehelper.so
\\system\\lib\\libnetutils.so
\\system\\lib\\libOmxCore.so
\\system\\lib\\libOmxH264Dec.so
\\system\\lib\\libpixelflinger.so
\\system\\lib\\libpvasf.so
\\system\\lib\\libpvasfreg.so
\\system\\lib\\libpvauthor.so
\\system\\lib\\libpvcommon.so
\\system\\lib\\libpvdownload.so
\\system\\lib\\libpvdownloadreg.so
\\system\\lib\\libpvmp4.so
\\system\\lib\\libpvmp4reg.so
\\system\\lib\\libpvnet_support.so
\\system\\lib\\libpvplayer.so
\\system\\lib\\libpvrtsp.so
\\system\\lib\\libpvrtspreg.so
\\system\\lib\\libqcamera.so
\\system\\lib\\libreference-ril.so
\\system\\lib\\libril.so
\\system\\lib\\librpc.so
\\system\\lib\\libsgl.so
\\system\\lib\\libsonivox.so
\\system\\lib\\libsoundpool.so
\\system\\lib\\libsqlite.so
\\system\\lib\\libssl.so
\\system\\lib\\libstdc++.so
\\system\\lib\\libsurfaceflinger.so
\\system\\lib\\libsystem_server.so
\\system\\lib\\libthread_db.so
\\system\\lib\\libUAPI_jni.so
\\system\\lib\\libui.so
\\system\\lib\\libutils.so
\\system\\lib\\libvorbisidec.so
\\system\\lib\\libwbxml.so
\\system\\lib\\libwbxml_jni.so
\\system\\lib\\libwebcore.so
\\system\\lib\\libwpa_client.so
\\system\\lib\\libxml2wbxml.so
\\system\\lib\\libz.so
\\system\\lib\\moles
\\system\\lib\\moles\\wlan.ko

J. 有研究android系統源碼的博客嗎

我幹了3年Android sdk開發,覺得到了瓶勁沒法更進一步,於是花了一年多點時間,大概摸到點門徑。根據前輩的經驗,Android底層完全入門需要兩年。

先說下我的入門過程:
第零步,下載源碼,我下的4.2的,框架層源碼10G,內核2G多,ctags給框架層建的標簽文件都有600M,當時讓我有點震撼,用的vim+ctags+cscope來閱讀,還算不錯,架構挺清晰的。

第一步,我找到了一本好書《Android的設計與實現 第一卷》它講了Android框架層的啟動,初始化,服務框架初始化,Binder,消息循環,PackageManagerService,ActivityManagerService。據作者說後面會出講UI子系統的第二卷,拭目以待。其實這本書看了幾十頁我就發現需要第二步的知識,否則看不下去,於是跳去第二步。

第二步,學習Linux系統編程,在看《Android的設計與實現》的時候我發現,框架層的Native部分,全是Linux編程。為了掌握這部分知識,我花了4個月學習了《Linux系統編程手冊》(TLPI)這本1000多頁的書,我以前是搞WIndows文件系統這塊的,所以C語言還比較熟,TLPI的習題很有意思,量也比較大,堅持下來還是收獲很多。

第三步,花了4個月學習了一些Linux內核的知識,看了LKD,PLKA看了一半多。越學越沒底,覺得不懂得越來越多,不過這個也正常,只有靠慢慢磨,估計以後要不斷的磨這塊。

第四步,回頭看Android源碼,這次一口氣看完了《Android的設計與實現 第一卷》,終於對框架層有了譜。同時真的數次把我看暈,前面看Linux內核源碼都沒這么暈,不斷在Java層和Native層之間跳有點磨腦漿。其中我又覺得Java的基礎沒有打太牢,回去補了一個月的《Core Java》第八版。但是這書沒有涉及UI子系統,於是又看了《Android內核剖析》

第五步,《Android內核剖析》(這本書實際上是講框架層的,作者也是個搞嵌入式的,所以他在寫框架層的時候文筆不太好,很羅嗦,不過還是有很多看點,到他後來寫做ROM,玩開發板時估計是說到了他的本行,一下子遛起來了看得出還是挺有水平的,這本書知識有點舊畢竟講的是2.3很多代碼已經過時,但是作者很多點子很有參考價值)這本書講UI子系統和按鍵/觸摸消息處理系統還是很有分量的,尤其13章View繪制那裡,結合源碼研究很有收獲。而後面他講編譯框架和ROM相關的東西都是挺寶貴的資料。

第六步,為了再補一下其他諸如電源管理模塊等子系統的知識看了,《深入理解android》系列,個人認為這個系列看起來有點不太舒服,不過作為補充印證還是比較有價值。

第七步,《Android系統源代碼情景分析》,羅升陽的源碼分析大作,比《Android的設計與實現》分析得更細致,但缺點是涉及到模塊比較少,選用的源碼也比《Android的設計與實現》更舊一點。看完書後需要去研究作者的博客,東西挺多的,一定讓你滿意。

第八步,買塊開發板自己玩。這步我還沒走到,原因是我覺得我還差點准備知識。可能要再幾個月,到時准備入塊6410或者樹莓派。

最後,由於我11年以前都是搞Windows這塊的,所以對Linux知識不是很了解,不得已看了這么些書,如果是一直做Linux的人,很多步驟估計可以省掉了。直接上源碼才是正道。

我本身做著移動GIS開發的工作,學框架層全是因為興趣,但招聘平台Android框架層開發人員還是蠻有競爭力的有不少定製ROM,智能電視的工作都處於人才難求狀態,畢竟有一定的門檻,現在各種ios培訓,讓奔著錢干開發的人紛紛湧入,而ios只能幹sdk開發的缺點就暴露出來了,一堆新手老手,菜鳥大牛全擠在SDK開發這塊,我覺得不太妙。 反觀Android這邊,雖然入門菜鳥沒有搞ios來錢,但是可持續性很好,從sdk-》框架》驅動》內核這樣幹下去。干著干著發現自己漸漸變成了Linux開發者/嵌入式開發者的人也不少,新人,老手,菜鳥大牛各居其位,層次性很好。
轉載

閱讀全文

與android內核剖析pdf相關的資料

熱點內容
查看手機谷歌伺服器地址 瀏覽:191
python操作zookeeper 瀏覽:705
蘋果手機dcim文件夾顯示不出來 瀏覽:430
如何壓縮文件夾聯想電腦 瀏覽:583
程序員的學習之旅 瀏覽:440
apkdb反編譯 瀏覽:922
雪花演算法為什麼要二進制 瀏覽:825
在文檔中打開命令行工具 瀏覽:608
android圖標尺寸規范 瀏覽:369
python實用工具 瀏覽:208
流量計pdf 瀏覽:936
科東加密認證價格 瀏覽:532
dos命令讀文件 瀏覽:996
成為程序員需要什麼學歷 瀏覽:674
pdf農葯 瀏覽:229
canal加密 瀏覽:497
日本安卓系統和中國有什麼區別 瀏覽:137
linux命令行修改文件 瀏覽:838
從編譯和解釋的角度看 瀏覽:650
徐志摩pdf 瀏覽:652