深入淺齣Android源代碼:基於Android 6.0和實際開發案例剖析

深入淺齣Android源代碼:基於Android 6.0和實際開發案例剖析 pdf epub mobi txt 電子書 下載 2025

何軍 著
圖書標籤:
  • Android
  • Android源代碼
  • Android 6
  • 0
  • 源碼分析
  • 深入淺齣
  • 技術
  • 開發
  • 移動開發
  • 操作係統
  • 書籍
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 電子工業齣版社
ISBN:9787121304873
版次:1
商品編碼:12066035
包裝:平裝
開本:16開
齣版時間:2017-04-01
用紙:膠版紙
頁數:544
字數:745000
正文語種:中文

具體描述

編輯推薦

適讀人群 :希望讀者通過本書,能對Android有個更全麵、更深入的理解。本書麵嚮的讀者主要是Framework框架工程師、係統開發工程師、應用開發工程師和ROM開發工程師。

基於Android源代碼和實際開發案例分析,讓讀者在學習過程中進一步吃透源代碼。

內容簡介

本書基於Android 6.0源代碼和實際案例,分析Android係統的框架原理和具體實現。由於Android框架裏模塊眾多,本書隻詳細分析瞭框架裏的一部分模塊,涉及這些模塊的原理、架構及代碼實現等各個細節,盡量做到讓讀者知其然,又知其所以然。在Android官方網站,Android分瞭4層,從高到低分彆是應用程序層、應用程序框架層、係統庫層和Linux內核層。本書主要涉及應用程序層、應用程序框架層和係統庫層。

作者簡介

何軍,2010年從事Android工作至今,從Android1.6到現在的Android7.0,熱愛Android、喜歡鑽研、樂於分享。多年的框架開發和應用開發經驗,應用商店有多個APP上綫作品。熱衷於Android源代碼的研究,對Android的架構設計和實現原理有深刻的認識和理解。目前就職於某一手機廠商,任職Android Framework框架工程師,負責Framework與APP開發和維護。

目錄

第一部分 Android基礎篇
第1章 Android簡介 2
1.1 Android簡介 2
1.2 閱讀Android源代碼 6
第2章 Android基礎類 10
2.1 Android基礎類簡介 10
2.2 Thread類原理 11
2.3 Mutex與Condition 20
2.3.1 Mutex(AutoMutex)分析 20
2.3.2 Condition代碼分析 24
2.4 Android係統智能指針 30
2.4.1 輕量級指針(lp) 30
2.4.2 強指針(sp) 32
第3章 Android上下文環境Context 37
3.1 Context簡介 37
3.2 Application運行上下文環境Context的創建過程 40
3.2.1 創建Application Context 41
3.2.2 獲得Application Context 47
3.3 Activity運行上下文環境Context的創建過程 48
3.4 Service運行上下文環境Context的創建過程 55
第4章 Android消息機製 59
4.1 Android消息機製原理 59
4.2 創建消息隊列和進入消息循環過程 61
4.3 消息的發送過程 70
4.4 消息的處理過程 75
第二部分 Android框架篇
第5章 Android Init進程 78
5.1 Android Init進程簡介 78
5.2 klog_init() 函數 83
5.3 process_kernel_cmdline() 函數 85
5.4 signal_handler_init() 函數 86
5.5 property_load_boot_defaults() 函數 89
5.6 屬性服務 90
5.6.1 屬性服務的初始化與啓動 90
5.6.2 屬性的設置 91
5.6.3 屬性值的獲取 95
5.7 解析init.rc配置文件和啓動service進程 96
5.7.1 init.rc文件基礎介紹 96
5.7.2 解析init.rc文件 100
5.7.3 啓動service進程 104
第6章 開機動畫bootanimation 108
6.1 開機動畫bootanimation原理 108
6.2 開機動畫bootanimation的顯示過程 111
6.3 開機動畫bootanimation的退齣過程 127
第7章 Zygote進程 135
7.1 Zygote進程基礎介紹 135
7.2 Zygote進程的啓動 139
7.2.1 調用startVM() 函數啓動虛擬機 143
7.2.2 調用startReg() 函數注冊JNI方法 143
7.2.3 調用ZygoteInit類的main() 方法 145
7.3 啓動system_server進程 150
7.4 啓動APP應用程序進程 155
第8章 SystemServer進程 161
8.1 SystemServer係統服務 161
8.2 SystemServer創建框架核心服務 165
第9章 Android係統的開機與關機 175
9.1 Android係統的開機 175
9.2 Android係統的關機 185
9.3 案例分析 197
9.3.1 Android係統開機時間標誌 197
9.3.2 Android係統關機時間標誌 198
第10章 Android係統異常問題 199
10.1 addr2line工具 199
10.2 Android Watchdog 207
10.3 Android係統異常問題 217
10.3.1 Android死機 218
10.3.2 Android係統重啓 220
10.3.3 Android係統啓動異常 233
第11章 ActivityManagerService 236
11.1 ActivityManagerService簡介 236
11.2 Activity的啓動過程 240
11.2.1 Launcher Activity的onPause() 過程 241
11.2.2 Launcher Activity的onStop() 過程 261
11.2.3 新Activity的onCreate()、onStart()和onResume() 過程 264
11.3 Service的啓動過程 273
11.4 Broadcast 280
11.4.1 廣播的注冊過程 282
11.4.2 廣播的發送過程 290
11.4.3 廣播的處理過程 295
11.5 進程內存管理 303
11.6 案例分析 320
11.6.1 與Activity有關的例子 320
11.6.2 與BroadCast有關的例子 323
11.6.3 與進程內存有關的例子 329
第12章 Android國際化 331
12.1 CTS與GTS 331
12.2 全球緊急電話策略 337
12.3 Android多語言 345
第三部分 Android ROM UI篇
第13章 Android資源管理係統 354
13.1 資源管理簡介 354
13.2 資源初始化過程 361
13.2.1 AssetManager的構造方法 369
13.2.2 AssetManager.java的addAssetPath() 方法 374
13.2.3 Resources的構造方法 375
13.3 資源查找、解析、創建View過程 378
13.3.1 查找資源ID對應的不是文件的過程 380
13.3.2 查找資源ID對應的是文件的過程 382
13.4 主題換膚實現 396
第14章 Android View係統 411
14.1 View係統簡介 411
14.2 應用程序Activity的創建 412
14.3 Activity窗口對象PhoneWindow的創建 424
14.4 Activity根視圖對象DecorView的創建 432
14.5 ViewRootImpl的創建和添加DecorView對象 440
14.6 View的measure、layout和draw過程 453
14.6.1 View的measure過程 462
14.6.2 View的layout過程 473
14.6.3 View的draw過程 478
14.7 View事件分發 493
14.8 案例分析 503
第15章 Android控件 512
15.1 Android係統控件分析 512
15.1.1 係統控件簡介 512
15.1.2 係統控件TextView的屬性 514
15.1.3 係統控件TextView的onMeasure() 517
15.1.4 係統控件TextView的onLayout() 523
15.1.5 係統控件TextView的onDraw() 523
15.2 自定義控件 524
15.2.1 定義自定義控件屬性 525
15.2.2 實現自定義控件 525
15.2.3 使用自定義控件 527
15.3 Android控件案例分析 527

前言/序言

  說 明
  1.本書涉及C、C++和Java語言,閱讀本書最好會這三種編程語言,同時本書還會涉及少量Linux,如果懂Linux更佳。
  2.本書使用兩種格式來對代碼進行解釋。
  第一種,舉例如下。
  class Condition {
  public:
  enum {
  PRIVATE = 0,
  SHARED = 1
  };
  //定義兩種枚舉類型:PRIVATE錶示本進程內部使用,SHARED錶示用於跨進程共
  //享,如果使用Condition時沒有指定具體類型,則默認是PRIVATE類型。
  ……
  }
  這種方式是在代碼段內部解釋代碼,原因是有些類和方法比較復雜,代碼非常長,貼完代碼之後,可能已經幾頁紙瞭,如果這時候在代碼段的最後麵去解釋代碼,讀者還需要往前翻看需要解釋的代碼,十分不便。
  第二種,舉例如下。
  public final boolean sendMessage(Message msg)
  {
  return sendMessageDelayed(msg, 0);
  }
  代碼解釋:這裏的sendMessage() 方法會調用sendMessageDelayed() 方法,參數msg是具體的Message,而參數0錶示這個消息不要延時處理。
  由於這種方式的代碼量比較少,可以邊看代碼邊看解釋,不用翻頁,所以采用這種方式比較方便。
  3.本書是基於Android源代碼和實際開發案例分析的,所以閱讀本書一定要結閤源代碼。
  4.大傢都知道代碼塊在Java裏叫方法,在C裏叫函數,筆者盡量在C、C++中使用“函數”這個叫法,在Java中使用“方法”這個叫法,但也有可能齣現混淆。
  5.本書使用瞭Visio、Edraw和StarUML這3個工具來畫圖,由於排版的問題,圖也許會有不清楚的地方,如果發現這類問題,請發郵件至813126419@qq.com,我會盡快迴復。
  6.本書是我個人對Android的理解,難免會有錯誤,懇請大傢指正。



Android 深度探索:從源碼解析到實戰應用 在移動互聯網浪潮席捲全球的今天,Android 操作係統憑藉其開放性、靈活性以及龐大的生態係統,已然成為智能設備領域無可爭議的霸主。對於每一位渴望深入理解 Android 核心機製,掌握其精髓的開發者而言,閱讀源碼是必由之路。本書正是應運而生,旨在為讀者提供一條清晰、透徹的 Android 源碼探索之旅。我們不局限於某一特定版本,而是著眼於 Android 核心架構的演進與不變,結閤當下廣泛應用的開發模式,通過深入淺齣的方式,揭示 Android 的內在運作邏輯。 核心理念:理解而非記憶 我們深知,死記硬背 API 終究難以觸及 Android 的本質。因此,本書的核心理念在於“理解”。我們將帶領讀者循序漸進地剖析 Android 的關鍵模塊,從係統框架、核心服務到關鍵組件,力求讓讀者不僅瞭解“是什麼”,更明白“為什麼”以及“如何做到”。通過源碼級彆的分析,我們能看到那些隱藏在 API 背後的設計思想,理解各種決策的權衡,從而培養齣真正具備解決復雜問題能力的開發者。 技術深度:源碼的溫度,原理的光輝 本書將以 Android 開放源代碼項目(AOSP)為基礎,帶領讀者深入到 C/C++ 和 Java/Kotlin 的代碼海洋中。我們不會羅列冗長的代碼片段,而是精選那些最能代錶核心機製、最富於啓發性的代碼段落,進行詳細的解讀。 係統啓動流程: 從 Power On 到第一個 App 啓動,整個過程充滿瞭玄機。我們將詳細解析 Bootloader、Kernel、Init 進程、Zygote 進程等關鍵環節,理解它們在係統初始化中的角色和協同工作方式。 Binder 跨進程通信: Android 係統中,進程間的通信至關重要。Binder 作為 Android 最核心的 IPC 機製,其高效、低延遲的特性是無數係統服務的基石。我們將從 Binder Driver、Binder Kernel Driver、Binder IPC 框架以及客戶端/服務端的代理類等多個維度,深入理解 Binder 的工作原理,包括服務注冊、代理對象的生成、方法調用以及結果迴傳的全過程。 Activity 和 Fragment 生命周期: 這是 Android 應用開發的基礎,但其背後卻隱藏著復雜的係統調用和狀態管理。我們將結閤源碼,理解 ActivityManagerService (AMS)、WindowManagerService (WMS) 等係統服務的協同,以及 Activity/Fragment 狀態的保存與恢復機製。 View 繪製與事件分發: 每一個像素的呈現,每一次觸摸的響應,都離不開 View 係統的精妙設計。我們將深入 View 的 measure、layout、draw 流程,理解 ViewRootImpl、DecorView、ViewGroup、View 等組件的職責,以及事件分發的層層傳遞與處理機製。 內存管理與垃圾迴收: Android 設備的資源有限,高效的內存管理是保證應用流暢運行的關鍵。我們將探討 Dalvik/ART 虛擬機中的內存布局、對象分配,以及垃圾迴收(GC)算法的原理與優化,幫助讀者寫齣更節省內存的代碼。 四大組件深度解析: Activity、Service、BroadcastReceiver、ContentProvider 是 Android 應用的四大基石。我們將逐一深入它們的實現原理,理解它們與係統服務之間的交互,以及它們在組件化開發中的作用。 係統服務剖析: Android 係統由一係列強大的服務構成,如 LocationManagerService, NotificationManagerService, PackageManagerService 等。我們將精選部分關鍵係統服務,剖析其對外暴露的 API 如何與底層 C/C++ 實現相結閤,以及它們如何為上層應用提供服務。 技術廣度:連接理論與實踐的橋梁 源碼解析固然重要,但脫離實際開發場景的源碼理解,終究是空中樓閣。本書同樣注重將源碼的深度與實際開發中的常見問題、最佳實踐相結閤。 性能優化: 理解源碼能夠讓我們更精準地定位性能瓶頸。我們將結閤源碼分析,講解如何通過優化 UI 繪製、減少內存占用、閤理使用綫程池、避免不必要的 Binder 調用等方式,顯著提升應用性能。 內存泄漏排查: 內存泄漏是 Android 開發中的“頑疾”。通過對內存分配、對象生命周期以及 GC 機製的深入理解,本書將指導讀者如何利用各種工具(如 LeakCanary, Android Studio Profiler)結閤源碼原理,有效地發現和解決內存泄漏問題。 多綫程與並發: Android 應用的響應式設計離不開多綫程。我們將深入 Android 的綫程模型,講解 Thread, Handler, Looper, MessageQueue 的協同工作原理,以及 AsyncTask、ThreadPoolExecutor 等並發工具的使用,確保讀者能編寫齣安全、高效的多綫程代碼。 異步處理與迴調機製: 在網絡請求、文件 I/O 等耗時操作中,異步處理是必不可少的。我們將深入理解 RxJava/RxAndroid、Kotlin Coroutines 等現代異步編程模型,並將其與 Android 底層異步機製聯係起來,幫助讀者構建更加優雅和可維護的異步代碼。 組件化與模塊化: 隨著項目規模的增大,組件化和模塊化開發成為主流。本書將結閤源碼中的 Binder、ContentProvider 等機製,講解如何設計和實現可復用、高內聚的組件,以及如何有效地管理組件間的依賴。 自定義 View 的藝術: 掌握瞭 View 的繪製與事件分發機製,就如同掌握瞭繪製 UI 的魔法。我們將從簡單的自定義 View 開始,逐步引導讀者實現復雜、炫酷的自定義控件,並深入講解其背後的事件處理邏輯。 理解 Android SDK 的設計哲學: 通過閱讀源碼,我們不僅能瞭解 API 的實現,更能體會到 Google 設計者們在 API 設計、抽象層次、接口規範等方麵的深思熟慮。這種理解,將有助於我們寫齣更符閤 Android 規範、更易於維護的代碼。 學習路徑:循序漸進,步步為營 本書的學習路徑經過精心設計,力求讓不同基礎的讀者都能從中受益。 1. 基礎入門: 從 Android 的整體架構、開發環境搭建開始,為讀者打下堅實的理論基礎。 2. 核心框架: 逐步深入 Binder、Activity/Fragment 生命周期、View 係統等 Android 最核心的模塊,建立起對係統運作方式的宏觀認識。 3. 組件與服務: 詳細剖析四大組件的原理,並進一步探索常用的係統服務,理解它們在實際應用中的調用方式。 4. 高級主題與實戰: 結閤性能優化、內存管理、異步處理、組件化等實際開發中的挑戰,將源碼知識轉化為解決實際問題的能力。 5. 深入研究: 為有誌於更深層次探索的讀者,提供進一步研究的方嚮和思路。 目標讀者: 希望深入理解 Android 係統底層機製的開發者。 遇到性能瓶頸或內存泄漏等疑難雜癥,尋求根本解決方案的開發者。 有誌於從事 Android Framework 層開發或底層優化的工程師。 希望構建更健壯、可維護、高性能 Android 應用的團隊。 對 Android 操作係統原理充滿好奇心的技術愛好者。 結語: Android 的世界廣闊而深邃,源碼正是打開這扇大門的最直接鑰匙。本書不僅僅是一本技術書籍,更是一次與 Android 靈魂對話的旅程。我們相信,通過跟隨本書的引導,您將不僅僅是掌握瞭 Android 的技術,更能領悟到其背後精妙的設計思想,從而蛻變為一名更優秀的 Android 工程師。讓我們一起,在代碼的海洋中,點亮原理之光,鑄就卓越應用!

用戶評價

評分

這本書的封麵設計就足夠吸引我瞭,那種簡潔而又富有深度的視覺風格,讓人一眼就能感受到作者在內容上的用心。我翻閱瞭一下目錄,感覺作者對Android的理解非常透徹,從基礎的架構到核心的組件,再到具體的應用場景,幾乎涵蓋瞭Android開發的全貌。特彆是看到“基於Android 6.0”這個字樣,我的興趣更是被提瞭起來。Android 6.0(Marshmallow)是一個非常重要的裏程碑版本,它引入瞭許多影響深遠的新特性,比如運行時權限、Doze模式、Now on Tap等等。很多市麵上同類書籍可能隻停留在更早的版本,或者隻是淺嘗輒止地介紹新特性,而這本書承諾要“深入淺齣”,這讓我對它能夠對6.0版本進行係統性的、深入的剖析充滿瞭期待。而且,它還強調“實際開發案例剖析”,這對於像我這樣希望將理論知識轉化為實踐技能的讀者來說,是至關重要的。理論學習固然重要,但沒有實際案例的支撐,很容易流於空談。我非常期待書中能提供一些貼閤實際開發中會遇到的問題,並且能夠通過剖析源碼來講解如何解決這些問題,而不是簡單地給齣API的使用方法。如果這本書真的能做到這一點,那麼它將是我Android開發道路上的一位得力助手。

評分

我對Android係統的設計理念和演進曆程一直很感興趣。每次更新Android版本,總會引入一些新的架構調整或者核心組件的改進。這本書提到“基於Android 6.0”,讓我對它如何剖析6.0這個版本的獨特之處充滿好奇。6.0版本在許多方麵都進行瞭重大的更新,比如它對應用的權限管理方式進行瞭顛覆性的改變,不再是安裝時一次性授予,而是運行時按需申請。這種改變背後必然涉及大量係統層麵的源碼調整。我希望這本書能夠深入分析這些源碼,讓我理解權限管理背後的邏輯,以及開發者應該如何正確地適配這種新的權限模型。此外,6.0的Doze模式和App Standby也對應用的後颱行為産生瞭深遠影響,如果書中能夠詳細剖析這些特性的源碼實現,揭示它們是如何工作的,以及開發者如何與之協同,那將是非常寶貴的知識。我不僅僅是想知道API怎麼用,更想知道API背後是怎麼實現的,為什麼會這樣設計。這本書如果能做到這一點,那它在我心中的價值將遠超一般的技術書籍。

評分

最近我在嘗試開發一些比較復雜的Android應用,在遇到一些性能瓶頸或者內存泄漏的問題時,總是感覺力不從心。雖然我可以通過搜索引擎找到一些解決問題的零散方法,但總覺得治標不治本,缺乏對問題根源的深刻理解。這本書的名字,《深入淺齣Android源代碼:基於Android 6.0和實際開發案例剖析》,聽起來就非常契閤我的需求。我尤其看重“實際開發案例剖析”這個部分,因為這直接關係到我能否將學到的知識應用到實際工作中。我希望書中能夠提供一些典型場景下的開發案例,比如如何優化啓動速度、如何處理圖片加載、如何進行網絡請求的性能優化等等,並且詳細地講解在這些案例中,Android係統內部是如何運作的,哪些源碼是值得我們關注的,以及我們可以在哪些地方進行乾預來提升應用性能。如果作者能夠結閤Android 6.0的一些新特性,來講解這些優化技巧,那效果會更好。比如,Android 6.0的Doze模式對應用耗電有很大影響,如果書中能分析Doze模式的源碼,並給齣相應的適配建議,那將非常有價值。我非常期待這本書能夠成為我解決實際開發難題的“秘籍”。

評分

我是一位對Android底層技術一直充滿好奇的開發者,平時在工作中也經常會遇到一些難以解釋的現象,比如某個係統服務為什麼會這樣工作,或者某個UI繪製的流程到底是如何實現的。市麵上有很多Android開發的書籍,但很多都側重於應用層的API講解,對於源碼的剖析相對較少,或者即使有,也往往停留在比較錶麵的層次。而這本書的標題——“深入淺齣Android源代碼”,恰恰觸碰到瞭我的痛點。我特彆希望它能夠帶領我一步步地揭開Android係統的神秘麵紗,理解其核心組件的運作機製,比如ActivityManagerService、WindowManagerService、PackageManagerService等等。如果書中能夠像剝洋蔥一樣,一層層地深入分析這些服務的源碼,並且用清晰易懂的語言來解釋復雜的邏輯,那簡直就是我夢寐以求的學習材料。而且,我注意到它還提到瞭“基於Android 6.0”,這讓我很興奮,因為6.0引入瞭許多新的係統級特性,如果這本書能深入剖析這些新特性背後的源碼實現,比如運行時權限的分配機製、Doze模式的節能原理等,那將是極具價值的學習內容。我希望這本書能夠讓我從“知其然”到“知其所以然”,真正理解Android的“內功心法”。

評分

我一直在尋找一本能夠真正幫助我理解Android係統“骨架”的書籍,而不是僅僅停留在API的錶麵。市麵上很多Android開發書籍,要麼過於淺顯,要麼過於晦澀。這本書的標題,《深入淺齣Android源代碼:基於Android 6.0和實際開發案例剖析》,聽起來找到瞭一個很好的平衡點。“深入淺齣”是關鍵,我希望它能夠將復雜的源碼內容用清晰易懂的方式講解齣來,就像一個經驗豐富的導師,能夠循循善誘地引導讀者理解Android的精髓。同時,“基於Android 6.0”這個定位也非常有吸引力,因為6.0是一個承前啓後的重要版本,理解它的源碼有助於我更好地理解後續版本的變化。更重要的是,“實際開發案例剖析”這一點,我非常看重。我希望它能提供一些真實項目開發中會遇到的問題,並且通過剖析相關的Android源代碼來給齣解決方案,而不是簡單地羅列一些技巧。例如,如何通過源碼理解View的繪製流程,如何分析Activity的生命周期,或者如何追蹤一個Intent的傳遞過程等等,這些都是我非常想深入瞭解的。這本書如果能在這方麵做得齣色,那它將是我Android學習旅程中不可或缺的夥伴。

評分

商品不錯,送貨速度快,質量也挺好的。

評分

一直想買。。。

評分

這本書可以的,適閤入門,當然,可能我有點基礎瞭

評分

引發也那樣玩咯公公YY坡頭復習咯我嗖嗖嗖婆媳我去

評分

一般,講得比較基礎,適閤入門學習

評分

還沒來得及細看,應該不錯~

評分

活動買的,價錢便宜送貨快!!不錯,點個贊!!!

評分

活動買的,價錢便宜送貨快!!不錯,點個贊!!!

評分

非常不錯,介紹很多工作中經常需要的知識點!

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有