0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Andorid系統(tǒng)中binder是什么意思

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:Jasonangel ? 2023-10-07 15:13 ? 次閱讀

binder是什么?可以理解為Andorid系統(tǒng)中的一種進(jìn)程間通信的方式,雖然Android系統(tǒng)基于Linux,但是它并沒有采用Linux自帶的進(jìn)程間通信方式,而是采用了更高效的binder,理解binder對于理解Android系統(tǒng)具有至關(guān)重要的作用。binder原理圖如下:

圖片

Binder通信采用c/s架構(gòu),和Socket一樣,但是稍微復(fù)雜。binder組件包含Client、Server、ServiceManager以及binder驅(qū)動(dòng),其中ServiceManager用于管理系統(tǒng)中的各種服務(wù)。

具體通信過程:Server先向ServiceManager注冊一個(gè)服務(wù),其實(shí)也就是一個(gè)字符串。然后Client從ServiceManager獲取服務(wù),關(guān)鍵字就是注冊的字符串。這樣Client和Server就可以通信。真正的數(shù)據(jù)流是走了底層的Linux內(nèi)核空間的binder驅(qū)動(dòng),但這個(gè)是被封裝的,所以不用關(guān)心真正的binder驅(qū)動(dòng),只管在Client和Server之間調(diào)用函數(shù)收發(fā)數(shù)據(jù)就行。就是服務(wù)端的onTransact函數(shù)和客戶端remote()-》transact(TEST,data, &reply),發(fā)送的數(shù)據(jù)存在data中,返回的數(shù)據(jù)存在reply中。Client和Server都可以收發(fā)數(shù)據(jù)。

安卓系統(tǒng)架構(gòu)圖:

圖片

理解了binder以后,具體分析:binder驅(qū)動(dòng)肯定是在最下面的Linux內(nèi)核中,那么binder的客戶端和服務(wù)器,可以存在在任何地方。舉例:

1、bindder服務(wù)器在app層,客戶端在app層。2、bindder服務(wù)器在native層,客戶端在app層。3、bindder服務(wù)器在app層,客戶端在native層。4、bindder服務(wù)器在native層,客戶端在native層。

以上四種情況都可以。

說的比較抽象,我發(fā)兩篇文章連接,這兩篇文章的代碼我已經(jīng)驗(yàn)證過,可以使用。需要注意的是,APP層的binder由java語言編寫,native層的binder,由C++語言編寫。但其實(shí)接口都很相似。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    5880

    瀏覽量

    135332
  • Andorid
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    6956
  • 系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    1002

    瀏覽量

    21220
收藏 人收藏

    評論

    相關(guān)推薦

    汽車車身控制與舒適性系統(tǒng)檢修:控門鎖系統(tǒng)控制電路#汽車維修

    汽車電子系統(tǒng)
    學(xué)習(xí)電子
    發(fā)布于 :2022年11月20日 15:15:49

    汽車車身控制與舒適性系統(tǒng)檢修:控門鎖系統(tǒng)故障診斷和排除#汽車維修

    汽車電子系統(tǒng)
    學(xué)習(xí)電子
    發(fā)布于 :2022年11月20日 15:16:47

    項(xiàng)目源碼--Android團(tuán)購類客戶端

    數(shù)據(jù)處理模塊(5)Android的Sqlite數(shù)據(jù)庫以及Sqlite數(shù)據(jù)的使用(6)Andorid的定位系統(tǒng)(7)Andorid的數(shù)據(jù)恢復(fù)系統(tǒng)(8)支持了圖片模和文字模式源碼目錄定位團(tuán)
    發(fā)表于 07-15 16:44

    [資料分享]+Android框架揭秘

    服務(wù)框架的層次結(jié)構(gòu) 34810.1.2 java服務(wù)框架各個(gè)類間的相互作用 35110.2 運(yùn)行機(jī)制 35410.2.1 java服務(wù)框架初始化 35510.2.2 binder 35510.2.3
    發(fā)表于 09-26 09:47

    openHarmony IPC數(shù)據(jù)調(diào)用的過程分享

    Binder驅(qū)動(dòng)對應(yīng)的Binder實(shí)體的Binder引用的描述。 }; void*cookie; // 當(dāng)type=BINDER_TYPE_BIN
    發(fā)表于 03-30 09:26

    移植openharmony啟動(dòng)后一直打印binder驅(qū)動(dòng)程序報(bào)錯(cuò)是怎么回事

    在移植openharmony過程,由于添加了新組件,啟動(dòng)后,一直打印binder驅(qū)動(dòng)程序報(bào)錯(cuò),錯(cuò)誤如下所示。01-01 00:00:45.218 1 1 E 00719/Init
    發(fā)表于 05-23 17:27

    WifiStateMachine死鎖導(dǎo)致Binder Thread超限觸發(fā)Watchdog重啟方案

    1、WifiStateMachine死鎖導(dǎo)致Binder Thread超限觸發(fā)Watchdog重啟  系統(tǒng)信息:問題發(fā)生的系統(tǒng)是Android P,跑壓測復(fù)現(xiàn)到,復(fù)現(xiàn)過兩次,目前看起來是google
    發(fā)表于 10-19 18:00

    imx8mm andorid10無法接入GPS,需要對Android10源碼做哪些改動(dòng)?

    你好 我用的是imx8mm andorid10,gps是ttymxc2,cat是可以的。 evk_8mm:/ # 貓 /dev/ttymxc2 $BDGSV
    發(fā)表于 04-25 07:31

    ARM成立ANDORID解決方案中心

    ARM成立ANDORID解決方案中心 ARM公司宣布設(shè)立Android解決方案中心,該中心為設(shè)計(jì)和開發(fā)基于ARM技術(shù)的、并且運(yùn)行在Android(源自O(shè)pen Handset Alliance™的開源平臺)平臺的人
    發(fā)表于 11-18 09:18 ?708次閱讀

    Andorid在平板電腦中的應(yīng)用

    本內(nèi)容介紹了Andorid在平板電腦中的應(yīng)用,詳細(xì)介紹了Andorid再結(jié)構(gòu)及功能和平板電腦的發(fā)展及技術(shù)方面知識
    發(fā)表于 07-18 10:26 ?221次下載
    <b class='flag-5'>Andorid</b>在平板電腦中的應(yīng)用

    異步binder call是如何阻塞整個(gè)系統(tǒng)

    Ramdump:把系統(tǒng)memory某一個(gè)時(shí)間點(diǎn)的數(shù)據(jù)信息保存起來的內(nèi)存崩潰文件,屬于ELF文件格式。 當(dāng)系統(tǒng)發(fā)生致命錯(cuò)誤無法恢復(fù)的時(shí)候,主動(dòng)觸發(fā)抓取ramdump能異?,F(xiàn)場保留下來,這是屬于高級調(diào)試秘籍。
    的頭像 發(fā)表于 05-21 17:52 ?6878次閱讀
    異步<b class='flag-5'>binder</b> call是如何阻塞整個(gè)<b class='flag-5'>系統(tǒng)</b>的

    谷歌發(fā)布Andorid系統(tǒng)的新補(bǔ)丁,面向Android 10的BUG修復(fù)和后臺優(yōu)化

    今天谷歌也是早早就發(fā)布了Andorid系統(tǒng)的新補(bǔ)丁,這是11月份的安全補(bǔ)丁,用來修復(fù)近期曝光的安全漏洞同時(shí)還帶來了面向Android 10的BUG修復(fù)和后臺優(yōu)化。
    的頭像 發(fā)表于 11-05 15:16 ?2579次閱讀

    鋰電池測試箱----德國BINDER賓德的詳細(xì)介紹

    德國賓德BINDER電池測試箱適用于對鋰離子電池和模塊進(jìn)行測試。在和鋰離子電池打交道的時(shí)候,可能存在各種危險(xiǎn)。系統(tǒng)操作員需要對風(fēng)險(xiǎn)進(jìn)行評估,并通過合適的安全方案來應(yīng)對風(fēng)險(xiǎn)。德國BINDER賓德鋰電池
    發(fā)表于 09-27 17:35 ?1820次閱讀
    鋰電池測試箱----德國<b class='flag-5'>BINDER</b>賓德的詳細(xì)介紹

    Android系統(tǒng)啟動(dòng)流程

    Andorid 系統(tǒng)是在嵌入式行業(yè)中廣泛應(yīng)用的系統(tǒng),手機(jī)、平板、機(jī)器人、汽車系統(tǒng)都有使用安卓系統(tǒng)
    的頭像 發(fā)表于 10-07 14:58 ?521次閱讀
    Android<b class='flag-5'>系統(tǒng)</b>啟動(dòng)流程

    如何在AOSP12查看binder調(diào)用信息呢?

    部分APP不會(huì)使用常規(guī)的framework api調(diào)用系統(tǒng)的一些函數(shù)獲取信息,但是如果他自己構(gòu)建binder調(diào)用的信息獲取,最后都會(huì)跑到這個(gè)函數(shù)中去。
    的頭像 發(fā)表于 11-27 09:40 ?711次閱讀