有 4 項符合
比開發者更高境界:頂尖Google手機工程師教你分析Android 5.0原始程式碼
的圖書
|
|
| 比開發者更高境界:頂尖Google手機工程師教你分析Android 5.0原始程式碼
作者:劉超
出版社:佳魁資訊股份有限公司
出版日期:2015-09-30
語言:繁體書
|
圖書介紹 - 資料來源:博客來 目前評分: 評分:
圖書名稱:比開發者更高境界:頂尖Google手機工程師教你分析Android 5.0原始程式碼 內容簡介
■頂尖Android開發專家的Android系統分析權威指南
■講解新版本熱點技術,解決系統開發困惑問題
專家推薦
這本書介紹Android 系統的充實和認真程度可能在市面上無出其右。
從Android下載安裝到設定編譯,從JNI/Boinic到Loop/Init,從SystemServer到Provider,從套件管理到圖形系統,從視窗系統到輸入管理,從電源管理到睡眠喚醒機制,從網路管理到音、視訊系統,甚至從Vold 到Recovery,從虛擬機器到自動化測試,都詳細解釋說明。
作為一個工作十多年的資深工程師、從1.0 版本開始接觸Android 系統的工程師、量產過多款產品的Android 第一線架構師,我想沒有這樣的經歷是很難將這本書撰寫得如此詳盡。
希望讀者可以從中獲得有益的啟發,開啟自己完美的Android 開發之旅!~~ 小米電視系統軟體部總監,茹憶
這是一本有6年Android 系統開發經驗、頂尖Android 系統工程師的心血之作!可以推薦給任何從事Android 系統開發或應用程式開發工程師看的書!~~原Motorola 軟體總監,播思通訊CTO,饒宏
一本非常優秀的介紹Android 內部機制的圖書,詳細地分析了Android 系統的大部分模組,值得每一個希望深入學習Android 系統的工程師擁有。~~德信無線軟體部經理,陳行星
作者介紹
作者簡介
劉超
資深Android 專家、系統架構師。曾任職於四通利方、Motorola、小米等多家著名公司。最早的Android 系統開發者之一,研究Android 核心多年。主持研發過天語W606、酷派W711、華為T8301 等多款Android 手機系統。
目錄
前言
Chapter 01 建立Android 系統開發環境
1.1 安裝作業系統
1.2 安裝開發套件
1.3 安裝一些有用的工具
1.4 下載原始程式
Chapter 02 Android 的編譯環境:Build 系統
2.1 Android Build 系統核心
2.2 Android 的產品設定檔
2.3 編譯Android 的模組
2.4 Android 中的簽名
Chapter 03 連接Android 和Linux 核心的橋樑:Android 的Bionic
3.1 Bionic 簡介
3.2 Bionic C 函數庫中的系統呼叫
3.3 Bionic 中的記憶體管理函數
3.4 管線
3.5 Bionic 中的執行緒管理函數
3.6 Futex 同步機制
3.7 Android 的Log 模組
3.8 可執行檔格式分析
3.9 Bionic 中的Linker 模組
3.10 偵錯器 —— Ptrace 和Hook API
Chapter 04 處理程序間通訊:Android 的Binder
4.1 Binder 簡介
4.2 如何使用Binder
4.3 Binder 應用層的核心類別
4.4 Binder 的實現原理
4.5 Binder 驅動
4.6 解析名稱的模組 —— ServiceManager 的作用
4.7 匿名共用記憶體ashmem
Chapter 05 連接Java 和C/C++ 層的關鍵:Android 的JNI
5.1 JNI 的作用
5.2 JNI 用法介紹
5.3 JNI 環境
5.4 ART 帶來的JNI 變化
Chapter 06 Android 的同步和訊息機制
6.1 最小操作
6.2 Android native 層的同步方法
6.3 Android Java 層的同步機制
6.4 Android 的訊息機制
6.5 處理程序間的訊息傳遞
Chapter 07 第一個使用者處理程序:Android 的Init 處理程序
7.1 Init 處理程序的初始化過程
7.2 解析啟動指令稿init.rc
7.3 Init 處理程序對訊號的處理
7.4 屬性系統
7.5 守護處理程序ueventd 介紹
7.6 「看門狗」—— watchdogd 介紹
Chapter 08 支撐Android 世界的一極:Zygote 處理程序
8.1 Zygote 簡介
8.2 Zygote 處理程序的初始化
8.3 Zygote 啟動應用程式
8.4 預先載入系統類別和資源
Chapter 09 精確地控制資源的使用:Android 的資源管理
9.1 資源系統簡介
9.2 Android 資源的製作
9.3 Android 資源的使用
9.4 Android 資源管理的實現原理
9.5 全新的設計語言 —— Android 5.0 的Material Design
Chapter 10 Android 系統的核心之一:SystemServer 處理程序
10.1 SystemServer 的建立過程
10.2 SystemServer 中的Watchdog
Chapter 11 APK 套件的安裝、移除和最佳化:Android 的應用管理
11.1 了解PackageManagerService
11.2 安裝應用
11.3 系統執行時期的應用管理
11.4 守護處理程序installd
11.3 在storyboard 中設計速覽
11.4 掛鉤控制器
Chapter 12 Android 的元件管理
12.1 應用處理程序的組成
12.2 Android 架構的核心 —— ActivityManagerService 服務
12.3 Process 管理
12.4 Activity 管理
12.5 應用的啟動過程
12.6 Service 管理
12.7 提供資料的存取 —— ContentProvider 管理
12.8 廣播 —— BroadcastReceiver 管理第三部分 WatchKit 進階功能
Chapter 13 Android 的多使用者模式
13.1 管理使用者的系統服務 —— UserManagerService 服務
13.2 PackageManagerService 和多使用者
13.3 ActivityManagerServier 和多使用者
Chapter 14 Android 的圖形顯示系統
14.1 畫布 —— 了解Surface
14.2 影像顯示原理
14.3 SurfaceFlinger 服務
14.4 影像的輸出過程
14.5 歸納
Chapter 15 Android 的視窗系統
15.1 應用處理程序和WMS 的聯繫
15.2 WindowManagerService 服務
15.3 確定視窗尺寸
15.4 視窗動畫管理
15.5 歸納
Chapter 16 Android 的輸入管理
16.1 管理各種輸入的服務 —— InputManagerService
16.2 應用處理程序處理Input 訊息
16.3 歸納
Chapter 17 Android 的電源管理
17.1 電源管理服務 —— PowerManagerService
17.2 控制系統休眠的機制
17.3 電池管理服務
Chapter 18 Android 的儲存系統
18.1 管理存放裝置 —— Vold 守護處理程序
18.2 對存放裝置操作 —— MountService 服務
18.3 其他儲存相關的服務
Chapter 19 Android 的網路管理架構
19.1 管理各種網路裝置 —— Netd 守護處理程序
19.2 網路管理的中心 —— ConnectivityService 服務
19.3 完成對網路實體介面操作 —— NetworkManagementService 服務
19.4 歸納
Chapter 20 Android 的音訊系統
20.1 音訊系統簡介
20.2 AudioPolicyService 服務 —— 輸入輸出裝置的狀態
20.3 音訊的核心 —— AudioFlinger 服務
20.4 一次完整的播放過程
Chapter 21 讓應用更安全:Android 的SELinux 模組
21.1 安全系統 —— SELinux 簡介
21.2 安全增強型 —— SEAndroid 簡介
21.3 Android 如何使用SELinux
21.4 歸納
Chapter 22 Dalvik 和ART 虛擬機器
22.1 Dalvik 虛擬機器簡介
22.2 Dalvik 的啟動和初始化
22.3 Dalvik 位元組碼的執行過程
22.4 Dalvik 的記憶體管理機制
22.5 ART 模式簡介
Chapter 23 系統升級模組:Android 的Recovery 模組
23.1 Recovery 模組的執行
23.2 Recovery 的升級過程
23.3 update-binary 模組
Chapter 24 Android 的偵錯方法
24.1 取得和分析系統Log
24.2 記憶體洩露的分析方法
24.3 Android 的自動化測試
序
前言
Android 5.0(代號Lollipop,簡稱Android L)是Android 系統自1.0 版本以來變化最大的升級版,它包含了很多激動人心的改進,其中最明顯的變化在於使用者體驗方面。「Material Design」扁平、簡潔,且其色彩豐富、動感十足的設計風格,給使用者帶來了更新鮮的感覺。除了介面風格的重大變化外,包含搜索、應用選單、通知中心等許多細節在Android 5.0 上也有很大改進。
Android 5.0 在系統性能提升方面也做了相當大的努力,首先是ART 徹底代替了Dalivk 虛擬機器,同時開始支援64 位元編譯,因而,使用者很快就能使用執行64位元CPU 的手機,重要的是,系統的耗電量也透過「Porject Volte」專案有了顯著的改善。
從2008 年9 月23 日Google 發佈Android 1.0 版本到2014 年6 月26 日Google正式推出Android 5.0,已經6 年過去了。筆者第一次接觸Android 系統是2008 年在Motorola 工作的時候,那時Android 才嶄露頭角,現在Android 系統已經佔據手機市場50% 以上。由於工作關係,筆者6 年來一直致力於Android Framework的開發和研究, 也算是略有收穫。
Android 是一套開放原始碼系統, 官方(Google)提供的技術資料很有限,其官方網站(www.android.com)中提供的資料更多地是在介紹Android 應用程式的開發。這6 年間也湧現了大批介紹Android的書籍,主要是介紹Android 應用程式的開發,分析Android 核心原始程式的書籍較少,為此特意撰寫本書。
✤本書內容介紹
本書介紹了Android 主要模組的架構、原理和主幹實現。希望讀者能透過本書,獲得對Android 系統進行延伸開發的能力,而筆者在書中,也盡可能詳細地列出程式的註釋、各種屬性和常數的解釋,以及系統中使用的各種檔案格式的介紹,希望本書能成為系統開發人員的案頭工具書。
全書共分24 章,基本包括了Android 系統中重要的模組,對於每個模組,筆者儘量詳細地介紹了它們的架構、原理和程式等各方面,由於篇幅限制以及本人的了解有限,如果讀者發現了其中的謬誤,歡迎來信賜教,本人不勝感激。關於本書的一些後續的資訊,可以造訪筆者的部落格(http://blog.csdn.net/u013234805)。
本書有3 個主要特點:一是新,全書以最新為基礎的Android 5.0 的程式分析說明(Android 5.0 中很多程式細節都有改進);二是全,對Android 的覆蓋面比較廣,Android 4.4 和Android 5.0 中增加的新功能,如SELinux、ART 等都有詳細介紹,同時整本書以一套原始程式分析說明,很多模組前後能相互印證;三是細,除了對各個模組為基礎的功能進行詳細說明外,對書中摘錄的Android 原始程式也做了詳細註釋。
本書針對的讀者主要是進行系統開發的工程師,包含手機開發工程師、ROM 開發工程師和各種使用Android 作為開發平台的TV 和可穿戴式裝置(Wear)的開發工程師。當然,即使是Android 應用程式開發工程師,如果能了解更多的Android 系統知識,也會對應用程式開發有相當大的幫助,畢竟Android 底層的開發資料比較少,一些API 的解釋也不盡人意,在開發應用的過程中,當遇到問題時,如果能開啟原始程式進行檢視,很多問題都能輕鬆解決。
✤本書導讀
閱讀系統分析類別的書籍,從來不是一件輕鬆的事情。Android 是一套非常複雜的系統,為了能減輕讀者的負擔,筆者在介紹每個模組時,儘量先介紹模組的使用、原理或架構,讓讀者對某個模組有了初步了解後再透過剖析原始程式來更深入地介紹細節。
本書摘錄了大量的Android 原始程式,讀者第一次閱讀某個章節時,如果覺得枯燥,可以先忽略原始程式,只閱讀筆者的分析文字,有了整體的概念之後,再從頭開始了解書中的程式會更容易。
其實,真正掌握某個模組的內容,是必須要能讀懂原始程式的,為了幫助讀者達到這個目的,筆者會做儘量詳細的分析解釋,對於一些複雜的函數,同時會在程式中加上詳細的註釋。
為了減小程式佔用的版面,筆者將程式中的Log 敘述、英文註釋,以及一些進行參數檢查、錯誤處理的程式都刪除了,然後再加上註釋,改動後的程式和原始程式看上去可能有區別,但是邏輯上並沒有差別,而且更加容易了解。
如果純粹使用自然語言去描述某個函數的程式邏輯,可能會非常晦澀難懂。對於軟體工程師而言,通常更習慣閱讀程式來了解邏輯,因此,筆者在書中盡可能保留一個函數原始程式的全貌。但是大段的程式也會讓人覺得枯燥,因此,對於程式量大的函數,筆者一般會把程式分成小段來分析說明,這樣能保持一頁中程式和文字的合適比例,減輕讀者的閱讀負擔。
在閱讀本書時,有一點要注意:在Java 語言中,通常使用「方法」這個稱謂,而C/C++語言中,則習慣使用「函數」。在本書中,筆者會同時使用這兩種稱謂,因為Android 的很多模組中,Java 和C++的程式中會有名稱相同的函數,為了不混淆兩者,書中說明Java 程式時,儘量使用「方法」這個稱謂,說明C/C++ 程式時,則使用「函數」。當然兩者並沒有本質區別,這是筆者特意為之,是為了更好了解。
詳細資料
- ISBN:9789863792116
- 規格:線裝 / 1008頁 / 17 x 23 cm / 普通級 / 單色印刷 / 初版
- 出版地:台灣
|
|
|
| 66折: $ 825 | | 作者:凱蒂.哈德森 出版社:東雨文化 出版日期:2021-06-08 66折: $ 805 | | 作者:周姚萍 出版社:五南圖書出版股份有限公司 出版日期:2018-04-28 66折: $ 198 | | 66折: $ 99 | |
|
| 作者:しろやぎ秋吾 出版社:台灣角川股份有限公司 出版日期:2024-08-22 $ 252 | | $ 133 | | 作者:田地野彰 出版社:國際學村 出版日期:2022-04-14 $ 261 | | 作者:鐘穎 出版社:楓樹林出版社 出版日期:2024-11-01 $ 331 | |
|
| 作者:永井三郎 出版社:東立出版社 出版日期:2024-12-31 $ 133 | | 作者:黑熊學院 出版社:前衛出版社 出版日期:2024-11-20 $ 350 | | 作者:山根綾乃 出版社:尖端漫畫 出版日期:2024-11-21 $ 128 | | 作者:壽岳章子 出版社:馬可孛羅 出版日期:2024-11-07 $ 266 | |
|
|
|
|