`
473687880
  • 浏览: 535677 次
文章分类
社区版块
存档分类
最新评论

Android博客文章整理

 
阅读更多

经过一年的努力,整理了博客上所有的Android文章,一共划分为三大篇,十六个章节,820页,系统地分析了Android系统的源代码,从Linux内核层、HAL层、运行时库层到应用程序框架层。整理期间困难重重,多次想要放弃,但是看到在四个多月不更新文章的情况下,博客访问量仍节节攀升,从评论中感受到了网友们的热情支持,受到了极大的鼓舞,最终坚持了下来。现在书本的内容已整理好,开始出售,欢迎大家支持!

当当网:http://product.dangdang.com/product.aspx?product_id=22884086(满100减20,满200减50)

京东网:http://book.360buy.com/11104739.html(满99减20)

亚马逊:http://www.amazon.cn/Android系统源代码情景分析-罗升阳/dp/B009OLU8EE(满100减20,满200减50)

互动网:http://product.china-pub.com/3684413

苏宁易购网:http://www.suning.com/emall/prd_10052_22001_-7_3435777_.html

比一比谁更实惠

本书试读,欢迎点击!

本书繁体版已经成功输出到台湾!

整理的内容并不是简单地复制了博客上的文章。博客文章由于发表得比较匆忙,不到六个月的时间,一共发表了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系统的一个很好切入点,毕竟系统所做的一切都是为使得它上面的应用程序能够好好地运行、好好地为用户服务。

当当网:http://product.dangdang.com/product.aspx?product_id=22884086(满100减20,满200减50)

京东网:http://book.360buy.com/11104739.html(满99减20)

亚马逊:http://www.amazon.cn/Android系统源代码情景分析-罗升阳/dp/B009OLU8EE(满100减20,满200减50)

互动网:http://product.china-pub.com/3684413

苏宁易购网:http://www.suning.com/emall/prd_10052_22001_-7_3435777_.html

比一比谁更实惠

本书试读,欢迎点击!

本书繁体版已经成功输出到台湾!



老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注!

分享到:
评论

相关推荐

    android 阅读器(可订阅博客)

    用户可以根据兴趣分类整理订阅的博客,创建自定义的阅读列表。此外,还可以设置优先级,将重要的博客置顶,确保第一时间阅读到关键信息。对于那些错过的内容,阅读器通常提供离线阅读功能,让用户在没有网络的情况下...

    android学习资料(网站,论坛)

    以下是从提供的文件中整理出的Android学习资源,包括论坛、博客和个人推荐的软件下载站点,旨在为初学者和进阶开发者提供全方位的支持。 #### 论坛:交流与解答的最佳场所 1. **eoeandroid论坛...

    Android开发中遇到的重难点解析,还包括平时的读书笔记和知识点整理.zip

    Android开发中遇到的重难点解析,还包括平时的读书笔记和知识点整理#Android重点解析Android开发中遇到的重难点解析,还包括平时的读书笔记、知识点整理、面试等。如果您想回答我的问题,或者想回答我的问题,可以...

    android-技术资料汇总

    - 包括但不限于在线课程、博客文章、开源项目等。 #### 使用Flex4.5开发Android应用程序 - 介绍了如何利用Adobe Flex框架来开发跨平台的Android应用。 - 对于熟悉Flex的开发者来说,是一种快速进入移动开发领域的...

    Android多屏幕适配

    研究了以前同事留下的适配方案和网神hongyang大牛提供的方案,特整理了两套完美的android屏幕适配工具类,和详细的使用demo,可以根据px适配,也可以根据dp适配。适配原理可参考hongyang的博客,若还不会或者不会用...

    Android 自动化埋点(无痕埋点),代码插桩 Demo

    这一系列文章,主要是讲自动化埋点又叫无痕埋点,或者字节码插桩技术,写这个系列文章的目的是 偶然间发现,网上关于这方面的博客很少,所以我根据自己的一些实战经验,整理了这个系列的文章。 整个系列不会讲的太...

    Android资源收录

    为了帮助开发者更好地学习和掌握Android开发技能,本篇文章整理了一系列宝贵的Android学习资源,包括但不限于系统源码、教程、性能优化资料以及应用实例等。 #### Android系统源码资源 - **eyeOS 开放源代码下载**...

    Android 性能优化资源汇总 2020 版

    近期做 Android 性能优化,整理了部分性能优化的开发资源,先发布出来,后续会在这个 git仓库 更新,感兴趣的网友可以关注下。 以下是初稿: 网站博客 以组织或人为单位的教程资源: ...androidperformance 博客文章

    android_practice:Android文章合集(附带原始码和xmind脑图)-android

    这个资源包包括了多个博客文章的链接,以及相应的源代码和Xmind思维导图,为学习者提供了一个全方位的学习路径。 首先,我们要理解Android系统开源的特性。Android作为一个基于Linux内核的开源操作系统,它的开放性...

    鸿洋Messenger进程间通讯整理

    鸿洋,即王建辉,是知名Android开发者,他在CSDN博客上分享了一篇文章,详细解析了这一技术。 Messenger是Android中一种轻量级的IPC机制,主要用于在不同进程间传递消息。它的核心思想是通过Binder机制实现,Binder...

    java版飞机大战源码-Android_Data:Android_Data

    java版飞机大战源码 Android 学习资料收集 收集整理这份资料灵感来自于 , 征得同意引用了该资料的开头描述 收集整理这份资料主要帮助初学者学习 ...郭神在CSDN中的博客文章非常不错, 书我看了, 非常适合新手

    java安卓网络游戏源码-FavoriteForAndroid:Android收藏夹,整理一些比较有用的文章,工具

    Android收藏夹,整理一些比较有用的精品网站,博客,工具(持续更新) Android相关技术 精品资源 精品博客 热修复  开源框架汇总如下: Dexposed: AndFix: Nuwa: HotFix: DroidFix: Robust: RocooFix: Aceso...

    微信小程序/网页/app/android等各种bar图标导航图标文章图标标题图标下拉/检索收藏上传客服等图标整理

    "文章图标"则常见于新闻、博客或者内容分享平台,通常包括阅读、评论、点赞和分享等功能。这些图标直观地表示了用户与内容互动的方式。 "标题图标"通常出现在各个页面的顶部,以简洁明了的方式展示当前页面的主题。...

    Android代码-WLeetCode

    后续,在空闲时间总结了单链表的面试题目,排序算法等知识,目前在整理 Java 集合框架相关源码,相关文章在本人的掘金专栏和简书与CSDN博客都有发布。欢迎关注本项目的朋友去浏览。 > -- 2018年04月12日更新 Java ...

    Android客户端百度地图的基本功能实现

    这篇博客文章“Android客户端百度地图的基本功能实现”深入浅出地讲解了如何在Android应用中使用百度地图API来创建一个基础的地图应用。以下是根据博客内容和标签整理的详细知识点: 1. **百度地图SDK安装与配置**...

    雨松MOMO安卓博客课程

    《雨松MOMO安卓博客课程》是一份精心整理的Android开发学习资源,包含了雨松MOMO博主的32篇文章精华。这个合集旨在为Android开发者,尤其是初学者提供一条系统化的学习路径,帮助他们深入理解Android开发的核心概念...

    Android困难分析:安卓开发中遇到的重难点解析,也包括平常的读书笔记和知识点整理

    #Android重难点解析 安卓开发中遇到的重难点解析,也包括平常的读书笔记,知识点整理,面试翻译等。 如果你有想提问我的问题,或者是想回答的问题,可以提交问题和要求。 如果对你有帮助的话,请star一下,然后关注...

    Android代码-miaosha

    高并发大流量如何进行秒杀架构,我对这部分知识做了一个系统的整理,写了一套系统。本GitHub还有许多其他的知识,随时欢迎探讨与骚扰!本文还在更新如果文章出现瑕疵请及时与我联系! 文章还有许多不足,我仍在不断...

Global site tag (gtag.js) - Google Analytics