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.pswp.cn/web/13803.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13803.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13803.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端面試題日常練-day21 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備&#xff0c;答案在文末。 AJAX 是什么的縮寫&#xff1f; a) Asynchronous JavaScript and XMLb) Asynchronous JavaScript and XHTMLc) Asynchronous Java and XMLd) Asynchronous Java and XHTML使用 AJAX 可以實現以下哪…

2024年5月20日優雅草蜻蜓API大數據服務中心v2.0.4更新

v2.0.4更新 v2.0.4更新 2024年5月20日優雅草蜻蜓API大數據服務中心v2.0.4更新-增加ai繪畫接口增加淘寶聯想詞接口底部增加聯系方式 更新日志 底部增加聯系方式 增加ai繪畫接口 增加淘寶聯想詞接口 增加用戶中心充值提示 用戶中心內頁顏色改版完成 截圖 部分具體更新接口信…

神經網絡優化器-從SGD到AdamW

優化器準則 凸優化基本概念 先定義凸集&#xff0c;集合中的兩個點連接的線還在集合里面&#xff0c;就是凸集&#xff0c;用數學語言來表示就是&#xff1a;對于集合中的任意兩個元素x&#xff0c;y以及任意實數 λ ∈ ( 0 , 1 ) \lambda \in (0,1) λ∈(0,1)&#xff0c;有…

【NLP】詞性標注

詞 詞是自然語言處理的基本單位&#xff0c;自動詞法分析就是利用計算機對詞的形態進行分析&#xff0c;判斷詞的結構和類別。 詞性&#xff08;Part of Speech&#xff09;是詞匯最重要的特性&#xff0c;鏈接詞匯和句法 詞的分類 屈折語&#xff1a;形態分析 分析語&#…

k8s 1.24.x之后如果rest 訪問apiserver

1.由于 在 1.24 &#xff08;還是 1.20 不清楚了&#xff09;之后&#xff0c;下面這兩個apiserver的配置已經被棄用 了&#xff0c;簡單的說就是想不安全的訪問k8s是不可能了&#xff0c;所以只能走安全的訪問方式也就是 https://xx:6443了&#xff0c;所以需要證書。 - --ins…

Git系列:git rm 的高級使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:「stormsha的主頁」…

【go項目01_學習記錄15】

重構MVC 1 Article 模型1.1 首先創建 Article 模型文件1.2 接下來創建獲取文章的方法1.3 新增 types.StringToUint64()函數1.4 修改控制器的調用1.5 重構 route 包1.6 通過 SetRoute 來傳參對象變量1.7 新增方法&#xff1a;1.8 控制器將 Int64ToString 改為 Uint64ToString1.9…

【數據結構】棧和隊列的相互實現

歡迎瀏覽高耳機的博客 希望我們彼此都有更好的收獲 感謝三連支持&#xff01; 1.用棧實現隊列 當隊列中進入這些元素時&#xff0c;相應的棧1中元素出棧順序與出隊列相反&#xff0c;因此我們可以使用兩個棧來使元素的出棧順序相同&#xff1b; 通過將棧1元素出棧&#xff0c;再…

Databend 倒排索引的設計與實現

倒排索引是一種用于全文搜索的數據結構。它的主要功能是將文檔中的單詞作為索引項&#xff0c;映射到包含該單詞的文檔列表。通過倒排索引&#xff0c;可以快速準確地定位到與查詢詞相匹配的文檔列表&#xff0c;從而大幅提高查詢性能。倒排索引在搜索引擎、數據庫和信息檢索系…

matlab實現繪制煙花代碼

下面是一個簡化的示例&#xff0c;它使用MATLAB的繪圖功能來模擬煙花爆炸的視覺效果。請注意&#xff0c;這個示例是概念性的&#xff0c;并且可能需要根據您的具體需求進行調整。 % 初始化參數 num_fireworks 5; % 煙花數量 num_particles_per_firework 200; % 每個煙花…

前端 CSS 經典:3D 漸變輪播圖

前言&#xff1a;無論什么樣式的輪播圖&#xff0c;核心 JS 實現原理都差不多。所以小伙伴們&#xff0c;還是需要了解一下核心 JS 實驗原理的。 效果圖&#xff1a; 實現代碼&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta chars…

MySQL —— 復合查詢

一、基本的查詢回顧練習 前面兩章節整理了許多關于查詢用到的語句和關鍵字&#xff0c;以及MySQL的內置函數&#xff0c;我們先用一些簡單的查詢練習去回顧之前的知識 1. 前提準備 同樣是前面用到的用于測試的表格和數據&#xff0c;一張學生表和三張關于雇員信息表 雇員信息…

優化數據查詢性能:StarRocks 與 Apache Iceberg 的強強聯合

Apache Iceberg 是一種開源的表格格式&#xff0c;專為在數據湖中存儲大規模分析數據而設計。它與多種大數據生態系統組件高度兼容&#xff0c;相較于傳統的 Hive 表格格式&#xff0c;Iceberg 在設計上提供了更高的性能和更好的可擴展性。它支持 ACID 事務、Schema 演化、數據…

leetcode-設計LRU緩存結構-112

題目要求 思路 雙鏈表哈希表 代碼實現 struct Node{int key, val;Node* next;Node* pre;Node(int _key, int _val): key(_key), val(_val), next(nullptr), pre(nullptr){} };class Solution { public: unordered_map<int, Node*> hash; Node* head; Node* tail; int …

普源DHO924示波器OFFSET設置

一、簡介 示波器是電子工程師常用的測量工具之一&#xff0c;能夠直觀地顯示電路信號的波形和參數。普源DHO924是一款優秀的數字示波器&#xff0c;具有優異的性能和易用性。其中OFFSET功能可以幫助用戶調整信號的垂直位置&#xff0c;使波形更清晰易讀。本文將詳細介紹DHO924…

專注于運動控制芯片、運動控制產品研發、生產與銷售為一體的技術型芯片代理商、方案商——青牛科技

深圳市青牛科技實業有限公司,是專注于運 動控制芯片、運動控制產品研發、生產與銷售為一體的技術型 芯片代理商、方案商。現今代理了國產品牌GLOBALCHIP&#xff0c;芯谷&#xff0c;矽普&#xff0c;TOPPOWER等品牌。其中代理品牌TOPPOWER為電源模塊&#xff0c;他們公司通過了…

cherry-pick的強大之處在于哪里

git cherry-pick 的強大之處在于它提供了一種靈活的方式來應用特定的提交到不同的分支上&#xff0c;而無需合并整個分支或拉取其他不需要的提交。以下是 git cherry-pick 的幾個主要優點和強大之處&#xff1a; 選擇性應用提交&#xff1a;你可以挑選一個或多個特定的提交&…

聲音轉文本(免費工具)

聲音轉文本&#xff1a;解鎖語音技術的無限可能 在當今這個數字化時代&#xff0c;信息的傳遞方式正以前所未有的速度進化。從手動輸入到觸控操作&#xff0c;再到如今的語音交互&#xff0c;技術的發展讓溝通變得更加自然與高效。聲音轉文本&#xff08;Speech-to-Text, STT&…

Plant Simulation驗證AGV算法

Plant Simulation驗證算法也是非常高效且直觀的&#xff0c;一直以來波哥在迭代算法的時候圖形顯示這塊都是使用Openframeworks去做&#xff0c;效果還是非常不錯的。 這里簡要介紹一下openFrameworks&#xff0c;openFrameworks是一個開源的、跨平臺的 C 工具包。旨在開發實時…

LeetCode hot100-49-N

236. 二叉樹的最近公共祖先 給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。百度百科中最近公共祖先的定義為&#xff1a;“對于有根樹 T 的兩個節點 p、q&#xff0c;最近公共祖先表示為一個節點 x&#xff0c;滿足 x 是 p、q 的祖先且 x 的深度盡可能大&#xff08;…