<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 101,  comments - 29,  trackbacks - 0

            閉關了四個多月,整理了博客上所有的Android文章,一共劃分為三大篇,十六個章節,820頁,系統地分析了Android系統的源代碼,從Linux內核層、HAL層、運行時庫層到應用程序框架層。整理期間困難重重,多次想要放棄,但是看到在四個多月不更新文章的情況下,博客訪問量仍節節攀升,從評論中感受到了網友們的熱情支持,受到了極大的鼓舞,最終堅持了下來。現在將整理的內容提綱發表出來,歡迎大家提供建議。

            整理的內容并不是簡單地復制了博客上的文章。博客文章由于發表得比較匆忙,不到六個月的時間,一共發表了50篇原創文章,平均每周發表兩篇,而且都是利用工作之余時間來發表,因此,很多內容都不夠全面、深入和細致。例如,在分析Binder進程間通信機制的一系列博客文章中,并沒有提及到Binder對象的引用計數技術、死亡通知機制等重要內容,對Binder驅動中的內存管理也分析得不夠系統;又如,在分析Android應用程序的安裝過程時,沒有提及到系統是如何為應用程序分配Linux用戶ID以及Linux用戶組ID。整理的內容對博客文章中不夠全面、學入和細致的地方進行了相應的補充。此外,博客文章也會出現一些錯誤。例如,在《Android應用程序鍵盤(Keyboard)消息處理機制分析》這篇博客文章中,網友@foresee321指出了注冊系統當前激活窗口的過程有誤。整理的內容也對這些錯誤作出了修正。博客文章不夠全面、深入、細致以及有誤的地方不能一一而足,不過它們在重新整理的內容中都得到了解決。

    整理的內容從初學者的角度來組織,由淺入深、自下而上地對Android系統的源代碼進行了分析,目錄結構如下所示:

    第一篇  初識Android系統...........................................6
        第一章  準備知識..............................................7
            1.1  準備Linux內核基礎知識................................7
            1.2  準備Android應用程序基礎知識..........................8
            1.3  下載、編譯和運行Android源代碼........................8
                1.3.1  安裝Git工具....................................9
                1.3.2  安裝Java SDK...................................9
                1.3.3  安裝其它工具包.................................9
                1.3.4  安裝repo工具...................................9
                1.3.5  下載Android源代碼..............................9
                1.3.6  編譯Android源代碼..............................10
                1.3.7  運行Android模擬器..............................11
            1.4  下載、編譯和運行Android內核源代碼....................12
                1.4.1  下載Android內核源代碼..........................12
                1.4.2  修改Makefile文件...............................13
                1.4.3  編譯Android內核源代碼..........................13
                1.4.4  運行Android模擬器..............................14
            1.5  開發第一個Android應用程序............................14
            1.6  編譯和打包單個Android應用程序模塊....................17
                1.6.1  導入編譯單個模塊的mmm命令......................17
                1.6.2  編譯單個Android應用程序模塊....................18
                1.6.3  重新打包Android系統鏡像文件....................18
        第二章  硬件抽象層............................................19
            2.1  開發Android硬件驅動程序..............................20
                2.1.1  實現內核驅動程序模塊...........................21
                2.1.2  修改內核Kconfig文件............................27
                2.1.3  修改內核Makefile文件...........................28
                2.1.4  編譯內核驅動程序模塊...........................28
                2.1.5  驗證內核驅動程序模塊...........................29
            2.2  開發C可執行程序驗證Android硬件驅動程序...............30
            2.3  開發Android硬件抽象層模塊............................32
                2.3.1  硬件抽象層編寫規范.............................32
                    2.3.1.1  模塊文件的命令規范.......................32
                    2.3.1.2  結構體定義規范...........................33
                2.3.2  實現硬件抽象層訪問接口.........................35
                2.3.3  硬件抽象層模塊加載過程分析.....................39
                2.3.4  處理硬件設備訪問權限問題.......................42
            2.4  開發Android硬件訪問服務..............................44
                2.4.1  定義硬件訪問服務接口...........................44
                2.4.2  實現硬件訪問服務...............................45
                2.4.3  實現硬件訪問服務的Java 本地接口方法............46
                2.4.4  啟動硬件訪問服務...............................49
            2.5  開發Android應用程序來調用硬件訪問服務................50
        第三章  智能指針..............................................55
            3.1  輕量級指針...........................................57
                3.1.1  實現原理分析...................................57
                3.1.2  使用實例分析...................................59
            3.2  強指針和弱指針.......................................61
                3.2.1  強指針的實現原理分析...........................61
                3.2.2  弱指針的實現原理分析...........................68
                3.2.3  強指針和弱指針的使用實例分析...................74
    第二篇  Android專用驅動系統.......................................79
        第四章  Logger日志系統........................................80
            4.1  Logger驅動程序.......................................83
                4.1.1  相關數據結構...................................83
                4.1.2  設備初始化過程.................................85
                4.1.3  設備文件打開過程...............................90
                4.1.4  日志讀取過程...................................91
                4.1.5  日志寫入過程...................................95
            4.2  運行時日志庫寫入接口.................................100
            4.3  C/C++日志寫入接口....................................106
            4.4  Java日志寫入接口.....................................110
            4.5  Logcat工具分析.......................................116
                4.5.1  相關數據結構...................................117
                4.5.2  初始化過程.....................................121
                4.5.3  日志讀取過程...................................133
                4.5.4  日志輸出過程...................................137
        第五章  Binder進程間通信系統..................................149
            5.1  Binder驅動程序.......................................151
                5.1.1  相關數據結構...................................152
                5.1.2  設備初始化過程.................................172
                5.1.3  設備文件打開過程...............................173
                5.1.4  設備文件內存映射過程...........................174
                5.1.5  內核緩沖區管理.................................181
                    5.1.5.1  分配內核緩沖區...........................181
                    5.1.5.2  釋放內核緩沖區...........................187
                    5.1.5.3  查詢內核緩沖區...........................192
            5.2  Binder進程間通信庫...................................193
            5.3  Binder進程間通信應用實例.............................197
            5.4  Binder對象引用計數技術...............................205
                5.4.1  Binder本地對象的生命周期.......................206
                5.4.2  Binder實體對象的生命周期.......................210
                5.4.3  Binder引用對象的生命周期.......................213
                5.4.4  Binder代理對象的生命周期.......................218
            5.5  Binder對象死亡通知機制...............................221
                5.5.1  注冊死亡接收通知...............................221
                5.5.2  發送死亡接收通知...............................225
                5.5.3  注銷死亡接收通知...............................229
            5.6  Service Manager的啟動過程............................232
                5.6.1  打開和映射Binder設備文件.......................234
                5.6.2  注冊成為Binder上下文管理者.....................235
                5.6.3  循環等待Client進程請求.........................239
            5.7  Service Manager代理對象接口的獲取過程................245
            5.8  Service的啟動過程....................................252
                5.8.1  注冊Service組件................................253
                    5.8.1.1  封裝通信數據為Parcel對象.................254
                    5.8.1.2  發送和處理BC_TRANSACTION命令協議.........257
                    5.8.1.3  發送和處理BR_TRANSACTION返回協議.........270
                    5.8.1.4  發送和處理BC_REPLY命令協議...............282
                    5.8.1.5  發送和處理BR_REPLY返回協議...............288
                5.8.2  循環等待Client進程請求.........................291
            5.9  Service代理對象接口的獲取過程........................294
            5.10  Binder進程間通信機制的Java實現接口..................302
                5.10.1  獲取Service Manager的Java代理對象接口.........303
                5.10.2  AIDL服務接口解析..............................312
                5.10.3  Java服務的啟動過程............................315
                5.10.4  獲取Java服務的代理對象接口....................321
                5.10.5  Java服務的調用過程............................324
        第六章  Ashmem匿名共享內存系統................................329
            6.1  Ashmem驅動程序.......................................330
                6.1.1  相關數據結構...................................330
                6.1.2  設備初始化過程.................................332
                6.1.3  設備文件打開過程...............................334
                6.1.4  設備文件內存映射過程...........................336
                6.1.5  內存塊的鎖定和解鎖過程.........................338
                6.1.6  解鎖狀態內存塊的回收過程.......................345
            6.2  運行時庫cutils的匿名共享內存接口.....................346
            6.3  匿名共享內存的C++訪問接口............................349
                6.3.1  MemoryHeapBase.................................349
                    6.3.1.1  Server端的實現...........................349
                    6.3.1.2  Client端的實現...........................353
                6.3.2  MemoryBase.....................................359
                    6.3.2.1  Server端的實現...........................360
                    6.3.2.2  Client端的實現...........................362
                6.3.3  應用實例.......................................364
            6.4  匿名共享內存的Java訪問接口...........................370
                6.4.1  MemoryFile.....................................370
                6.4.2  應用實例.......................................375
            6.5  匿名共享內存的共享原理分析...........................386
    第三篇  Android應用程序框架篇.....................................390
        第七章  Activity組件的啟動過程................................391
            7.1  Activity組件應用實例.................................391
            7.2  根Activity的啟動過程.................................397
            7.3  Activity在進程內的啟動過程...........................429
            7.4  Activity在新進程中的啟動過程.........................438
        第八章  Service組件的啟動過程.................................441
            8.1  Service組件應用實例..................................441
            8.2  Service在新進程中的啟動過程..........................448
            8.3  Service在進程內的綁定過程............................460
        第九章  Android系統廣播機制...................................483
            9.1  廣播應用實例.........................................484
            9.2  廣播接收者的注冊過程.................................491
            9.3  廣播的發送過程.......................................499
        第十章  Content Provider組件的實現原理........................521
            10.1  Content Provider組件應用實例........................522
                10.1.1  ArticlesProvider..............................523
                10.1.2  Article.......................................533
            10.2  Content Provider組件的啟動過程......................548
            10.3  Content Provider組件的數據共享原理..................570
            10.4  Content Provider組件的數據更新通知機制..............593
                10.4.1  內容觀察者的注冊過程..........................594
                10.4.2  數據更新的通知過程............................601
        第十一章  Zygote和System進程的啟動過程........................609
            11.1  Zygote進程的啟動腳本................................609
            11.2  Zygote進程的啟動過程................................612
            11.3  System進程的啟動過程................................619
        第十二章  Android應用程序進程的啟動過程.......................628
            12.1  應用程序進程的創建過程..............................628
            12.2  Binder線程池的啟動過程..............................637
            12.3  消息循環的創建過程..................................640
        第十三章  Android應用程序的消息處理機制.......................644
            13.1  創建線程消息隊列....................................644
            13.2  線程消息循環過程....................................649
            13.3  線程消息發送過程....................................654
            13.4  線程消息處理過程....................................658
        第十四章  Android應用程序的鍵盤消息處理機制...................666
            14.1  InputManager的啟動過程..............................669
                14.1.1  創建InputManager..............................669
                14.1.2  啟動InputManager..............................672
                14.1.3  啟動InputDispatcher...........................674
                14.1.4  啟動InputReader...............................676
            14.2  InputChannel的注冊過程..............................687
                14.2.1  創建InputChannel..............................688
                14.2.2  注冊Server端InputChannel......................695
                14.2.3  注冊當前激活窗口..............................699
                14.2.4  注冊Client端InputChannel......................704
            14.3  鍵盤消息的分發過程..................................708
                14.3.1  InputReader處理鍵盤事件.......................708
                14.3.2  InputDispatcher分發鍵盤事件...................715
                14.3.3  當前激活的窗口獲得鍵盤消息....................727
                14.3.4  InputDispatcher獲得鍵盤事件處理完成通知.......741
            14.4  InputChannel的注銷過程..............................745
                14.4.1  銷毀應用程序窗口..............................746
                14.4.2  注銷Client端InputChannel......................754
                14.4.3  注銷Server端InputChannel......................756
        第十五章  Android應用程序線程的消息循環模型...................762
            15.1  應用程序主線程消息循環模型..........................762
            15.2  界面無關的應用程序子線程消息循環模型................764
            15.3  界面相關的應用程序子線程消息循環模型................766
        第十六章  Android應用程序的安裝和顯示過程.....................775
            16.1  應用程序的安裝過程..................................775
            16.2  應用程序的顯示過程..................................808
    
            第一篇包含三個章節,介紹了Android系統源代碼的下載、編譯和運行,Android系統的智能指針,以及Android系統的硬件抽象層。在應用程序框架層的Native代碼中,大量的使用了智能指針,因此,在分析Android系統的源代碼之前,我們需要對它的智能指針有所了解。學習Android系統的硬件抽象層,能夠使得我們迅速掌握Android系統的層次結構。

     

            第二篇也是包含三個章節,分析Android系統在Linux內核中的三個專用驅動,分別是日志驅動、Binder驅動和匿名共享內存驅動。毋容置疑,這三個專用驅動構成了Android系統的基礎,學習它們對了解Android系統有非常大的幫助。

            第三篇包含了十個章節,系統地分析Android應用程序的架構,從應用程序組件、進程、消息和安裝四個角度來它進行系統的分析。移動平臺最核心的競爭力是運行在它上面的豐富的、高質量的應用程序,而這些豐富的、高質量的應用程序離不開優秀的應用程序基礎設施和架構,因此,花了很大的篇幅來介紹Android應用程序的架構,同時它是理解整個Android系統的一個很好切入點,畢竟系統所做的一切都是為使得它上面的應用程序能夠好好地運行、好好地為用戶服務。

    作者:Luoshengyang 發表于2012-3-30 2:31:13 原文鏈接
    閱讀:2444 評論:48 查看評論
    posted on 2012-04-17 21:32 mixer-a 閱讀(229) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 深夜a级毛片免费视频| 免费在线观看a级毛片| 精品国产免费一区二区三区| 亚洲videos| 亚洲成AV人片一区二区| 亚洲av无码不卡私人影院| 免费观看成人毛片a片2008| 午夜老司机永久免费看片| 青草青草视频2免费观看| 亚洲综合伊人制服丝袜美腿| 亚洲AV第一页国产精品| 亚洲中文字幕伊人久久无码| 国产大片线上免费看| 免费可以在线看A∨网站| 久热中文字幕在线精品免费| 美女视频黄a视频全免费网站色窝| 色多多A级毛片免费看| 国产午夜亚洲精品不卡| 亚洲女子高潮不断爆白浆| 亚洲偷偷自拍高清| 亚洲AV无码一区二区三区人| 亚洲精品**中文毛片| 亚洲国产精品久久久久婷婷老年| 亚洲精品V欧洲精品V日韩精品| 中文字幕亚洲综合久久男男| 亚洲国产成人乱码精品女人久久久不卡 | 亚洲剧情在线观看| 亚洲精品视频在线免费| 亚洲国产香蕉碰碰人人| 亚洲午夜免费视频| 亚洲国产精品久久66| 亚洲精品亚洲人成在线观看麻豆 | 日韩在线一区二区三区免费视频| 精品国产亚洲第一区二区三区| 亚洲综合av一区二区三区| 亚洲乱码一区二区三区国产精品| 亚洲人成网站色在线观看| 亚洲一区二区三区高清视频| 456亚洲人成在线播放网站| 亚洲一区二区三区高清视频| 亚洲精品老司机在线观看|