
Android Binder学习
Android系统攻城狮
《Android系统多媒体进阶实战》一书作者
展开
-
Binder之获取ServiceManager过程(一)
【代码】Binder之获取ServiceManager过程(一)原创 2022-12-25 22:47:51 · 515 阅读 · 0 评论 -
Android中binder,hwbinder,vndbinder之间的关系
1 前言先复制一段来自于android官方文档的文字https://source.android.google.cn/devices/architecture/hidl/binder-ipc一直以来,供应商进程都使用 Binder 进程间通信 (IPC) 技术进行通信。在 Android 8 中,/dev/binder 设备节点成为框架进程的专有节点,这意味着供应商进程无法再访问此节点。...转载 2020-04-14 14:32:22 · 2296 阅读 · 0 评论 -
Android BINDER详解
1.进程间通信的本质(2个进程)用户空间的进程如果想相互通信,必须经过内核,因为不同进程的用户地址空间是独立的,但是共享同一个内核空间.内核为了支持进程间通信,一般会有一个驱动,以字符设备的形式存在(也可以是其它形式,这个驱动的本质就是在不同的进程间传递数据).两个进程间通信一般以client/server的形式进行,大致流程如下:ser...转载 2020-03-20 13:37:39 · 3469 阅读 · 0 评论 -
Android Binder Debug(八十一)
# find / -name binder./sys/fs/selinux/class/binder./sys/devices/virtual/misc/binder./sys/class/misc/binder./sys/kernel/debug/binder./sys/kernel/debug/tracing/events/binder./sys/module/binder/...原创 2019-12-31 20:17:28 · 844 阅读 · 0 评论 -
Android Binder Driver流程分析
Binder是Android中使用最为广泛的IPC框架,从实现的角度可以分为内核层和用户空间层,本文主要分析下Binder Driver在内核层的实现。Binder Driver初始化 1 2 3 // 驱动注册入口 device_initcall(binder_init); 我们看下binder_init...转载 2019-12-06 13:04:09 · 774 阅读 · 0 评论 -
DECLARE_META_INTERFACE(INTERFACE)和IMPLEMENT_META_INTERFACE(INTERFACE, NAME)宏定义分析
这里讲的两个宏定义是IPC中鼎鼎大名的DECLARE_META_INTERFACE(INTERFACE)IMPLEMENT_META_INTERFACE(INTERFACE, NAME)定义frameworks\base\include\utils\IInterface.h#define DECLARE_META_INTERFACE(转载 2017-05-10 14:16:46 · 5829 阅读 · 0 评论 -
Binder IPC的权限控制
原址基于Android 6.0的源码剖析, 分析Binder IPC通信的权限控制方法clearCallingIdentity和restoreCallingIdentity的原理和用途。/frameworks/base/core/java/android/os/Binder.java/frameworks/base/core/jni/android_util_Binder.c转载 2017-06-03 15:05:25 · 749 阅读 · 0 评论 -
自定义binder架构的 client/ server组件
原址一、Native层Binder源码结构:ClientDemo.cpp: 客户端程序ServerDemo.cpp:服务端程序IMyService.h:自定义的MyService服务的头文件IMyService.cpp:自定义的MyService服务Android.mk:源码build文件1.1 服务端#include "IMyService.h"转载 2017-06-03 15:41:16 · 608 阅读 · 0 评论 -
Binder线程处理请求
原址一、用户空间创建Binder线程startThreadPool调用流程:调用方法:ProcessState::self()->startThreadPool();1、startThreadPool()的主要作用是:(ProcessState.cpp)调用spawnPooledThread( true)2、spawnPooledThread这个函数里面主要作用是:...转载 2018-09-10 14:20:27 · 655 阅读 · 0 评论 -
Binder精讲(强)
原址原创 2018-09-10 16:24:19 · 297 阅读 · 0 评论 -
通过AMS分析Binder流程(Java到Kernel)
栗子:public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = new Intent(this, D...原创 2019-01-08 13:00:08 · 1311 阅读 · 0 评论 -
android Binder系列讲解
Binder系列讲解原创 2017-05-10 13:41:26 · 667 阅读 · 0 评论 -
interface_cast做什么的?
原址1. 前面对interface_cast已经进行了详解,为加深理解,现单独把结果抛出来。它本身是一个模板,如:interface_cast(reply.readStrongBinder());2. reply.readStrongBinder());返回的结果是一个新创建的BpBinder对象。3. interface_cast(BpBinder);新创建一个BpMedia转载 2017-05-11 14:39:13 · 762 阅读 · 0 评论 -
Android Binder机制的Native应用—双向通信
mkdir testbinder //创建testbinder目录Android.mk[plain] view plain copy include $(call all-subdir-makefiles) 一、接口类1.正向调用—ItestbinderItestbinder.h[cpp] view转载 2016-11-03 00:03:31 · 1042 阅读 · 0 评论 -
Android Binder机制的Native应用
mkdir testbinder //创建testbinder目录Android.mk[plain] view plain copy include $(call all-subdir-makefiles) 一、接口类mkdir interface //创建interface目录,存放接口类Itestbinder.h转载 2016-11-03 00:05:22 · 415 阅读 · 0 评论 -
Binder基本概念流程学习
一 Media Service进程启动Init.rc中描述的service对应linux 的进程:Media进程定义:service media /system/bin/mediaserver class main user media group audio camera inet net_bt net_bt_admin net_bw_acct d转载 2016-11-03 00:37:29 · 399 阅读 · 0 评论 -
红茶一杯话Binder(传输机制篇_上)
红茶一杯话Binder(传输机制篇_上) 1 Binder是如何做到精确打击的? 我们先问一个问题,binder机制到底是如何从代理对象找到其对应的binder实体呢?难道它有某种制导装置吗?要回答这个问题,我们只能静下心来研究binder驱动的代码。在本系列文档的初始篇中,我们曾经介绍过ProcessState,这个结构是属于应用层次的东西,仅靠它当然无法完转载 2016-11-03 00:46:23 · 682 阅读 · 0 评论 -
红茶一杯话Binder(传输机制篇_中)
红茶一杯话Binder(传输机制篇_中)1 谈谈底层IPC机制吧 在上一篇文章的最后,我们说到BpBinder将数据发到了Binder驱动。然而在驱动层,这部分数据又是如何传递到BBinder一侧的呢?这里面到底藏着什么猫腻?另外,上一篇文章虽然阐述了4棵红黑树,但是并未说明红黑树的节点到底是怎么产生的。现在,我们试着回答这些问题。1.1 概述转载 2016-11-03 00:47:26 · 495 阅读 · 0 评论 -
红茶一杯话Binder(传输机制篇_下)
红茶一杯话Binder(传输机制篇_下)1 事务的传递和处理 从IPCThreadState的角度看,它的transact()函数是通过向binder驱动发出BC_TRANSACTION语义,来表达其传输意图的,而后如有必要,它会等待从binder发回的回馈,这些回馈语义常常以“BR_”开头。另一方面,当IPCThreadState作为处理命令的一转载 2016-11-03 00:48:46 · 652 阅读 · 0 评论 -
红茶一杯话Binder(ServiceManager篇)
红茶一杯话Binder(ServiceManager篇)1.先说一个大概 Android平台的一个基本设计理念是构造一个相对平坦的功能集合,这些功能可能会身处于不同的进程中,然而却可以高效地整合到一起,实现不同的用户需求。这就必须打破过去各个孤立App所形成的天然藩篱。为此,Android提供了Binder机制。 在Android中,转载 2016-11-03 00:50:26 · 900 阅读 · 0 评论 -
红茶一杯话Binder(初始篇)
红茶一杯话Binder(初始篇)1 什么是Binder? 简单地说,Binder是Android平台上的一种跨进程交互技术。该技术最早并不是由Google公司提出的,它的前身是Be Inc公司开发的OpenBinder,而且在Palm中也有应用。后来OpenBinder的作者Dianne Hackborn加入了Google公司,并负责Android平台的开发转载 2016-11-03 00:44:33 · 516 阅读 · 0 评论 -
如何去读Binder的源码
1: 概述Binder的源码相对没有接触过驱动的人来说, 还是比较复杂的, 如果要读懂还是比较难的(本人之前做Java开发, 很少接触C和C++)。所以读Binder源码的时候比较难, 而且很多内核的知识如果不了解, 读起来也比较费事, 这些都让Binder比较神秘。所以我整理了一些Binder的基础知识, 带着对Binder比较感性的了解再去读Binder源码, 肯定事半功倍转载 2016-10-29 15:20:48 · 479 阅读 · 0 评论 -
从mediaserver入手快速理解binder机制(最简单理解binder)
(一) 概述 Android的binder机制提供一种进程间通信的方法,使一个进程可以以类似远程过程调用的形式调用另一个进程所提供的功能。binder机制在Java环境和C/C++环境都有提供。 android的代码中,与C/C++的binder包括一些类型和接口的定义和实现,相关的代码在下面这几个文件中: frameworks\base\inclu转载 2016-11-02 23:35:35 · 1077 阅读 · 0 评论