深入理解Android

邓凡平

出版时间

2011-09-05

ISBN

9787111357629

评分

★★★★★
书籍介绍
这不是一本教你怎么写代码的书,而是一场带你钻进Android系统内部的探险。作者邓凡平用近乎讲故事的笔法,把MediaScanner、init、Zygote、Binder、Audio、Surface这些冷冰冰的模块串成一段「Android历险记」,让人忍不住一章接一章读下去。书中最被反复提及的,是Binder机制的精妙设计——它像一根看不见的线,把Java世界和Native世界连接起来,读懂它,便读懂了Android通信的命脉。不过,它也不适合所有人:有人读得酣畅,也有人直呼「很高深、没看明白」;内容虽有过时之处,但作为理解系统架构的敲门砖,依然扎实。它适合那些愿意啃源码、想从「会用」走向「理解」的开发者,不适合只想查API的人。源码面前,了无秘密——这既是它的承诺,也是它的门槛。
作者简介
邓凡平,资深Android开发工程师,热衷于Android源代码的研究,对Android的架构设计和实现原理有非常深刻的认识和理解,应用开发经验也十分丰富。目前就职于国内一家领先的Android企业,负责Framework的开发和维护。乐于分享,活跃于CSDN等专业社区,撰写的Android Framework源码的系列文章深受读者欢迎。此外,他对Linux内核、C/C++/Python相关的技术,以及高性能网络服务器和多核并行开发等也有一定的研究。
AI导读
核心看点
  • 以情景方式深入剖析Android源码
  • 重点解析Framework层及Binder机制
  • 兼顾Native层与Application层分析
读者共识
  • 源码剖析透彻,是理解Android底层的佳作
  • 偏向底层系统,普通应用开发者慎入
  • 部分章节略显枯燥,需耐心研读
精彩摘录
  • "在分析zygote创建虚拟机的时候,我们说过系统默认设置的Java虚拟机堆栈最大为16MB"
  • "JNI是Java Native Interface的缩写,中文译为“Java本地调用”。"
  • "通俗地说,JNI是一种技术,通过这种技术可以做到以下两点: * Java程序中的寒暑可以调用Native语言系的函数,Native一般指的是C/C++编写的函数。 * Native程序中的函数可以调用Java层的函数,也就是说在C/C++程序中可以调用Java的函数。"
  • "图1-2 Java世界和Native世界交互"
  • "一般而言,Java世界经由JNI层通过IPC方式与Native世界交互,而Android平台上最为神秘的IPC方法就是Binder了,第6章将详细分析Binder。"
  • "需要解释一下静态方法中native函数是如何找到对应的JNI函数的。其实,过程非常简单: 当Java层调用native_init()函数时,它会从对应的JNI库中寻找Java_android_media_MediaScanner_native_init函数,如果没有,就会报错。如果找到,则会为这个native_init和Java_android_media_MediaScanner_native_init建立一个关联关系,其实就是保存JNI层函数的函数指针。以后再调用native_init函数时,直接使用这个函数指针久可以了,当然这项工作是由虚拟机完成的。"
  • "jclass clazz = (*env)->FindClass(env, className);"
  • "jclass mediaScannerClientInterface = env->FindClass("android/media/MediaScannerClient");"
目录
第1章 阅读前的准备工作 / 1
1.1 系统架构 / 2
1.1.1 Android系统架构 / 2
1.1.2 本书的架构 / 3
1.2 搭建开发环境 / 4

显示全部
用户评论
值得一看: - 系统native到java层的初始化 - binder - surface 如果从事音视频相关的工作,audio和mediascanner这两章对于这一类岗位较为有用。 该书作者的文章绝大部分很多是水文,给Android中级工程师较为合适,高级工程师不建议看。而且很多文章都是来源于博客,没有经过再次打磨,所以对于高级工程师难免难以解困。
我... 嗯,好吧,其实没看明白,感觉很高深的样子。因为现在用不上,所以先把知识点混个脸熟... 嗯,好吧,脸熟都没有,就算见过了有点印象。
适合喜欢读Android源码的人
大致理解Android系统底层的架构,强烈推荐!IPC通信的Binder机制设计太巧妙了,还要继续 深入研究!
222
优点:通俗易懂 缺点:图比较少
jni的章节读完有收获
极客学院wiki.jikexueyuan.com20190226-20190508第一遍,了解了个大概20190509-第二遍
都是源码分析,太细节了
下载
收藏