Android14之Binder调试(二百一十一)

news2024/12/24 0:06:05

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列原创干货持续更新中……】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门实战课原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

    • 🌻1.前言
    • 🌻2.Binder介绍
    • 🌻3.调试步骤
      • 🐓3.1 添加日志
      • 🐓3.2 编译与在设备运行

🌻1.前言

本篇目的:基于Android14源码,如何对Binder进行调试

🌻2.Binder介绍

  • Binder,全称为Android Binder IPC(Inter-Process Communication),是Android系统中用于进程间通信的一种机制。它是一种基于C/S(客户端/服务器)模式的通信方式,主要由客户端、服务端和Binder驱动三个部分组成。Binder机制在Android系统中具有重要的意义,因为它使得不同的进程可以安全、高效地共享数据和资源,从而实现了应用程序之间的协作和通信。
  • Binder机制的架构可以分为三个层次:客户端、服务端和Binder驱动。客户端和服务端通过Binder接口进行通信,而Binder驱动则负责在内核空间处理Binder对象的操作和数据传输。
  • 客户端是发起通信的一方,它通过调用服务端提供的接口来请求服务。客户端和服务端之间的通信是通过Binder对象进行的,Binder对象封装了通信过程中所需的数据和方法。客户端通过查询Binder对象的方法列表来了解服务端提供的接口,然后根据接口定义的参数和返回值与服务端进行交互。
  • 服务端是提供服务的一方,它通过实现Binder接口中的方法来定义可被客户端调用的服务。服务端需要注册自己的Binder对象到系统服务中,这样客户端才能通过Binder接口找到并调用服务端的方法。服务端在接收到客户端的请求后,可以通过Binder对象与客户端进行数据交换,并返回处理结果。
  • Binder驱动是整个机制的核心,它位于内核空间,负责处理Binder对象的操作和数据传输。Binder驱动主要完成以下功能:
  1. 创建和管理Binder对象:Binder驱动负责创建Binder对象,并维护对象的唯一标识和引用计数。当服务端注册Binder对象时,驱动会将其添加到系统中,以便客户端能够找到并使用。
  2. 处理客户端和服务端的通信请求:当客户端发起通信请求时,Binder驱动会根据请求中的目标Binder对象ID,将请求传递给对应的服务端。服务端处理完请求后,将结果通过Binder驱动返回给客户端。
  3. 支持跨进程数据传输:Binder驱动实现了对跨进程数据传输的支持,它将客户端和服务端的数据封装在Binder对象中,然后在内核空间进行传输。这样可以有效地减少用户空间和内核空间之间的数据拷贝,提高通信效率。
  4. 保障通信安全:Binder驱动支持权限控制,可以确保只有授权的进程才能访问特定的服务。此外,驱动还提供了数据加密和签名机制,以保护通信过程中的数据安全和隐私。
  • 总之,Binder机制在Android系统中发挥着至关重要的作用,它为应用程序之间的通信提供了高效、安全和便捷的途径。通过Binder机制,Android系统能够实现进程间的协作和资源共享,从而提高了系统的整体性能和用户体验。

🌻3.调试步骤

🐓3.1 添加日志

sp<IInterface>  IBinder::queryLocalInterface(const String16& )
{
  ALOGE("%s, %s(), line = %d\n",__FILE__,__FUNCTION__,__LINE__);
  return nullptr;
}

🐓3.2 编译与在设备运行

# cd frameworks/native/libs/binder
# mm -j12

# adb push libbinder.so /system/lib64

注意:不用重启设备。

  • 直接运行服务端和客户端设备即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1700603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文笔记】advPattern

【论文题目】 advPattern: Physical-World Attacks on Deep Person Re-Identification via Adversarially Transformable Patterns Abstract 本文首次尝试对深度reID实施鲁棒的物理世界攻击。提出了一种新颖的攻击算法&#xff0c;称为advPattern&#xff0c;用于在衣服上生成…

java “错误:编码GBK 的不可映射字符”

环境&#xff1a;JDK-17 本机编码&#xff1a;utf-8 代码编码&#xff1a;GBK 错误&#xff1a;java “错误&#xff1a;编码GBK 的不可映射字符” 解决1&#xff1a;记事本打开java源文件&#xff0c;另存为选择ANSI编码 解决2&#xff1a;复制代码再将编码格式改为utf-8,…

STM32无源蜂鸣器播放音乐

开发板&#xff1a;野火霸天虎V2 单片机&#xff1a;STM32F407ZGT6 开发软件&#xff1a;MDKSTM32CubeMX 文章目录 前言一、找一篇音乐的简谱二、确定音调三、确定节拍四、使用STM32CubeMX生成初始化代码五、代码分析 前言 本实验使用的是低电平触发的无源蜂鸣器 无源蜂鸣器是…

DevExpress WinForms中文教程 - HTML CSS支持的实战应用(二)

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…

VScode中对git的学习笔记

1.git是什么&#xff1f; Git是一个功能强大的分布式版本控制系统&#xff0c;由Linux内核的创始人Linus Torvalds在2005年创建。它以其速度、数据完整性和支持大型项目的能力而闻名&#xff0c;被广泛应用于软件开发中。Git允许开发者在本地机器上拥有完整的代码库副本&#x…

基于UDP的TFTP文件传输-实现网盘上传下载功能

数据传输模式&#xff1a;octet(二进制模式) #include<head.h> char* down_up_request(char* buf,char* filename,int rw,int sockfd,struct sockaddr_in in); int download(struct sockaddr_in in,char* filename,char* buf,int sockfd); int upload(struct sockaddr_in…

【深度学习】多层感知器MLP模型对 MNIST 数据集中的手写数字进行分类

本模型是解决一个十分类的问题&#xff1a; 在这之前&#xff0c;可以先看看一个Pytorch的简单的示例&#xff1a; 它展示了如何定义一个简单的神经网络、准备数据、训练模型以及评估模型&#xff1a; import torch import torch.nn as nn import torch.optim as optim …

私有云和多云管理平台 | Cloudpods v3.10.15 正式发布

功能优化 【主机】裸金属详情页增加部分属性信息【监控】优化告警策略&#xff0c;支持同时设置多监控指标【主机】支持透传设备自动探测【主机】LVM 块存储支持快照【监控】简化 Telegraf 容器的挂载点【主机】新建 VMware 支持同时填写备注信息【存储】KVM 支持对接 LVM 存储…

融汇11款AI工具构建完美应用

本文将为您介绍25个开源项目&#xff0c;分为上下两篇以便您融汇它们来制作自己的AI应用。人工智能&#xff08;AI&#xff09;应用在近年来得到了长足的发展。从语音助手到软件开发&#xff0c;人工智能已在我们的生活中无处不在&#xff0c;并得到了广泛应用。 如您所见&…

深入解析内置模块OS:让你的Python代码更懂操作系统

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、OS模块简介与基础应用 二、文件与目录操作详解 三、OS模块的高级应用&#xff1a;双色…

【NumPy】关于numpy.mean()函数,看这一篇文章就够了

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

【竞技宝】西甲:锋霸想和尤文再续前缘,三进宫能否实现?

马竞本赛季的比赛任务已经全部完成,整体来说床单军团的发挥无法让球迷们满意,休赛期球队肯定会有很多补强和调整。根据西班牙媒体报道,球队锋线大将莫拉塔不满自己在球队的出场时间,希望今年夏天离开球队。而西班牙锋霸想要去的球队也已经浮出水面,那就是他曾经效力过的尤文图斯…

【字典树(前缀树) 字符串】2416. 字符串的前缀分数和

本文涉及知识点 字典树&#xff08;前缀树) 字符串 LeetCode 2416. 字符串的前缀分数和 给你一个长度为 n 的数组 words &#xff0c;该数组由 非空 字符串组成。 定义字符串 word 的 分数 等于以 word 作为 前缀 的 words[i] 的数目。 例如&#xff0c;如果 words [“a”,…

【NOIP2015普及组复赛】题3:求和

题3&#xff1a;求和 【题目描述】 一条狭长的纸带被均匀划分出了 n n n 个格子&#xff0c;格子编号从 1 1 1 到 n n n。每个格子上都染了一种颜色 c o l o r i color_i colori​ &#xff08;用 [ 1 &#xff0c; m ] [1&#xff0c;m] [1&#xff0c;m]当中的一个整数表…

【数据结构】排序算法大全(快速、堆、归并、插入、折半、希尔、冒泡、计数、基数)各算法比较、解析+完整代码

文章目录 八、排序1.插入排序1.1 直接插入排序1.2 折半插入排序1.3 希尔排序 2.交换排序2.1 冒泡排序2.2 快速排序 3.选择排序3.1 简单选择排序3.2 堆3.2.1 堆排序3.2.2 堆插入删除*完善代码 堆 4.归并、基数、计数排序4.1 归并排序4.2 基数排序4.3 计数排序 5.内部排序算法的比…

JAVA:Spring Boot整合MyBatis Plus持久层

1、简述 MyBatis Plus是MyBatis的增强工具包&#xff0c;它在MyBatis的基础上进行了扩展&#xff0c;提供了许多便捷的功能&#xff0c;例如通用CRUD操作、分页插件、代码生成器等。使用MyBatis Plus&#xff0c;开发者可以更加方便地进行持久层操作&#xff0c;并且减少了很多…

Python爬虫实战:利用代理IP获取电商数据

文章目录 1.电商数据介绍2.爬取目标3.代理IP推荐4.准备工作4.1 模块安装4.2 代理IP获取 5.爬虫代码实战5.1分析网页5.1.1 获取cookie5.1.2 关键词分析5.1.3 翻页分析5.1.4 数据获取分析 5.2 发送请求5.3 提取数据5.4 保存数据5.5 完整源码5.6 数据分析六、总结 1.电商数据介绍 …

[随笔] 在CSDN的6周年纪念日随笔

纪念 转眼已过6年&#xff0c;大一的时候学习编程&#xff0c;潜水 CSDN 学习各类博文&#xff0c;才学浅薄就没有主动写博文记录自己的学习历程。 过了段时间刚刚到了大二&#xff0c;很喜欢 Todolist&#xff0c;意气风发的写下《一份清爽的编程计划》&#xff0c;哈哈。 …

冷冻式压缩空气干燥机常见几种系统原理图

冷冻式压缩空气干燥机 我们以两种典型的设计流程图为例 1.干式蒸发型&#xff0c;这类冷干机是我们最为常见的设计型式。下图为deltech公司的典型流程图 此类设备各家设计不同的最大区别基本就是在换热器的结构型式上有比较大的区别。换热器主要有&#xff1a;管壳式、铝板换、…

【openlayers系统学习】00官网的Workshop介绍

00Workshop介绍 官方文档&#xff1a;https://openlayers.org/workshop/en/ openlayers官网Workshop学习。 通过官网Workshop&#xff0c;系统学习openlayers的使用。 基本设置 这些说明假定您从最新Workshop版本的 openlayers-workshop-en.zip​ 文件开始。此外&#xff…