上一篇文章,我们对Binder做了一个简单的介绍。现在想从Binder机制的Java层来说下。
安卓本身在natvie层
搭建了整套机制的基础,然后在Java层
也重新包装了下,方便我们使用。
因此本篇想尝试就只剖析Java层的架构为主,对于natvie层只是简单掠过,虽然在native层我们可以看到他加载虚拟Binder设备,打开Binder驱动,注册service的具体内容。不过我们还是一步一步来。有兴趣的伙伴可以自己去看下。
那么,就让我们开始探索之旅吧。
上一篇文章,我们对Binder做了一个简单的介绍。现在想从Binder机制的Java层来说下。
安卓本身在natvie层
搭建了整套机制的基础,然后在Java层
也重新包装了下,方便我们使用。
因此本篇想尝试就只剖析Java层的架构为主,对于natvie层只是简单掠过,虽然在native层我们可以看到他加载虚拟Binder设备,打开Binder驱动,注册service的具体内容。不过我们还是一步一步来。有兴趣的伙伴可以自己去看下。
那么,就让我们开始探索之旅吧。
Binder,大名鼎鼎,有了他,我们才能和另外一个陌生人(进程)发生沟通啊.
那么这个搭桥牵绳的中间人—月老Binder,到底是怎么做到的呢?
我们先来简单的了解下,然后再深入的探索。
篇幅会比较长,所以分了上中下篇,上篇简述基本的原理,下篇尝试从java层和Native层源码的角度来理解。
好了,那么我们就开始说下这个月老Binder的故事吧!
在插件化和热修复方面,应该算是解决了不少燃眉问题了。
目前开源的有:
360的DroidPlugin,
阿里的AndFix,Dexposed
主席的dynamic-load-apk
点评的Android Dynamic Loader,
现在我们来看看它们的原理和各自的优缺点吧。
最近重新看了一遍《The True Believer —Thoughts on the Nature of Mass Movements》,现在是第三遍了,每次都可以得到一些宁静。大概可能是因为在这里面可以找到一个解释,来安慰自己无知的内心吧。