商品簡介
《深入剖析Android系統》以AndroidJellyBean(4.1)的代碼為藍本,對Android的部分關鍵代碼進行了注釋分析,並輔以大量插圖,講述了Android大部分子系統中的模塊和類的靜態結構,讓讀者對Android系統的內部靜態結構有著“類”粒度這一層級上的認識和瞭解。同時,也對關鍵類和函數的代碼調用流程、運行時刻所位於的進程和線程上下文等動態運行場景進行了分析講述,讓讀者深刻理解Android系統內部是如何運行的。本書直接對SourceInsight進行截圖,保留了代碼的原始行號、英文注釋等信息並進行了高亮顯示,方便讀者閱讀;代碼中同時添加了作者所做的中文注釋說明。
作者簡介
楊長剛,2005年春畢業于西南交通大學計算機應用技術專業,獲碩士學位;後進入手機行業從事Linux手機軟件開發工作。目前在一家歐美企業從事Android方面的技術工作。作者官方博客:http://www.redwolf-blog.com/
名人推薦
《深入剖析Android系統》基于Google發布的Jelly Bean原始代碼,講述Android系統的內部靜態結構關系和內部運行機制,為你呈現原汁原味的Android代碼分析大餐!
目次
第1章智能指針1.1智能指針概述1.2引用計數基類RefBase1.3輕量級引用計數LightRefBase1.4強指針1.4.1強指針變量的初始化與生命週期1.4.2賦值操作與引用計數變化1.5弱指針第2章消息隊列與線程處理2.1消息隊列處理模型的設計2.2消息隊列與線程處理的Java實現2.2.1Thread\/Runnable2.2.2Message2.2.3MessageQueue概述2.2.4Handler2.2.5Looper2.2.6再論Handler2.2.7對同步消息的支持2.3native層的Looper與消息隊列處理2.3.1Looper中的睡眠等待與喚醒機制2.3.2Looper對文件描述符的監控與處理2.3.3Looper中的消息隊列處理機制2.3.4Looper與線程執行上下文第3章BinderIPC及其應用3.1BinderIPC3.1.1BinderIPC與系統服務3.1.2Binder類結構與調用關係3.1.3模板函數interface_cast的背後3.1.4例子AudioPolicyService3.2Java層對Binder的封裝3.2.1例子IMediaPlaybackService3.2.2例子PhoneStateListener3.3大內存塊的跨進程共享3.3.1概述3.3.2調用接口3.3.3設備空間的映射3.3.4Server側的處理第4章HAL硬件抽象層4.1HAL概述4.2硬件模塊庫的通用寫法4.3硬件模塊庫的裝載與解析4.4例子Lights4.5例子Camera4.6例子Power和Vibrator第5章Android的啟動過程5.1Android初始化語言及解析5.1.1Action5.1.2觸發器trigger5.1.3命令Command5.1.4服務Service5.1.5.rc文件的解析5.2BootChart5.3ueventd守護進程5.4init進程的啟動過程5.5init.rc文件中的服務進程5.6system_server進程5.6.1app_process程序5.6.2system_server進程第6章輸入系統6.1輸入系統概述6.2讀線程6.2.1EventHub6.2.2InputReader6.2.3InputDevice6.2.4InputMapper6.2.5QueuedInputListener6.3分發線程6.3.1InputDispatcher6.3.2InputChannel6.4輸入系統的開啟第7章MassStorage7.1MassStorage概述7.2MountService7.3庫libsysutils.so7.3.1SocketListener7.3.2FrameworkListener7.3.3NetlinkListener7.4守護進程vold7.4.1NetlinkManager7.4.2CommandListener7.4.3vold的main函數第8章Sensor8.1Sensor概述8.2SDKAPI概述8.3Sensor管理器8.3.1Sensor採樣數據的獲取與處理8.3.2SensorEventQueue8.4SensorService8.4.1邏輯傳感器8.4.2物理傳感器8.4.3SensorHAL第9章RIL9.1RIL概述9.2rild守護進程9.3事件處理與分發線程9.3.1分發線程中的事件處理9.3.2RIL請求的接收與處理9.3.3RIL響應的回送9.4radiooptions工具程序9.5RILJ9.5.1RILJ概述9.5.2RILRequest的發送過程9.5.3Response的處理過程第10章com.android.phone進程10.1層次狀態機StateMachine10.2GSMPhone10.3GsmCallTracker10.3.1GsmDataConnectionTracker10.3.2GsmServiceStateTracker10.3.3DefaultPhoneNotifier10.3.4其他10.4進程com.android.phone第11章Graphic11.1Graphic概述11.2Java層簡介11.2.1SurfaceSession11.2.2Surface11.2.3SurfaceView11.2.4TextureView11.3JNI層簡介11.4SKIA庫簡介11.5庫libgui.so11.5.1概述11.5.2ComposerService11.5.3共享控制塊surface_flinger_cblk_t11.5.4ISurfaceComposer11.5.5ScreenshotClient11.5.6SurfaceComposerClient11.5.7Surface11.5.8SurfaceControl11.5.9繪圖操作的前後過程11.5.10SurfaceTextureClient11.6SurfaceFlinger進程11.6.1圖層11.6.2DisplayHardware簡介11.6.3HWComposer簡介11.6.4VSync11.7庫libui.so簡介11.7.1GraphicBuffer11.7.2FramebufferNativeWindow11.8RenderScript簡介第12章OpenGLES軟件層次棧12.1Android中的OpenGLES簡介12.2Android中OpenGL軟件層次棧12.3包裹庫與hook鉤子12.3.1libGLESv1_CM.so包裹庫12.3.2libGLESv2包裹庫12.3.3libEGL包裹庫12.3.4結構體egl_t和gl_hooks_t鉤子12.4OpenGL實現庫的加載和解析12.4.1加載和解析的發起12.4.2庫裝載器Loader12.5libGLES_android庫和ETC1簡介第13章Multimedia13.1Multimedia概述13.2API類簡述13.3多媒體播放(playback)13.3.1播放流程13.3.2來自server側的消息事件通知13.4多媒體錄製(Recording)13.5元數據(MetaData)獲取13.6Camera13.6.1Camera概述13.6.2CameraHardwareInterface與HAL層13.7Camera事件通知機制第14章Audio14.1Audio概述14.2Audio播放AudioTrack14.2.1共享控制塊audio_track_cblk_t14.2.2數據的寫入14.2.3事件的回送及處理14.3Auido錄音Recording14.3.1錄音的開始過程14.3.2錄音的停止過程14.4AudioFlinger14.4.1AudioFlinger概述14.4.2Track相關類概述14.4.3AudioFlinger中的線程14.5音效Audio