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

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

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

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

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

binder是什么?可以理解為Andorid系統(tǒng)中的一種進(jìn)程間通信的方式,雖然Android系統(tǒng)基于Linux,但是它并沒(méi)有采用Linux自帶的進(jìn)程間通信方式,而是采用了更高效的binder,理解binder對(duì)于理解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ù)。

具體通信過(guò)程:Server先向ServiceManager注冊(cè)一個(gè)服務(wù),其實(shí)也就是一個(gè)字符串。然后Client從ServiceManager獲取服務(wù),關(guān)鍵字就是注冊(cè)的字符串。這樣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層。

以上四種情況都可以。

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

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

    關(guān)注

    18

    文章

    6042

    瀏覽量

    136138
  • Andorid
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

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

    關(guān)注

    1

    文章

    1017

    瀏覽量

    21375
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

    項(xiàng)目源碼--Android團(tuán)購(gòu)類(lèi)客戶端

    數(shù)據(jù)處理模塊(5)Android的Sqlite數(shù)據(jù)庫(kù)以及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è)類(lèi)間的相互作用 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)用的過(guò)程分享

    Binder驅(qū)動(dòng)對(duì)應(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過(guò)程,由于添加了新組件,啟動(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)信息:?jiǎn)栴}發(fā)生的系統(tǒng)是Android P,跑壓測(cè)復(fù)現(xiàn)到,復(fù)現(xiàn)過(guò)兩次,目前看起來(lái)是google
    發(fā)表于 10-19 18:00

    imx8mm andorid10無(wú)法接入GPS,需要對(duì)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ì)和開(kāi)發(fā)基于ARM技術(shù)的、并且運(yùn)行在Android(源自O(shè)pen Handset Alliance™的開(kāi)源平臺(tái))平臺(tái)的人
    發(fā)表于 11-18 09:18 ?779次閱讀

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

    本內(nèi)容介紹了Andorid在平板電腦中的應(yīng)用,詳細(xì)介紹了Andorid再結(jié)構(gòu)及功能和平板電腦的發(fā)展及技術(shù)方面知識(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ù)信息保存起來(lái)的內(nèi)存崩潰文件,屬于ELF文件格式。 當(dāng)系統(tǒng)發(fā)生致命錯(cuò)誤無(wú)法恢復(fù)的時(shí)候,主動(dòng)觸發(fā)抓取ramdump能異常現(xiàn)場(chǎng)保留下來(lái),這是屬于高級(jí)調(diào)試秘籍。
    的頭像 發(fā)表于 05-21 17:52 ?7139次閱讀
    異步<b class='flag-5'>binder</b> call是如何阻塞整個(gè)<b class='flag-5'>系統(tǒng)</b>的

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

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

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

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

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

    Andorid 系統(tǒng)是在嵌入式行業(yè)中廣泛應(yīng)用的系統(tǒng),手機(jī)、平板、機(jī)器人、汽車(chē)系統(tǒng)都有使用安卓系統(tǒng)
    的頭像 發(fā)表于 10-07 14:58 ?636次閱讀
    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 ?874次閱讀