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

简介: 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.rhkb.cn/news/333310.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

气泡水位计的安装方法详解(二)

气泡水位计的安装方法详解&#xff08;二&#xff09; 产品简介 气泡式水位计ZL-BWL-013是一款适用于水文、水利信息化建设领域的新一代水位测量类设备&#xff0c;产品执行GB/T 11828.2-2022标准。ZL-BWL-013气泡水位计&#xff0c;具有安装方便、易于操作&#xff0c;高精度…

【leetcode2028. 找出缺失的观测数据(自己写出来了)】

给你一个长度为 m 的整数数组 rolls &#xff0c;其中 rolls[i] 是第 i 次观测的值。同时给你两个整数 mean 和 n 。返回一个长度为 n 的数组&#xff0c;包含所有缺失的观测数据&#xff0c;且满足这 n m 次投掷的 平均值 是 mean 。如果存在多组符合要求的答案&#xff0c;只…

Springboot阶段项目---《书城项目》

一 项目介绍 本项目采用集成开发平台IntelliJ IDEA开发了在线作业成绩统计系统的设计与实现&#xff0c;实现了图书商城系统的综合功能和图形界面的显示&#xff0c;可以根据每个用户登录系统后&#xff0c;动态展示书城首页图书&#xff0c;实现了分类还有分页查询&#xff0c…

【加密与解密(第四版)】第十六章笔记

第十六章 脱壳技术 16.1 基础知识 壳的加载过程&#xff1a;保存入口参数、获取壳本身需要使用的API地址、解密原程序各个区块的数据、IAT的初始化、重定位项的处理、HOOK API、跳转到程序原入口点 手动脱壳步骤&#xff1a;查找真正的入口点、抓取内存映像文件、重建PE文件&…

图论(二)-图的建立

引言&#xff1a; 建图&#xff0c;将图放进内存的方法 常用的建图方式&#xff1a;邻接矩阵&#xff0c;邻接链表&#xff0c;链式前向星 一、邻接矩阵 通过一个二维数组即可将图建立&#xff0c;邻接矩阵&#xff0c;考虑节点集合 &#xff0c;用一个二维数组定义邻接矩…

LINUX环境基础练习题(附带答案)

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

LLM提示工程的技巧

1. 从简单开始&#xff08;Start Simple&#xff09; 避免在一开始就增加太多的复杂性。 从简单的提示开始&#xff0c;然后在后续提示中添加更多信息和上下文。 这样&#xff0c;提示就是一个迭代过程&#xff0c;提示在此过程中进一步发展。 从简单的开始&#xff0c;就有足…

2024.05.27学习记录

1、面经复习&#xff1a; 实际工作经验章节 2、代码随想录刷题&#xff1a;动态规划剩下部分和单调栈 3、rosebush 组件库完成Input 和 AutoComplete部分内容

我的创作纪念日——我与CSDN一起走过的128天

目录 一、机缘&#xff1a;旅程的开始 二、收获&#xff1a;沿路的花朵 三、日常&#xff1a;不断前行中 四、成就&#xff1a;一点小确幸 五、憧憬&#xff1a;梦中的重点 一、机缘&#xff1a;旅程的开始 最开始开始写博客是在今年一二月份的时候&#xff0c;也就是寒假…

第十五届“北斗杯”全国青少年空天科技体验与创新大赛安徽赛区阜阳市解读会议

5月19日&#xff0c;第十五届“北斗杯”全国青少年空天科技体验与创新大赛安徽赛区阜阳解读活动在阜阳市图书馆隆重举行。共青团阜阳市委员会学少部副部长丁晓龙、阜阳市师范大学物理系副主任黄银生教授、安徽科技报阜阳站站长李伟、市人工智能学会秘书长郭广泽、“北斗杯”安徽…

kettle 读取记事本文件给java组件处理

kettle9.4 用到两个组件 文本文件输入 文件内容如下 文本文件输入---文件 文本文件输入---内容 注意事项&#xff1a;分隔符这里&#xff0c;我一直没注意&#xff0c;导致不管怎么读数据都读不到&#xff1b;可以用换行符&#xff0c;可以用其他的&#xff0c;视情况而定&…

Android Studio自带Profiler工具进行CPU资源及线程问题分析步骤

1、运行需要检测CPU资源问题与线程问题的程序 这里以“com.example.opengltest”程序为例。 2、点击Profiler按钮 3、点击SESIONS ""号按钮选择设备&#xff0c;选择对应设备下的应用或进程 4、双击CPU区块 5、选择Trace config选项&#xff0c;选择“Java/Kotli…

张大哥笔记:赚钱高手养成计划---如何将一份时间产生N份收入?

我们常说的赚钱的四种境界有哪些&#xff1f; 1.靠体力挣钱 2.靠技能挣钱 3.靠知识挣钱 4.靠平台钱生钱 所以对应的收入的模式就会是下面4种模式&#xff1a; 1.一份时间卖1次 2.一份时间卖N次 3.一份时间溢价卖N次 4.购买他人时间为自己所用 时间对于每个人都是相同的…

mail发送接口API如何使用?怎么调用接口?

mail发送接口API的性能怎么样&#xff1f;邮件接口发信的技巧&#xff1f; 为了自动化和集成电子邮件功能到应用程序或系统中&#xff0c;开发人员可以使用各种邮件发送接口API。AokSend将介绍如何使用这些API来发送电子邮件&#xff0c;提高效率和灵活性。 mail发送接口API&…

C++青少年简明教程:switch语句

C青少年简明教程&#xff1a;switch语句 在C中&#xff0c;switch语句用于基于一个表达式的值来执行不同的代码块。这个表达式通常是一个整数类型&#xff08;如int&#xff0c;char&#xff0c;或枚举类型&#xff09;&#xff0c;并且case标签必须是整数常量表达式。 语法格…

DRKCT复现

Osint 羡慕群友每一天 MISC 签到 扫码关注公众号&#xff0c;回复一下行 &#xff08;眼神要好&#xff0c; 我做题时没看见有个二维码&#xff09; 神秘的文字 把代码js运行一下 (用js的原因是前面给的动物代表的字符类似jsfuck代码) &#x13142;![]; &#x13080;!…

音视频开发5 补充 - Nginx搭建rtmp流媒体服务器,目的是让ffmpeg 可以直播推流

直播推流 ffmpeg -re -i out.mp4 -c copy flv rtmp://server/live/streamName -re, 表示按时间戳读取文件 参考&#xff1a; Nginx 搭建 rtmp 流媒体服务器 (Ubuntu 16.04) https://www.jianshu.com/p/16741e363a77 第一步 准备工作 安装nginx需要的依赖包 打开 ubutun 终端…

Less语言

Less是一门预编译语言&#xff0c;它扩展了CSS语言&#xff0c;增加了变量、Mixin、函数等特性&#xff0c;使CSS更易维护和扩展 Less也扩充了CSS语言&#xff0c;增加了诸如变量、混合运算、函数等功能。Less既可以运行在服务端(Node.js和Rhino平台)也可以运行在客户端(浏览器…

K8S认证|CKA题库+答案| 13. sidecar 代理容器日志

目录 13、使用 sidecar 代理容器日志 CKA v1.29.0模拟系统 下载试用 题目&#xff1a; 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、生成yaml文件 3&#xff09;、官网找模板 4&#xff09;、编辑yaml文件 5&#xff09;、应用yaml文件 ​6&…

H3CNE-8-ARP工作原理

ARP&#xff1a;Address Resolution Protocol 通过目的IP地址请求对方的MAC地址的过程。 数据链路层在进行数据封装时&#xff0c;需要目的MAC地址。 arp -a 查看 arp -d * 清空 主机A发送一个数据包给主机C之前&#xff0c;首先要获取C的MAC地址 数据封装