国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

怎么做網(wǎng)盤(pán)搜索引擎網(wǎng)站抖音怎么推廣

怎么做網(wǎng)盤(pán)搜索引擎網(wǎng)站,抖音怎么推廣,內(nèi)蒙古網(wǎng)站建設(shè),制作網(wǎng)站的公司我一直覺(jué)得,現(xiàn)代計(jì)算機(jī)不是一門(mén)科學(xué),起碼快算不上一門(mén)理科科學(xué)。上上下下全是人造,左左右右全是生意,用管理學(xué),經(jīng)濟(jì)學(xué)去學(xué)計(jì)算機(jī),也許更看得懂很多問(wèn)題。HAL就是一個(gè)典型例子。 傳統(tǒng)Linux繞開(kāi)了微軟的霸權(quán)…

我一直覺(jué)得,現(xiàn)代計(jì)算機(jī)不是一門(mén)科學(xué),起碼快算不上一門(mén)理科科學(xué)。上上下下全是人造,左左右右全是生意,用管理學(xué),經(jīng)濟(jì)學(xué)去學(xué)計(jì)算機(jī),也許更看得懂很多問(wèn)題。HAL就是一個(gè)典型例子。

傳統(tǒng)Linux繞開(kāi)了微軟的霸權(quán),但是又面臨GPL要開(kāi)源的尷尬。谷歌為了迎合硬件資本家封閉壟斷發(fā)財(cái)?shù)脑竿?#xff0c;所以搞了HAL這個(gè)概念。將原來(lái)在內(nèi)核態(tài)的驅(qū)動(dòng),移了大部分核心內(nèi)容到用戶態(tài),這樣就可以封閉,可以壟斷賺錢(qián)。然后因?yàn)镠AL這玩意只在安卓上有,配合了安卓的硬件公司反過(guò)來(lái)又被谷歌綁架,這樣一環(huán)套一環(huán)吃錢(qián)。一開(kāi)始用Java,吸引廣大的Java生態(tài)碼農(nóng)進(jìn)場(chǎng)。現(xiàn)在又搞Kotlin想把碼農(nóng)套牢。搞這幾出,是真的只是科學(xué)嗎?當(dāng)然不是,歸根結(jié)底大部分還是生意。

我對(duì)安卓接觸不久,有些理解不一定對(duì),大家用批判的眼光看就好。有什么錯(cuò)誤還請(qǐng)指正。

一 安卓硬件接口的演化

傳統(tǒng)Linux怎么調(diào)用硬件?就是ko。。。幾個(gè)函數(shù)搞定。Android復(fù)雜了很多,所以整理一下。

在安卓中,除了上面講的HAL,還有一個(gè)就是Framework,這個(gè)就是app的framework,要理解安卓驅(qū)動(dòng)層,這兩點(diǎn)繞不開(kāi)。為了適配framework,安卓把硬件是作為服務(wù)service來(lái)使用。在Android中,這種結(jié)構(gòu)也進(jìn)化了很多代。

1 首先是傳統(tǒng)HAL(Legacy HAL)

在內(nèi)核8.0以前使用。用戶態(tài)的so貌似保存在/system/lib64,這個(gè)版本是直接讀取硬件so,比較原始暴力。

App->Service->AIDL->Server->JNI->HAL so->kernel driver

2 現(xiàn)代HAL(Conventional HAL)

使用Iibhardware來(lái)管理so,同時(shí)下層的驅(qū)動(dòng)使用一個(gè)單獨(dú)的分區(qū),so全部集成到vender.img,和system解綁。要找尋so通過(guò)libhardware這個(gè)中間層。編譯時(shí)要提供一個(gè)Android.bp文件。

App->Service->AIDL->Server->JNI->Iibhardware->so(vender.img)

3 HIDL

在安卓8之后,開(kāi)始使用HIDL,總的來(lái)說(shuō)就是將HAL封裝成服務(wù),完全就是rpc的玩法。

HIDL編譯后,會(huì)生成Android.bp(這個(gè)有時(shí)間再看看)。最后會(huì)有兩個(gè)so,一個(gè)so,放在system分區(qū);一個(gè)impl.so,放在vendor分區(qū),以此實(shí)現(xiàn)framework和驅(qū)動(dòng)服務(wù)的分離??蛻舳耸褂们罢?#xff0c;服務(wù)端使用后者。服務(wù)端包含impl.so之后,會(huì)生成一個(gè)可執(zhí)行程序,就可以作為一個(gè)service單獨(dú)運(yùn)行??蛻舳税藄o可以直接調(diào)用服務(wù)。

分為直通式和綁定式。有大神說(shuō)直通式就是雖然使用HAL,但還是在一個(gè)進(jìn)程,綁定式是使用HAL,但是數(shù)據(jù)通過(guò)Binder轉(zhuǎn)發(fā),上面說(shuō)的應(yīng)該就是綁定式。直通式和綁定式也都是HAL生成的代碼中控制的。比如:

extern "C" IXXX* HIDL_FETCH_IXXX(const char* name);

AIDL和HIDL的中間就是安卓的framework。

App->AIDL->Service->HIDL->HAL Service->so(vender.img)

示例1,大概就是下面這種結(jié)構(gòu)

Power.c往下是通過(guò)systemcall,這部分代碼是封在so里面的。

PowerManagerService.cpp是封裝下層的so,然后對(duì)上提供HIDL的接口。

PowerManagerService.java對(duì)下調(diào)用HIDL的接口,對(duì)上提供AIDL的接口。

DisplayPowerState.java調(diào)用AIDL的接口。

大概是這樣。

示例2,下面這張圖更細(xì)一點(diǎn):

4 全AIDL。AIDL for HAL

(andorid11開(kāi)始)。

App->AIDL->HAL Service->so(vender.img)

二 看一下AIDL和HIDL。

最新的HAL主要涉及到的主要是兩個(gè)接口,AIDL和HIDL。

首先是AIDL,Android Interface definition language??促Y料說(shuō)是android中兩個(gè)app交互的IPC方式。首先IPC有很多種,管道,域套接字,message,共享內(nèi)存,問(wèn)題是谷歌為什么要搞出來(lái)一套新的呢?

從一個(gè)AIDL的例子可以看到:

// IMyRemoteService.aidl
interface IMyRemoteService {int getValue();void setValue(int value);
}

一邊使用:

private final IMyRemoteService.Stub mBinder = new IMyRemoteService.Stub()

另一邊使用:

mRemoteService = IMyRemoteService.Stub.asInterface(iBinder);

在接口中主要定義的還是函數(shù),也就是說(shuō)比管道這些更上層,更適合Java的調(diào)用。就算上層函數(shù)調(diào)用,其實(shí)也很多方式,比如COM,soap,rpc都是干這事的。安卓應(yīng)該還是用binder進(jìn)行統(tǒng)一管理了吧,畢竟是一個(gè)單獨(dú)的服務(wù)。

HIDL

主要還是提供底層cpp驅(qū)動(dòng)和上層java的通信。hal文件定義如下:

// ILedService.hal
package android.hardware.led;interface ILedService {int getLedState();void setLedState(int state);
};

它的C++語(yǔ)法稍怪:

#include <android/hardware/led/1.0/ILedService.h>
#include <hidl/LegacySupport.h>using android::hardware::led::V1_0::ILedService;
using android::hardware::Return;
using android::hardware::Void;class LedService : public ILedService {
public:LedService() {}Return<int32_t> getLedState() override {return mLedState;}//略
};int main() {return android::hardware::configureRpcThreadpool(1, true) == android::OK &&android::hardware::registerAsService(new LedService()) == android::OK? 0: 1;
}

Java側(cè)的倒是差不多。

在Binder的使用中,Server端繼承BnInterface, Client端繼承BpInterface。我接觸的工程中,一邊叫做BP側(cè),那么應(yīng)該就是app側(cè),BN側(cè)那么就是服務(wù)端了。

最后,寫(xiě)完的service可以通過(guò)rc文件,作為一個(gè)系統(tǒng)服務(wù)。

參考:

針對(duì) Android 進(jìn)行開(kāi)發(fā) ?|? Android 開(kāi)發(fā)者 ?|? Android Developers

https://source.android.com/docs/core/architecture?hl=zh-cn

https://source.android.com/docs/core/architecture/aidl/aidl-hals?hl=zh-cn

AIDL for HALs - Code Inside Out

AIDL for HALs實(shí)戰(zhàn)_hidl會(huì)被aidl代替-CSDN博客

Android HIDL 介紹學(xué)習(xí)和實(shí)戰(zhàn)應(yīng)用-CSDN博客

AIDL for HALs實(shí)戰(zhàn)_hidl會(huì)被aidl代替-CSDN博客

HIDL 原理及使用詳解-CSDN博客

Android上層與驅(qū)動(dòng)交互完整篇(三)HIDL服務(wù)_android.bp hidl_interface-CSDN博客

Android HIDL學(xué)習(xí)(2) ---- HelloWorld - 簡(jiǎn)書(shū)

http://aloenet.com.cn/news/36759.html

相關(guān)文章:

  • 網(wǎng)站設(shè)計(jì)第一步怎么做今日國(guó)內(nèi)新聞10則
  • 站長(zhǎng)平臺(tái)有哪些百度平臺(tái)營(yíng)銷軟件
  • 建筑專業(yè)網(wǎng)站文明seo技術(shù)教程網(wǎng)
  • wordpress 添加icp舟山百度seo
  • 網(wǎng)站右邊跳出的廣告怎么做可以推廣的軟件有哪些
  • 惠民網(wǎng)站建設(shè)淺議網(wǎng)絡(luò)營(yíng)銷論文
  • 休閑旅游產(chǎn)品營(yíng)銷網(wǎng)站的建設(shè)策略app運(yùn)營(yíng)
  • 深圳高端網(wǎng)站開(kāi)發(fā)網(wǎng)絡(luò)營(yíng)銷的優(yōu)勢(shì)有哪些?
  • 外貿(mào)網(wǎng)站推廣實(shí)操手冊(cè)2023年新聞小學(xué)生摘抄
  • 怎么建立自己的網(wǎng)站平臺(tái)多少錢(qián)南寧seo優(yōu)化公司排名
  • 黃江鎮(zhèn)做網(wǎng)站在線生成個(gè)人網(wǎng)站源碼
  • 自己做網(wǎng)站 發(fā)布視頻北京自動(dòng)seo
  • 建設(shè)部舉報(bào)網(wǎng)站西安網(wǎng)站建設(shè)方案優(yōu)化
  • 凡科建站可以多人協(xié)作編輯嗎北京百度快照推廣公司
  • 渭南做網(wǎng)站的公司河北高端網(wǎng)站建設(shè)
  • 網(wǎng)站開(kāi)發(fā)人員要求科技網(wǎng)站建設(shè)公司
  • 綁定網(wǎng)站品牌策劃與推廣方案
  • 建一個(gè)購(gòu)物網(wǎng)站需要多少錢(qián)邯鄲今日頭條最新消息
  • 免費(fèi)個(gè)人網(wǎng)站建設(shè)可口可樂(lè)軟文營(yíng)銷案例
  • 惠州網(wǎng)站開(kāi)發(fā)公司網(wǎng)頁(yè)
  • 建網(wǎng)站怎么避免備案百度推廣課程
  • 可以做哪些網(wǎng)站我想自己建立一個(gè)網(wǎng)站
  • 做網(wǎng)站怎么找優(yōu)質(zhì)客戶軟文寫(xiě)作技巧有哪些
  • 公安內(nèi)網(wǎng)網(wǎng)站建設(shè)方案站群seo
  • 個(gè)人網(wǎng)站備案需要哪些資料網(wǎng)站單向外鏈推廣工具
  • 做網(wǎng)站 單頁(yè)數(shù)量網(wǎng)絡(luò)營(yíng)銷的步驟
  • 網(wǎng)站建設(shè)費(fèi)用細(xì)項(xiàng)廣州seo推廣公司
  • 中英網(wǎng)站的設(shè)計(jì)app開(kāi)發(fā)費(fèi)用一覽表
  • 上海網(wǎng)站建設(shè)百家號(hào)廣告投放推廣平臺(tái)
  • 網(wǎng)站建設(shè)石家莊今天國(guó)際新聞大事