-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Android底層接口與驅動開發技術詳解

( 簡體 字)
作者:陳強類別:1. -> 程式設計 -> 手機程式 -> Android
譯者:
出版社:中國鐵道出版社Android底層接口與驅動開發技術詳解 3dWoo書號: 41126
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:1/1/2015
頁數:664
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787113197957
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

內容簡介:

Android系統從誕生到現在短短的幾年時間,憑借其操作易用性和開發的簡潔性,贏得了廣大消費用戶和開發者的支持,目前一直位居智能手機操作系統市場占有率榜首的位置。本書分為三篇,共計24章,循序漸進地講解了Android系統中底層驅動方面的知識。本書從獲取源碼和源碼結構分析講起,依次講解了基礎知識篇、專用驅動篇和設備驅動篇三大部分的基本知識。在講解每一個驅動時,都從Android系統源碼開始入手,遵循“內核分析—驅動實現—JNI層分析—Java應用層—系統移植和改造”這一主線,透徹地剖析了每一個驅動系統的完整實現流程。本書幾乎涵蓋了Android驅動方面的所有主要內容,并且全書內容言簡意賅,講解方法通俗易懂,不但適用于應用高手們,也適合初學者學習并消化。
本書定位于有一定基礎的Android開發人員,幫助其細致分析Android源碼和底層驅動開發,積累經驗,快速向Android殿堂級高手邁進。
目錄:

第1篇 基礎知識篇
第 1章 Android驅動開發基礎
1.1 認識什么是驅動 1
1.1.1 驅動程序的作用 1
1.1.2 PC中的驅動 2
1.1.3 手機中的驅動程序 2
1.2 開源還是不開源 2
1.2.1 霧里看花的開源 3
1.2.2 從為什么選擇Java談為什么不開源驅動程序 3
1.2.3 對驅動開發者來說是一把雙刃劍 4
1.3 Linux開發基礎 4
1.3.1 Linux歷史簡介 4
1.3.2 主要版本 5
1.3.3 Linux的巨大前景 5
1.4 Android和Linux的關系 6
1.4.1 Android繼承于Linux 6
1.4.2 Android和Linux內核的區別 6
1.5 簡析Linux內核 8
1.5.1 Linux內核的體系結構 8
1.5.2 和Android密切相關的Linux內核知識 10
1.6 分析Linux內核源碼 14
1.6.1 源碼目錄結構 14
1.6.2 瀏覽源碼的工具 16
1.6.3 Linux內核的顯著特性 18
1.6.4 學習Linux內核的方法 24
第 2章 獲取并編譯Android源碼
2.1 獲取Android源碼 29
2.1.1 在Linux系統獲取Android源碼 29
2.1.2 在Windows平臺獲取Android源碼 30
2.2 分析Android源碼結構 36
2.3 編譯Android源碼 37
2.3.1 搭建編譯環境 38
2.3.2 開始編譯 39
2.3.3 在模擬器中運行 40
2.3.4 常見的錯誤分析 40
2.3.5 實踐演練——演示兩種編譯Android程序的方法 41
2.4 編譯Android Kernel 44
2.4.1 獲取Goldfish內核代碼 45
2.4.2 獲取MSM內核代碼 47
2.4.3 獲取OMAP內核代碼 47
2.4.4 編譯Android的Linux內核 48
第 3章 Android驅動移植基礎
3.1 驅動開發需要做的工作 50
3.2 Android移植基礎 52
3.2.1 移植的任務 52
3.2.2 需要移植的內容 53
3.2.3 驅動開發需要做的工作 54
3.3 Android對Linux的改造 55
3.3.1 Android的獨有驅動 55
3.3.2 Android的核心驅動 55
3.3.3 Android對Linux內核文件的改動 57
3.3.4 為Android構建 Linux的操作系統 58
3.4 內核空間和用戶空間之間接口 59
3.4.1 內核空間和用戶空間的相互作用 59
3.4.2 系統和硬件之間的交互 59
3.4.3 使用Relay實現內核到用戶空間的數據傳輸 61
3.5 三類驅動程序 65
3.5.1 字符設備驅動 65
3.5.2 塊設備驅動 72
3.5.3 網絡設備驅動 75

第 4章 分析三大內核系統
4.1 Goldfish內核和驅動解析 77
4.1.1 Goldfish基礎 78
4.1.2 Android專用驅動簡介 79
4.1.3 Ashmem驅動介紹 82
4.1.4 Pmem驅動介紹 82
4.1.5 Alarm驅動程序 83
4.1.6 USB Gadget驅動程序 83
4.1.7 Paranoid驅動介紹 84
4.1.8 Goldfish的設備驅動 85
4.2 MSM內核和驅動解析 87
4.2.1 MSM基礎 87
4.2.2 移植MSM內核簡介 90
4.2.3 移植MSM 91
4.3 OMAP內核和驅動解析 98
4.3.1 OMAP基礎 98
4.3.2 OMAP內核 100
4.3.3 移植OMAP體系結構 101
4.3.4 移植Android專用驅動和組件 108
4.3.5 OMAP的設備驅動 109
第2篇 專用驅動篇
第 5章 分析JNI
5.1 JNI的本質 114
5.2 分析Java層 116
5.2.1 加載JNI庫 116
5.2.2 實現掃描工作 118
5.2.3 讀取并保存信息 119
5.2.4 刪除不是SD卡中的文件信息 121
5.2.5 processDirectory 121
5.2.6 掃描函數scanFile() 122
5.2.7 JNI中的異常處理 122
5.3 分析JNI層 123
5.3.1 將Native對象的指針保存到Java對象 123
5.3.2 創建Native層的MediaScanner對象 124
5.4 Native(本地)層 124
5.4.1 注冊JNI函數 124
5.4.2 完成注冊工作 126
5.4.3 動態注冊 128
5.4.4 處理路徑參數 130
5.4.5 掃描文件 130
5.4.6 添加TAG信息 131
5.4.7 總結函數JNI_OnLoad()與函數JNI_OnUnload()的用途 131
5.4.8 Java與JNI基本數據類型轉換 132
5.4.9 JNIEnv接口 133
5.4.10 JNI中的環境變量 135
5.5 Camera模塊的JNI實例分析 135
5.5.1 Java層預覽接口 135
5.5.2 注冊預覽的JNI函數 137
5.5.3 C/C++層的預覽函數 140
5.6 開發自己的JNI程序 140
第 6章 硬件設備驅動程序
6.1 初識HAL層 143
6.1.1 HAL層簡介 144
6.1.2 HAL_legacy和HAL的對比 145
6.2 分析HAL層源碼 145
6.2.1 分析HAL moudle 146
6.2.2 文件hardware.h 146
6.2.3 文件hardware.c 148
6.3 分析硬件抽象層的加載過程 151
6.4 分析硬件訪問服務 153
6.4.1 定義硬件訪問服務接口 153
6.4.2 實現硬件訪問服務 154
6.5 分析mokoid工程 155
6.5.1 直接調用service方法的實現代碼 156
6.5.2 通過Manager調用service的實現代碼 160
6.6 分析Sensor(傳感器)在HAL層的實現 163
6.6.1 HAL層的Sensor代碼 163
6.6.2 Sensor編程的流程 165
6.7 HAL和系統移植 166
6.7.1 移植各個Android部件的方式 166
6.7.2 輔助工作 166
第 7章 Binder驅動程序
7.1 引出Binder機制 172
7.2 Binder機制概述 173
7.3 分析Binder驅動程序的數據結構 175
7.4 設備初始化 185
7.5 打開Binder設備文件 186
7.6 實現內存映射 188
7.6.1 分析流程 188
7.6.2 分析具體代碼 188
7.7 釋放物理頁面 193
7.8 處理內核緩沖區 193
7.8.1 分配內核緩沖區函數 193
7.8.2 添加到紅黑樹 195
7.8.3 釋放內核緩沖區 196
7.8.4 查詢內核緩沖區 198
7.9 Binder封裝庫 198
7.9.1 類BBinder 199
7.9.2 類BpRefBase 202
7.9.3 類IPCThreadState 203
第 8章 Logger日志驅動
8.1 Logger系統基礎 207
8.2 分析Logger驅動程序 207
8.2.1 分析文件logger.h 208
8.2.2 分析文件logger.c 209
8.3 日志庫liblog 223
8.4 分析日志寫入接口 227
8.4.1 分析C/C++層的寫入接口 228
8.4.2 分析Java層的寫入接口 229
第 9章 內存系統驅動
9.1 分析Android的進程通信機制 238
9.1.1 Android的進程間通信(IPC)機制Binder 238
9.1.2 Service Manager是Binder機制的上下文管理者 240
9.2 分析Ashmem驅動程序 241
9.2.1 基礎數據結構 241
9.2.2 初始化處理 242
9.2.3 打開匿名共享內存設備文件 244
9.2.4 內存映射 246
9.2.5 讀/寫操作 247
9.2.6 鎖定和解鎖 249
9.2.7 回收內存塊 254
9.3 分析C++訪問接口層 255
9.3.1 接口MemoryBase 255
9.3.2 接口MemoryBase 264
9.4 分析Java訪問接口層 267
第 10章 分析電源管理模塊
10.1 Android Power Management基礎 271
10.2 Framework層分析 272
10.2.1 文件PowerManager.java 272
10.2.2 文件PowerManagerService.java 273
10.3 JNI層分析 294
10.3.1 文件android_os_Power.cpp 294
10.3.2 文件power.c 295
10.4 Kernel(內核)層分析 296
10.4.1 文件power.c 296
10.4.2 文件earlysuspend.c 298
10.4.3 文件wakelock.c 299
10.4.4 文件resume.c 301
10.4.5 文件suspend.c 301
10.4.6 文件main.c 302
10.4.7 proc文件 303
10.5 wakelock和early_suspend 303
10.5.1 wake lock的原理 303
10.5.2 early_suspend的原理 304
10.5.3 Android休眠 305
10.5.4 Android喚醒 307
第 11章 分析低內存管理模塊
11.1 分析OOM機制 308
11.1.1 OOM機制基礎 308
11.1.2 分析OOM機制的具體實現 309
11.2 分析Low Memory Killer的原理和機制 315
11.3 分析Low Memory Killer驅動 316
11.3.1 Low Memory Killer驅動基礎 316
11.3.2 分析核心功能 317
11.3.3 設置用戶接口 320
第 12章 分析物理內存驅動
12.1 PMEM基礎 323
12.1.1 PMEM概述 323
12.1.2 Platform設備基礎 324
12.1.3 PMEM與Ashmem的區別 325
12.2 分析PMEM系統驅動程序 325
12.2.1 分析設備實現 325
12.2.2 分析驅動的具體實現 327
12.2.3 總結PMEM驅動的調用流程 350
12.3 分析用戶接口空間 350
12.3.1 釋放位圖內存 351
12.3.2 釋放位圖內存空間 351
12.3.3 獲取位圖占用內存 352
第 13章 分析Time Device驅動
13.1 分析Timed Output驅動程序 354
13.1.1 設備類 354
13.1.2 分析Timed Output驅動的具體實現 359
13.1.3 實現timed_output_dev設備的讀寫操作 361
13.2 分析Timed Gpio驅動程序 362
13.2.1 Timed Gpio驅動的基本原理 363
13.2.2 分析Timed Gpio驅動的實現文件 363
第 14章 分析調試機制驅動Ram Console
14.1 Ram Console基礎 368
14.2 分析Ram Console的具體實現 369
14.2.1 分析文件ram_console.h 369
14.2.2 分析文件ram_console.c 369
第 15章 分析時鐘系統驅動Alarm
15.1 Alarm系統基礎 379
15.1.1 Alarm層次結構介紹 379
15.1.2 需要移植的內容 381
15.2 分析RTC驅動程序 381
15.3 分析Alarm驅動程序 381
15.3.1 分析文件android_alarm.h 382
15.3.2 分析文件alarm.c 383
15.3.3 分析文件alarm-dev.c 394
15.4 分析JNI層 402
15.5 分析Java層 403
15.5.1 分析AlarmManagerService類 404
15.5.2 分析AlarmManager類 412
15.6 模擬器環境的具體實現 413
第 16章 分析USB Gadget驅動
16.1 分析Linux內核的USB驅動程序 415
16.1.1 USB設備基礎 415
16.1.2 分析USB 和sysfs的聯系 419
16.1.3 分析urb通信方式 422
16.1.4 分析USB驅動的例程 427
16.2 分析USB Gadget驅動 438
16.2.1 分析軟件結構 438
16.2.2 層次整合 447
16.2.3 USB設備枚舉 457
第3篇 設備驅動篇
第 17章 FrameBuffer顯示系統驅動
17.1 顯示系統介紹 473
17.2 分析內核層 474
17.2.1 分析接口文件fb.h 474
17.2.2 分析內核實現文件fbmem.c 477
17.3 分析硬件抽象層 499
17.3.1 分析頭文件 500
17.3.2 分析硬件幀緩沖區 501
17.3.3 實現緩沖區的分配 503
17.3.4 顯示緩沖映射 504
17.3.5 分析管理庫文件LayerBuffer.cpp 505
第 18章 輸入系統驅動應用
18.1 輸入系統介紹 507
18.1.1 Android輸入系統結構元素介紹 507
18.1.2 移植工作 509
18.2 分析Input(輸入)系統驅動 509
18.2.1 分析頭文件 510
18.2.2 分析核心文件input.c 513
18.2.3 分析event機制 527
18.3 分析硬件抽象層 530
18.3.1 分析文件KeycodeLabels.h 530
18.3.2 分析文件KeyCharacterMap.h 534
18.3.3 分析Kl格式文件 535
18.3.4 分析KCM格式文件 536
18.3.5 分析文件EventHub.cpp 536
第 19章 音頻系統驅動
19.1 音頻系統基礎 541
19.2 分析音頻系統的層次 542
19.2.1 層次說明 543
19.2.2 Media庫中的Audio框架 543
19.2.3 本地代碼 545
19.2.4 分析JNI代碼 548
19.2.5 Java層代碼簡介 549
19.3 移植Audio系統的工作 549
19.3.1 我們的工作 549
19.3.2 分析硬件抽象層 550
19.3.3 分析AudioFlinger中的Audio硬件抽象層的實現 551
19.3.4 真正實現Audio硬件抽象層 556
19.4 在MSM平臺實現Audio驅動系統 557
19.4.1 實現Audio驅動程序 557
19.4.2 實現硬件抽象層 558
第 20章 視頻輸出系統驅動
20.1 視頻輸出系統結構 562
20.2 需要移植的部分 564
20.3 分析硬件抽象層 564
20.3.1 Overlay系統硬件抽象層的接口 564
20.3.2 實現Overlay系統的硬件抽象層 566
20.3.3 實現接口 567
20.4 實現Overlay硬件抽象層 568
第 21章 振動器系統驅動
21.1 振動器系統結構 571
21.2 分析硬件抽象層 572
21.3 分析JNI層部分 574
21.4 分析Java層部分 575
21.5 實現移植工作 578
21.5.1 移植振動器驅動程序 578
21.5.2 實現硬件抽象層 579
21.6 在MSM平臺實現振動器驅動 580
第 22章 傳感器系統驅動
22.1 傳感器系統的結構 583
22.2 分析需要移植的內容 585
22.2.1 移植驅動程序 585
22.2.2 移植硬件抽象層 586
22.2.3 實現上層部分 587
22.3 在模擬器中實現傳感器驅動 591
第 23章 照相機系統
23.1 Camera系統的結構 596
23.2 分析需要移植的內容 598
23.3 移植和調試 599
23.3.1 V4L2驅動程序 599
23.3.2 硬件抽象層 605
23.4 實現Camera系統的硬件抽象層 609
23.4.1 Java程序部分 609
23.4.2 Camera的Java本地調用部分 610
23.4.3 Camera的本地庫libui.so 610
23.4.4 Camera服務libcameraservice.so 611
第 24章 Wi-Fi系統、藍牙系統和GPS系統
24.1 Wi-Fi系統 616
24.1.1 Wi-Fi系統的結構 616
24.1.2 分析需要移植的內容 618
24.1.3 分析本地實現 618
24.1.4 分析JNI層 621
24.1.5 分析Java FrameWork層 623
24.1.6 分析Setting中的Wi-Fi設置 624
24.2 藍牙系統 625
24.2.1 藍牙系統的結構 625
24.2.2 分析需要移植的內容 627
24.2.3 分析驅動程序 628
24.2.4 分析本地代碼 628
24.2.5 在MSM平臺實現藍牙驅動系統 630
24.3 定位系統 631
24.3.1 分析定位系統的結構 631
24.3.2 分析需要移植的內容 633
24.3.3 分析驅動程序 633
24.3.4 分析硬件抽象層 633
24.3.5 分析上層應用部分 635
序: