編輯推薦
源碼解讀,對Android底層源碼進行係統剖析。
硬件實踐,基於開源硬件pcDuino和Xilinx的可編程SoC——Zynq。
專傢力推,榖歌、華為、CSDN社區專傢聯袂推薦。
掌握Android底層軟件開發必備的工具書
開發一個Android應用往往非常簡單,而要構建一個健壯、可靠、功耗和性能優異的軟硬件一體係統確非易事。因此,市麵上介紹Android應用開發的書籍很多,但是偏重底層軟件開發的書卻不多。Android如今已經是最為流行的嵌入式操作係統,如果想要從零開始定製一個全新的基於Android和ARM處理器的新係統,就必須要瞭解Android操作係統的底層軟件。本書不僅覆蓋瞭必要的嵌入式係統理論和Linux的基礎知識,還對Android底層的源碼進行分析,並用實例引導讀者掌握底層開發的技能和調試方法。本書是掌握Android底層軟件開發技術的必備工具書。
內容簡介
《Android底層開發實戰》分為四個部分:一部分為預備知識篇,簡要介紹嵌入式係統的定義與軟硬件開發以及Android開發環境的搭建。第二部分為係統結構篇,主要介紹Android係統的源碼結構、內核與相關工具以及環境庫。第三部分為驅動設計篇,主要介紹Android係統中常用外接設備的驅動架構以及實現。內容包括NDK編程、Android中HAL模型架構與實現流程。作為教學實例,最後分析瞭Android係統中的Camera與WIFI兩個功能部件的的驅動設計。第四部分為實例分析篇,通過對具體開發闆硬件結構編程原理的介紹到係統級的實例講解。在簡要介紹係統底層開發流程的基礎上,首先分析瞭主流的Zynq和pcDuino平颱上開發環境的搭建、Linux內核以及Android係統的編譯、下載;然後結閤前文學習過的知識點,從零開始設計LED顯示係統的Linux內核驅動、AndroidHAL支持和服務層設計、頂層App的實現;作為進階部分,本書最後介紹瞭對Android內核進行跟蹤調試與性能測試的工具軟件、工作流程以及結果分析。
作者簡介
周慶國,蘭州大學教授。理學博士,博士生導師,IET Fellow,教育部新世紀人纔基金獲得者,現為蘭州大學開源軟件與實時係統教育部工程研究中心副主任,蘭州大學分布式與嵌入式係統實驗室主任。2007年10月曾受聘擔任Real Time Linux Foundation主任,2011年8月曾任《International Journal of Computational Science and Engineering 》(IJCSE)雜誌副主編,2013年4月曾任《International Journal of Embedded System》(IJES)雜誌主編。目前主要從事安全關鍵係統、嵌入式係統、實時係統、虛擬化技術的研究。
鄭靈翔,博士,高級工程師。先後獲得廈門市科技進步二等奬兩項,福建省教學成果二等奬一項。主要研究領域包括嵌入式係統、移動互聯網、物聯網、人工智能和模式識彆等。齣版嵌入式係統教材三本,發錶學術論文四十餘篇。
康筱彬,蘭州資源環境職業技術學院教師。畢業於蘭州大學信息學院,工程碩士。從事一綫教學工作,研究方嚮為嵌入式操作係統、移動互聯網技術及應用。
劉同山,蘭州大學教師。畢業於蘭州大學無綫電物理專業,現承擔電路、單片機等課程的教學與實驗工作。
目錄
推薦序
自 序
前 言
第1章 Android嵌入式係統導論1
1.1 Android嵌入式係統概述1
1.1.1 嵌入式係統定義1
1.1.2 基於Android的嵌入式係統構成5
1.1.3 移動電話係統9
1.1.4 基於ARM的移動電話硬件結構10
1.2 嵌入式係統實例17
1.2.1 pcDuino部分硬件功能介紹17
1.2.2 基於Android的嵌入式係統30
第2章 Linux係統詳解34
2.1 係統簡介34
2.2 基礎命令35
2.2.1 cd和ls命令35
2.2.2 touch和mkdir命令37
2.2.3 rm和rmdir命令38
2.2.4 cp和mv命令38
2.2.5 find和awk命令39
2.2.6 vim編輯器的使用43
2.3 Bash Shell44
2.3.1 Bash Shell簡介44
2.3.2 Bash Shell腳本簡介44
2.4 Linux源碼與Android源碼介紹45
2.4.1 Linux源碼簡介45
2.4.2 Android源碼簡介45
第3章 Android係統開發環境搭建47
3.1 編譯前奏—Android上的開發工作47
3.1.1 Android的移植開發47
3.1.2 係統開發48
3.1.3 應用開發49
3.2 Android的係統架構 49
3.2.1 軟件結構49
3.2.2 源代碼的結構51
3.3 搭建開發環境 54
3.3.1 搭建編譯環境54
3.3.2 使用repo64
3.3.3 Android的編譯66
第4章 Android係統底層源碼結構分析69
4.1 源碼結構分析69
4.1.1 底層庫結構介紹71
4.1.2 C基礎函數庫bionic73
4.1.3 C語言底層庫libcutils74
4.1.4 C++工具庫libutils74
4.1.5 底層文件係統庫system 75
4.1.6 增加本地庫的方法76
4.2 Android編譯係統介紹78
4.2.1 build係統78
4.2.2 SDK79
4.3 init初始化腳本語言介紹82
4.3.1 概述82
4.3.2 init進程源碼分析82
4.3.3 腳本文件的創建與分析85
4.3.4 創建設備節點文件89
4.3.5 子進程的創建與終止92
4.3.6 屬性服務93
4.4 Zygote95
4.4.1 Zygote概述95
4.4.2 AppRuntime分析95
4.4.3 system_server分析100
第5章 Android係統內核分析109
5.1 Linux內核基礎109
5.1.1 概述109
5.1.2 Linux內核的主要子係統110
5.1.3 Linux啓動過程分析111
5.2 Android內核概況112
5.3 Android啓動過程分析113
5.4 Binder框架分析115
5.4.1 概述116
5.4.2 Binder的係統架構117
5.4.3 Binder的機製和原理125
5.5 Ashmem內存管理方式128
5.5.1 概述128
5.5.2 Ashmem初始化128
5.5.3 內存的創建和釋放131
5.5.4 內存的映射135
5.5.5 內存的鎖定和解鎖137
5.6 低內存管理139
5.7 Logger145
5.7.1 Logger概述145
5.7.2 Logger實現原理146
第6章 Android係統相關工具及運行環境156
6.1 Android開發工具分類及介紹156
6.1.1 應用程序開發工具156
6.1.2 框架開發工具157
6.1.3 交叉編譯工具159
6.1.4 內核開發工具159
6.2 Dalvik虛擬機160
6.2.1 概述160
6.2.2 dex文件163
6.2.3 Dalvik內存管理165
6.2.4 Dalvik編譯器 169
6.3 JNI171
6.3.1 概述171
6.3.2 JNI的架構171
6.3.3 JNI的實現方式172
6.4 Boot Loader173
6.4.1 概述173
6.4.2 Boot Loader 的操作模式174
6.4.3 啓動過程175
6.5 busybox的使用176
第7章 Android驅動程序設計177
7.1 Android驅動概述177
7.2 Android NDK編程178
7.3 Android係統中的HAL層183
7.3.1 HAL_legacy和HAL對比184
7.3.2 HAL module 架構分析184
7.3.3 HAL實現流程186
7.4 Android係統Camera與WiFi實現187
7.4.1 Android中的Camera實現187
7.4.2 Android係統WiFi實現190
第8章 Android底層開發實例講解193
8.1 底層開發相關技術概覽193
8.2 實例講解—基於Zynq的Android移植193
8.2.1 主機開發環境的搭建194
8.2.2 Linux內核的編譯194
8.2.3 Android文件係統的編譯203
8.2.4 SD卡的準備以及Android係統的啓動 205
8.3 移植講解—基於pcDuino的Android移植205
8.3.1 pcDuino介紹206
8.3.2 環境搭建208
8.3.3 編譯內核209
8.3.4 編譯Android210
8.3.5 燒錄鏡像211
8.4 Android LED驅動設計212
8.4.1 硬件原理212
8.4.2 Linux驅動設計212
8.4.3 Android HAL層驅動220
8.4.4 硬件服務層224
8.4.5 App應用編寫229
8.5 進階講解—針對Android係統的內核跟蹤與測試231
8.5.1 使用平颱簡介231
8.5.2 測試環境的建立232
8.5.3 測試工具235
8.5.4 Android內核調試與性能測試239
前言/序言
自第一款搭載Android係統的智能手機HTC G1發布至今已近6年,憑藉日益完善與強大的功能、完全開放的內核源碼以及Google公司在網絡應用領域的無縫支持,Android係統從初齣茅廬的行業新銳,已經成長壯大為手持設備智能化産業的推動者和市場的領導者,這一點已經毋庸置疑。
不可否認,眾多獨立軟件開發者與商業軟件公司的加入使Android係統不僅僅作為終端産品,還作為開發平颱深入到各行業的技術開發中,包括學校、公司,乃至開發人員的工作、生活的各方麵,這是Android係統旺盛生命力的錶現,同時也是Android係統持續發展壯大的保障。近期,支持Android係統的開發闆如Zynq、pcDuino等在功能不斷完善的前提下成本也在大幅下降,助力瞭Android的推廣與拓展;可穿戴設備以及嵌入式芯片的應用又將為Android係統及其軟硬件開發提供新的發展機遇。接觸Android領域、使用Android産品、學習Android係統,現在已經成為計算機軟件、電子、自動化控製及相關專業的學生和已經參加工作的軟硬件工程師的首選。
但是目前市場上同類的Android相關書籍中,多是介紹基於Android SDK的單純應用程序(APP)的開發,且種類繁雜,對於Android的底層源碼與係統內核的分析、驅動程序設計與存儲優化、平颱移植與內核測試等較為深入的內容則甚少涉及。為瞭對這些底層領域相關知識稍作彌補,作者編寫瞭本書。
本書而用淺顯易懂的語言嚮廣大Android愛好者和開發人員講解Android係統下嵌入式開發闆的設計。
全書共8章,前3章為預備知識,簡要介紹嵌入式係統的定義與軟硬件開發以及Android開發環境的搭建。這一部分為基礎知識,有一定Linux基礎和Android開發經驗的讀者可以選讀。
第4~6章為係統結構,主要介紹Android係統的源碼結構、內核與相關工具以及環境庫。內容包括:Android源碼結構、init初始化腳本、Zygote、Android係統編譯;Android內核啓動、Binder框架、Ashmem內存管理、係統日誌Logger實現;Android開發工具、Dalvik虛擬機、JNI、Boot Loader。
第7章為驅動設計,主要介紹Android係統中常用外接設備的驅動架構以及實現。內容包括NDK編程、Android中HAL模型架構與實現流程。作為教學實例,最後還分析瞭Android係統中的Camera與WiFi兩個功能部件的驅動設計。
第8章為實例分析,介紹具體開發闆硬件結構的編程原理以及係統級的實例。在簡要介紹係統底層開發流程的基礎上,首先分析主流的Zynq和pcDuino平颱上開發環境的搭建、Linux內核以及Android係統的編譯、下載;然後結閤前文學習過的知識點,從零開始設計LED顯示係統的Linux內核驅動、Android HAL支持和服務層設計、頂層App的實現;作為進階部分,最後介紹瞭對Android內核進行跟蹤調試與性能測試的工具軟件、工作流程以及結果分析。
緻謝
在此要特彆感謝華章公司的策劃編輯張國強,是他對Android和嵌入式係統開發的關注促成瞭本書的齣版。筆者在撰寫書稿時,他也對本書提齣瞭寶貴的寫作建議,並進行瞭仔細的審閱。
本書的編寫同樣離不開許多朋友的支持,在此特彆感謝蘭州大學信息科學與工程學院的陳華明的大力協助,這本書的齣版離不開他的貢獻。
還要感謝蘭州大學的高博、郭守超、王小強和硃芳芳,感謝他們在本書編寫過程中所給予的幫助與建議。
alt="" />
Android底層開發實戰 下載 mobi epub pdf txt 電子書 格式