注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡軟件與程序設計程序設計綜合Android內(nèi)核剖析

Android內(nèi)核剖析

Android內(nèi)核剖析

定 價:¥79.90

作 者: 柯元旦 著
出版社: 電子工業(yè)出版社
叢編項:
標 簽: 移動開發(fā)

ISBN: 9787121143984 出版時間: 2011-09-01 包裝: 平裝
開本: 16開 頁數(shù): 596 字數(shù):  

內(nèi)容簡介

  本書內(nèi)容分別從基礎、內(nèi)核、系統(tǒng)、編譯以及硬件驅動幾個方面對Android內(nèi)核相關知識進行深入剖析,詳細分析了Android內(nèi)核的內(nèi)部機制,包括窗口管理系統(tǒng)、Activity管理系統(tǒng)、輸入法框架、編譯系統(tǒng)等,為Android內(nèi)核定制以及高級應用程序開發(fā)提供技術參考。本書適合于所有Android相關的工程師以及產(chǎn)品經(jīng)理。

作者簡介

  柯元旦,1981年生于陜西咸陽,2003年畢業(yè)于西安電子科技大學通信工程學院;2003~2006年,創(chuàng)立了一家設計公司,提供便攜式媒體播放器解決方案,基于TI DSP芯片自主開發(fā)了一套操作系統(tǒng),包括任務管理與調(diào)度、文件系統(tǒng)及GUI(圖形用戶接口)等:2006~2009年,就職于聯(lián)想研究院,先后從事嵌入式系統(tǒng)設計以及互聯(lián)網(wǎng)應用開發(fā);2009年至今,從事Android應用程序開發(fā)和Framework內(nèi)核研究,對Android內(nèi)核有較深刻的理解。

圖書目錄

第1部分  基礎篇
 第1章  Linux基礎
  1.1  Linux文件系統(tǒng)概述
  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循環(huán)
  1.4.6  函數(shù)
  1.4.7  常用內(nèi)置符號常量
  1.5  Make腳本備忘
  1.5.1  一個簡單的Makefile文件
  1.5.2  變量的定義與賦值
  1.5.3  條件控制語句
  1.5.4  宏(函數(shù))定義
  1.5.5  內(nèi)置符號和變量
  1.5.6  模板目標(Pattern target)
  1.5.7  目標特定的變量賦值(Target-specific variable)
  1.5.8  常用選項
 第2章  Java基礎
  2.1  類裝載器DexClassLoader
  2.1.1  DexClassLoader的調(diào)用方法
  2.1.2  基于類裝載器設計一種“插件”架構
  2.2  JNI調(diào)用機制
  2.2.1  Java訪問C
  2.2.2  C訪問Java
  2.2.3  在C中使用持久對象
  2.3  異步消息處理線程
  2.3.1  實現(xiàn)異步線程的一般思路
  2.3.2  Android中異步線程的實現(xiàn)方法
 第3章  Android源碼下載及開發(fā)環(huán)境配置
  3.1  Mac系統(tǒng)的配置
  3.1.1  硬盤格式的配置
  3.1.2  port的用法
  3.2  在Linux中配置USB連接
  3.3  在Eclipse中調(diào)試Framework
  3.3.1  一段防止下載異常的腳本
  3.3.2  調(diào)試Framework中的代碼
 第4章  使用git
  4.1  安裝git
  4.2  git倉庫管理
  4.2.1  倉庫的組成
  4.2.2  創(chuàng)建倉庫
  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部分  內(nèi)核篇
 第5章  Binder
  5.1  Binder框架
  5.2  設計Servier端
  5.3  Binder客戶端設計
  5.4  使用Service類
  5.4.1  獲取Binder對象
  5.4.2  保證包裹內(nèi)參數(shù)順序aidl工具的使用
  5.5  系統(tǒng)服務中的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之間如何傳遞消息(數(shù)據(jù))
  6.4.2  窗口相關的概念
 第7章  理解Context
  7.1  Context是什么
  7.2  一個應用程序中包含多少個Context對象
  7.3  Context相關類的繼承關系
  7.4  創(chuàng)建Context
  7.4.1  Application對應的Context
  7.4.2  Activity對應的Context
  7.4.3  Service對應的Context
  7.4.4  Context之間的關系
 第8章  創(chuàng)建窗口的過程
  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  創(chuàng)建應用窗口
  8.4  創(chuàng)建子窗口
  8.4.1  Dialog的創(chuàng)建
  8.4.2  PopupWindow的創(chuàng)建
  8.4.3  ContextMenu的創(chuàng)建
  8.4.4  OptionMenu的創(chuàng)建
  8.5  系統(tǒng)窗口Toast的創(chuàng)建
  8.5.1  Toast調(diào)用流程
  8.5.2  Toast添加窗口
  8.6  創(chuàng)建窗口示例
 第9章  Framework的啟動過程
  9.1  Framework運行環(huán)境綜述
  9.2  Dalvik虛擬機相關的可執(zhí)行程序
  9.2.1  dalvikvm
  9.2.2  dvz
  9.2.3  app_process
  9.3  zygote的啟動
  9.3.1  在init.rc中配置zygote啟動參數(shù)
  9.3.2  啟動Socket服務端口
  9.3.3  加載preload-classes
  9.3.4  加載preload-resources
  9.3.5  使用folk啟動新的進程
  9.4  SystemServer進程的啟動
  9.4.1  啟動各種系統(tǒng)服務線程
  9.4.2  啟動第一個Activity
 第10章  AmS內(nèi)部原理
  10.1  Activity調(diào)度機制
  10.1.1  幾個重要概念
  10.1.2  AmS中的一些重要調(diào)度相關變量
  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  內(nèi)存管理
  10.2.1  關閉而不退出
  10.2.2  Android與Linux的配合
  10.2.3  各種關閉程序的過程
  10.2.4  釋放內(nèi)存詳解
  10.3  對AmS中數(shù)據(jù)對象的理解
  10.3.1  常見的對象操作
  10.3.2  理解Activity
  10.3.3  Android多進程嗎,是同時在運行多個應用程序嗎
  10.4  ActivityGroup的內(nèi)部機制
  10.4.1  TabActivity使用時的類關系結構
  10.4.2  LocalActivityManager的內(nèi)部機制
  10.4.3  ActivityGroup內(nèi)部的Activity生命期控制
 第11章  從輸入設備中獲取消息
  11.1  Android消息獲取過程概述
  11.2  與消息處理相關的源碼文件分布
  11.3  創(chuàng)建InputDispatcher線程
  11.4  把窗口信息傳遞給InputDispatcher線程
  11.5  創(chuàng)建InputChannel
  11.6  在WmS中注冊InputChannel
  11.7  在客戶進程中注冊InputChannel
  11.8  WmS中處理消息的時機
  11.9  客戶窗口獲取消息的時機
 第12章  屏幕繪圖基礎
  12.1  繪制屏幕的軟件架構
  12.2  Java客戶端繪制調(diào)用過程
  12.3  C客戶端繪制過程
  12.4  Java客戶端繪制相關類的關系
 第13章  View工作原理
  13.1  導論
  13.2  用戶消息類型
  13.2.1  按鍵消息
  13.2.2  觸摸消息
  13.3  按鍵消息派發(fā)過程
  13.3.1  KeyEvent.DispatcherState中的長按監(jiān)測
  13.3.2  按鍵消息總體派發(fā)過程
  13.3.3  根視圖內(nèi)部派發(fā)過程
  13.3.4  Activity內(nèi)部派發(fā)過程
  13.3.5  View類內(nèi)部的onKeyDown()和onKeyUp()
  13.3.6  Activity中的onKeyDown()和onKeyUp()
  13.3.7  PhoneWindow內(nèi)部消息派發(fā)過程
  13.4  按鍵消息在WmS中的派發(fā)過程
  13.5  觸摸消息派發(fā)過程
  13.5.1  觸摸消息總體派發(fā)過程
  13.5.2  根視圖內(nèi)部消息派發(fā)過程
  13.5.3  ViewGroup內(nèi)部消息派發(fā)過程
  13.5.4  各種消息監(jiān)測的基本實現(xiàn)方法
  13.5.5  View內(nèi)默認消息派發(fā)過程
  13.6  導致View樹重新遍歷的時機
  13.6.1  狀態(tài)的分類
  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()的執(zhí)行過程
  13.8  計算視圖大?。╩easure)的過程
  13.8.1  measure內(nèi)部設計思路
  13.8.2  ViewGroup中的measureChildWithMargins()
  13.8.3  LinearLayout中的onMeasure()過程舉例
  13.9  布局(layout)過程
  13.9.1  layout過程的設計思路
  13.9.2  LinearLayout中onLayout()內(nèi)部過程
  13.9.3  TextView中gravity與layout的關系
  13.10  繪制(draw)過程
  13.10.1  視圖中可繪制的元素
  13.10.2  繪制過程的設計思路
  13.10.3  ViewRoot中draw()的內(nèi)部流程
  13.10.4  View類中draw()函數(shù)內(nèi)部流程
  13.10.5  ViewGroup類中繪制子視圖dispatchDraw()內(nèi)部流程
  13.10.6  ViewGroup類中drawChild()過程
  13.10.7  繪制滾動條
  13.11  動畫的繪制
  13.11.1  動畫的設計思路
  13.11.2  ViewGroup類中drawChild()函數(shù)中視圖動畫繪制過程
  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主要內(nèi)部類
  14.2.1  表示窗口的數(shù)據(jù)類
  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  窗口的創(chuàng)建和刪除
  14.3.1  創(chuàng)建窗口的時機和過程
  14.3.2  assignLayersLocked()的執(zhí)行過程
  14.3.3  addWindowToListInOrderLocked()的執(zhí)行過程
  14.3.4  刪除窗口的時機
  14.3.5  刪除窗口的過程
  14.3.6  removeWindowInnerLocked()
  14.4  計算窗口的大小
  14.4.1  描述窗口尺寸的變量
  14.4.2  窗口大小的變化過程
  14.4.3  Policy中l(wèi)ayoutWindowLw()的執(zhí)行過程
  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()的執(zhí)行過程
  14.6.1  總體過程
  14.6.2  第一大步驟:計算窗口的大小
  14.6.3  第二大步驟:計算窗口的可視狀態(tài)
  14.6.4  第三大步驟:通知SurfaceFlinger進行窗口重繪
  14.7  窗口動畫
  14.8  屏幕旋轉及Configuration的變化過程
第3部分  系統(tǒng)篇
 第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  實現(xiàn)真正主題切換的兩種思路
 第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()內(nèi)部過程
  16.3.4  mSettings.readLP()
  16.3.5  scanPackageLI()內(nèi)部過程
  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  主體調(diào)用過程
 第17章  輸入法框架
  17.1  輸入法框架組成概述
  17.2  輸入法中各Binder對象的創(chuàng)建過程
  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  輸入法窗口內(nèi)部的顯示過程
  17.4.1  IMS中的showWindow()的內(nèi)部執(zhí)行過程
  17.4.2  標準布局的IMS
  17.4.3  自定義布局的IMS
  17.5  向編輯框傳遞字符
  17.6  輸入法相關源碼清單
第4部分  編譯篇
 第18章  Android編譯系統(tǒng)
  18.1  Android源碼文件結構
  18.2  從調(diào)用make命令開始說起
  18.2.1  編譯命令
  18.2.2  編譯結構猜想
  18.3  編譯所需腳本文件之間的協(xié)同關系
  18.3.1  編譯系統(tǒng)內(nèi)部功能模塊圖
  18.3.2  腳本文件的包含關系
  18.3.3  從子項目中提取編譯目標
  18.3.4  生成編譯規(guī)則
  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靜態(tài)庫
  18.6.5  編譯Java源文件生成Jar包
  18.6.6  將Jar包轉換為dex文件
  18.6.7  編譯資源文件生成APK包
  18.6.8  將dex文件添加到APK包中
  18.6.9  添加JNI所需的動態(tài)庫文件
  18.6.10  對APK文件進行簽名
  18.6.11  使用zipalign優(yōu)化APK內(nèi)部存儲
  18.7  Framework的編譯
  18.7.1  總體編譯過程
  18.7.2  framework/core/ext三個Jar文件的區(qū)別
  18.8  編譯android.jar
  18.8.1  資源文件
  18.8.2  aidl文件
  18.8.3  Java文件
  18.9  編譯adt插件
  18.10  總結
 第19章  編譯自己的Rom
  19.1  嵌入式系統(tǒng)的內(nèi)存地址空間
  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  創(chuàng)建ramdisk.img
  19.3.5  創(chuàng)建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 開發(fā)板介紹
  20.1  Techv-35XX開發(fā)板概述
  20.2  交叉編譯環(huán)境配置
  20.3  x-loader編譯
  20.4  u-boot編譯
  20.5  Techv-35XX Linux驅動和內(nèi)核配置及編譯
  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  內(nèi)核編譯
  20.6  Techv-35XX Android驅動編寫
  20.7  Techv-35XX Android開發(fā)環(huán)境建立
  20.8  編譯Android Donut
  20.9  Android根文件系統(tǒng)的制作
  20.10  相關Image文件的燒寫
  20.11  Android 根文件系統(tǒng)安裝

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號