Android內核剖析

Android內核剖析
定價:479
NT $ 479
  • 作者:柯元旦
  • 出版社:電子工業出版社
  • 出版日期:2011-09-01
  • 語言:簡體中文
  • ISBN10:7121143984
  • ISBN13:9787121143984
  • 裝訂:平裝 / 595頁 / 普通級 / 單色印刷 / 初版
 

內容簡介

本書內容分別從基礎、內核、系統、編譯以及硬件驅動幾個方面對Android內核相關知識進行深入剖析,詳細分析了Android內核的內部機制,包括窗口管理系統、Activity管理系統、輸入法框架、編譯系統等,為Android內核定制以及高級應用程序開發提供技術參考。

本書適合于所有Android相關的工程師以及產品經理。
 

目錄

第1部分 基礎篇
 第1章 Linux基礎
  1.1 Linux文件系統概述
  1.2 Linux啟動過程
  1.3 常用Linux 命令
  1.4 Shell腳本備忘
  1.4.1 獲取輸入
  1.4.2 變量定義
  1.4.3 條件判斷
  1.4.4 while []...do... done語句
  1.4.5 for循環
  1.4.6 函數
  1.4.7 常用內置符號常量
  1.5 Make腳本備忘
  1.5.1 一個簡單的Makefile文件
  1.5.2 變量的定義與賦值
  1.5.3 條件控制語句
  1.5.4 宏(函數)定義
  1.5.5 內置符號和變量
  1.5.6 模板目標(Pattern target)
  1.5.7 目標特定的變量賦值(Target-specific variable)
  1.5.8 常用選項
 第2章 Java基礎
  2.1 類裝載器DexClassLoader
  2.1.1 DexClassLoader的調用方法
  2.1.2 基于類裝載器設計一種“插件”架構
  2.2 JNI調用機制
  2.2.1 Java訪問C
  2.2.2 C訪問Java
  2.2.3 在C中使用持久對象
  2.3 異步消息處理線程
  2.3.1 實現異步線程的一般思路
  2.3.2 Android中異步線程的實現方法
 第3章 Android源碼下載及開發環境配置
  3.1 Mac系統的配置
  3.1.1 硬盤格式的配置
  3.1.2 port的用法
  3.2 在Linux中配置USB連接
  3.3 在Eclipse中調試Framework
  3.3.1 一段防止下載異常的腳本
  3.3.2 調試Framework中的代碼
 第4章 使用git
  4.1 安裝git
  4.2 git倉庫管理
  4.2.1 倉庫的組成
  4.2.2 創建倉庫
  4.2.3 分支管理
  4.3 git merge用法
  4.4 git rebase用法
  4.5 git cherry-pick用法
  4.6 git reset用法
  4.7 恢復到無引用提交
  4.8 git remote用法
  4.9 git 配置
  4.9.1 基本信息配置
  4.9.2 merge、diff工具配置
  4.9.3 .gitignore配置
  4.10 同時使用git和svn
  4.11 其他git常用命令示例
  4.11.1 git branch
  4.11.2 git checkout
  4.11.3 git log
  4.11.4 git commit --amend
  4.11.5 git cherry-pick sha-1
  4.11.6 git merge-base
  4.11.7 git diff master…dev
  4.11.8 git revert
  4.11.9 git diff
  4.11.10 git rm
  4.11.11 git tag
第2部分 內核篇
 第5章 Binder
  5.1 Binder框架
  5.2 設計Servier端
  5.3 Binder客戶端設計
  5.4 使用Service類
  5.4.1 獲取Binder對象
  5.4.2 保證包裹內參數順序aidl工具的使用
  5.5 系統服務中的Binder對象
  5.5.1 ServiceManager管理的服務
  5.5.2 理解Manager
 第6章 Framework概述
  6.1 Framework框架
  6.1.1 服務端
  6.1.2 客戶端
  6.1.3 Linux驅動
  6.2 APK程序的運行過程
  6.3 客戶端中的線程
  6.4 幾個常見問題
  6.4.1 Acitivity之間如何傳遞消息(數據)
  6.4.2 窗口相關的概念
 第7章 理解Context
  7.1 Context是什麼
  7.2 一個應用程序中包含多少個Context對象
  7.3 Context相關類的繼承關系
  7.4 創建Context
  7.4.1 Application對應的Context
  7.4.2 Activity對應的Context
  7.4.3 Service對應的Context
  7.4.4 Context之間的關系
 第8章 創建窗口的過程
  8.1 窗口的類型
  8.2 token變量的含義
  8.2.1 Activity中的mToken
  8.2.2 Window中的mAppToken
  8.2.3 WindowManager.LayoutParams中的token
  8.2.4 View中的token
  8.3 創建應用窗口
  8.4 創建子窗口
  8.4.1 Dialog的創建
  8.4.2 PopupWindow的創建
  8.4.3 ContextMenu的創建
  8.4.4 OptionMenu的創建
  8.5 系統窗口Toast的創建
  8.5.1 Toast調用流程
  8.5.2 Toast添加窗口
  8.6 創建窗口示例
 第9章 Framework的啟動過程
  9.1 Framework運行環境綜述
  9.2 Dalvik虛擬機相關的可執行程序
  9.2.1 dalvikvm
  9.2.2 dvz
  9.2.3 app_process
  9.3 zygote的啟動
  9.3.1 在init.rc中配置zygote啟動參數
  9.3.2 啟動Socket服務端口
  9.3.3 加載preload-classes
  9.3.4 加載preload-resources
  9.3.5 使用folk啟動新的進程
  9.4 SystemServer進程的啟動
  9.4.1 啟動各種系統服務線程
  9.4.2 啟動第一個Activity
 第10章 AmS內部原理
  10.1 Activity調度機制
  10.1.1 幾個重要概念
  10.1.2 AmS中的一些重要調度相關變量
  10.1.3 startActivity()的流程
  10.1.4 stopActivityLocked()停止Activity
  10.1.5 按“Home”鍵回到桌面的過程
  10.1.6 按“Back”鍵回到上一個Activity
  10.1.7 長按“Home”鍵
  10.1.8 Activity生命期的代碼含義
  10.2 內存管理
  10.2.1 關閉而不退出
  10.2.2 Android與Linux的配合
  10.2.3 各種關閉程序的過程
  10.2.4 釋放內存詳解
  10.3 對AmS中數據對象的理解
  10.3.1 常見的對象操作
  10.3.2 理解Activity
  10.3.3 Android多進程嗎,是同時在運行多個應用程序嗎
  10.4 ActivityGroup的內部機制
  10.4.1 TabActivity使用時的類關系結構
  10.4.2 LocalActivityManager的內部機制
  10.4.3 ActivityGroup內部的Activity生命期控制
 第11章 從輸入設備中獲取消息
  11.1 Android消息獲取過程概述
  11.2 與消息處理相關的源碼文件分布
  11.3 創建InputDispatcher線程
  11.4 把窗口信息傳遞給InputDispatcher線程
  11.5 創建InputChannel
  11.6 在WmS中注冊InputChannel
  11.7 在客戶進程中注冊InputChannel
  11.8 WmS中處理消息的時機
  11.9 客戶窗口獲取消息的時機
 第12章 屏幕繪圖基礎
  12.1 繪制屏幕的軟件架構
  12.2 Java客戶端繪制調用過程
  12.3 C客戶端繪制過程
  12.4 Java客戶端繪制相關類的關系
 第13章 View工作原理
  13.1 導論
  13.2 用戶消息類型
  13.2.1 按鍵消息
  13.2.2 觸摸消息
  13.3 按鍵消息派發過程
  13.3.1 KeyEvent.DispatcherState中的長按監測
  13.3.2 按鍵消息總體派發過程
  13.3.3 根視圖內部派發過程
  13.3.4 Activity內部派發過程
  13.3.5 View類內部的onKeyDown()和onKeyUp()
  13.3.6 Activity中的onKeyDown()和onKeyUp()
  13.3.7 PhoneWindow內部消息派發過程
  13.4 按鍵消息在WmS中的派發過程
  13.5 觸摸消息派發過程
  13.5.1 觸摸消息總體派發過程
  13.5.2 根視圖內部消息派發過程
  13.5.3 ViewGroup內部消息派發過程
  13.5.4 各種消息監測的基本實現方法
  13.5.5 View內默認消息派發過程
  13.6 導致View樹重新遍歷的時機
  13.6.1 狀態的分類
  13.6.2 導致View樹重新遍歷的總體誘因圖
  13.6.3 refreshDrawableList()
  13.6.4 onFocusedChanged()
  13.6.5 ensureTouchMode()
  13.6.6 setVisibility()
  13.6.7 setEnable()
  13.6.8 setSelected()
  13.6.9 invalidate()
  13.6.10 requestFocus()
  13.6.11 requestLayout()
  13.7 遍歷View樹performTraversals()的執行過程
  13.8 計算視圖大小(measure)的過程
  13.8.1 measure內部設計思路
  13.8.2 ViewGroup中的measureChildWithMargins()
  13.8.3 LinearLayout中的onMeasure()過程舉例
  13.9 布局(layout)過程
  13.9.1 layout過程的設計思路
  13.9.2 LinearLayout中onLayout()內部過程
  13.9.3 TextView中gravity與layout的關系
  13.10 繪制(draw)過程
  13.10.1 視圖中可繪制的元素
  13.10.2 繪制過程的設計思路
  13.10.3 ViewRoot中draw()的內部流程
  13.10.4 View類中draw()函數內部流程
  13.10.5 ViewGroup類中繪制子視圖dispatchDraw()內部流程
  13.10.6 ViewGroup類中drawChild()過程
  13.10.7 繪制滾動條
  13.11 動畫的繪制
  13.11.1 動畫的設計思路
  13.11.2 ViewGroup類中drawChild()函數中視圖動畫繪制過程
  13.11.3 ViewGroup中dipsatchDraw()中布局動畫繪制流程
 第14章 WmS工作原理
  14.1 概述
  14.1.1 窗口的定義
  14.1.2 窗口管理要解決的核心問題
  14.1.3 解決核心問題所使用的相關的變量列表
  14.1.4 幾個操作的概念
  14.1.5 什麼是Policy,以及其與WmS的關系
  14.1.6 WmS接口結構
  14.2 WmS主要內部類
  14.2.1 表示窗口的數據類
  14.2.2 DimAnimator
  14.2.3 FadeInOutAnimation
  14.2.4 InputMonitor類
  14.2.5 PolicyThread
  14.2.6 Session
  14.2.7 Watermark
  14.2.8 WMThread
  14.3 窗口的創建和刪除
  14.3.1 創建窗口的時機和過程
  14.3.2 assignLayersLocked()的執行過程
  14.3.3 addWindowToListInOrderLocked()的執行過程
  14.3.4 刪除窗口的時機
  14.3.5 刪除窗口的過程
  14.3.6 removeWindowInnerLocked()
  14.4 計算窗口的大小
  14.4.1 描述窗口尺寸的變量
  14.4.2 窗口大小的變化過程
  14.4.3 Policy中layoutWindowLw()的執行過程
  14.4.4 輸入法窗口如何影響應用窗口的大小
  14.5 切換窗口
  14.5.1 切換要解決的問題
  14.5.2 InputManager和WmS的接口
  14.5.3 AmS與WmS的接口
  14.5.4 從A到B的切換
  14.5.5 從B回到A的過程
  14.5.6 A中長按“Home”鍵切換到B
  14.5.7 setAppVisiblity()與銷毀Surface
  14.5.8 computeFocusedWindowLocked()
  14.6 perforLayoutAndPlaceSurfacesLockedInner()的執行過程
  14.6.1 總體過程
  14.6.2 第一大步驟︰計算窗口的大小
  14.6.3 第二大步驟︰計算窗口的可視狀態
  14.6.4 第三大步驟︰通知SurfaceFlinger進行窗口重繪
  14.7 窗口動畫
  14.8 屏幕旋轉及Configuration的變化過程
第3部分 系統篇
 第15章 資源訪問機制
  15.1 定義資源
  15.2 存儲資源
  15.3 styleable、style、attr、theme的意義
  15.4 AttributeSet與TypedArray類
  15.5 獲取Resources的過程
  15.5.1 通過Context獲取
  15.5.2 通過PackageManager獲取
  15.6 Framework資源
  15.6.1 加載和讀取
  15.6.2 添加
  15.6.3 實現真正主題切換的兩種思路
 第16章 程序包管理(Package Manager Service)
  16.1 包管理概述
  16.2 packages.xml文件格式
  16.2.1 last-platform-version標簽
  16.2.2 permissions標簽
  16.2.3 cert標簽
  16.2.4 sigs標簽
  16.2.5 perms標簽
  16.2.6 package標簽
  16.2.7 shared-user標簽
  16.3 包管理服務的啟動過程
  16.3.1 各主要功能類的關系
  16.3.2 PmS主體啟動過程
  16.3.3 readPermission()內部過程
  16.3.4 mSettings.readLP()
  16.3.5 scanPackageLI()內部過程
  16.3.6 mSettings.writeLP()
  16.4 應用程序的安裝和卸載
  16.4.1 各主要功能類關系
  16.4.2 應用程序安裝過程
  16.4.3 應用程序的卸載過程
  16.5 intent匹配框架
  16.5.1 主要功能類的關系
  16.5.2 主體調用過程
 第17章 輸入法框架
  17.1 輸入法框架組成概述
  17.2 輸入法中各Binder對象的創建過程
  17.2.1 InputConnection
  17.2.2 IInputMethodClient
  17.2.3 InputMethodSession
  17.2.4 InputMethod
  17.3 輸入法主要操作過程
  17.3.1 輸入法相關模塊的啟動過程
  17.3.2 切換輸入法
  17.3.3 啟動輸入法
  17.3.4 顯示輸入法
  17.3.5 輸入法操作過程中的重要變量總結
  17.4 輸入法窗口內部的顯示過程
  17.4.1 IMS中的showWindow()的內部執行過程
  17.4.2 標準布局的IMS
  17.4.3 自定義布局的IMS
  17.5 向編輯框傳遞字符
  17.6 輸入法相關源碼清單
第4部分 編譯篇
 第18章 Android編譯系統
  18.1 Android源碼文件結構
  18.2 從調用make命令開始說起
  18.2.1 編譯命令
  18.2.2 編譯結構猜想
  18.3 編譯所需腳本文件之間的協同關系
  18.3.1 編譯系統內部功能模塊圖
  18.3.2 腳本文件的包含關系
  18.3.3 從子項目中提取編譯目標
  18.3.4 生成編譯規則
  18.3.5 設置編譯輸出目錄
  18.3.6 生成最終的Image文件
  18.4 如何增加一個product
  18.4.1 什麼是一個product
  18.4.2 如何增加一個product
  18.5 如何增加一個項目
  18.5.1 項目類別和項目路徑
  18.5.2 添加一個C項目
  18.5.3 添加一個APK項目
  18.6 APK編譯過程
  18.6.1 總體編譯過程概述
  18.6.2 生成R.java
  18.6.3 編譯aidl文件
  18.6.4 包含Java靜態庫
  18.6.5 編譯Java源文件生成Jar包
  18.6.6 將Jar包轉換為dex文件
  18.6.7 編譯資源文件生成APK包
  18.6.8 將dex文件添加到APK包中
  18.6.9 添加JNI所需的動態庫文件
  18.6.10 對APK文件進行簽名
  18.6.11 使用zipalign優化APK內部存儲
  18.7 Framework的編譯
  18.7.1 總體編譯過程
  18.7.2 framework/core/ext三個Jar文件的區別
  18.8 編譯android.jar
  18.8.1 資源文件
  18.8.2 aidl文件
  18.8.3 Java文件
  18.9 編譯adt插件
  18.10 總結
 第19章 編譯自己的Rom
  19.1 嵌入式系統的內存地址空間
  19.2 各種映像(Image)文件的作用
  19.3 編譯Nexus S(NS)的Image文件
  19.3.1 編譯Linux Kernel
  19.3.2 提取NS的私有驅動文件
  19.3.3 編譯system.img文件
  19.3.4 創建ramdisk.img
  19.3.5 創建boot.img文件
  19.4 使用fastboot寫入Image文件
  19.5 最後驗證
  19.5.1 解決觸摸按鍵問題
  19.5.2 解決音量和電源鍵
  19.5.3 WIFI問題
  19.5.4 安裝Google Mobile Service(GMS)
第5部分 硬件驅動篇
 第20章 基于TI OMAP處理器的 Techshine 開發板介紹
  20.1 Techv-35XX開發板概述
  20.2 交叉編譯環境配置
  20.3 x-loader編譯
  20.4 u-boot編譯
  20.5 Techv-35XX Linux驅動和內核配置及編譯
  20.5.1 Touchscreen驅動配置
  20.5.2 KeyBoard驅動配置
  20.5.3 Audio驅動配置
  20.5.4 MMC/SD驅動配置
  20.5.5 NandFlash驅動配置
  20.5.6 LCD驅動配置
  20.5.7 內核編譯
  20.6 Techv-35XX Android驅動編寫
  20.7 Techv-35XX Android開發環境建立
  20.8 編譯Android Donut
  20.9 Android根文件系統的制作
  20.10 相關Image文件的燒寫
  20.11 Android 根文件系統安裝
網路書店 類別 折扣 價格
  1. 新書
    $479