999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于銀河銳華終端操作系統(tǒng)的C++適配層研究

2023-10-23 02:58:18麥秀青
計算機時代 2023年10期
關(guān)鍵詞:方法

王 千,麥秀青,陸 平

(中國電子科技集團公司第三十二研究所基礎(chǔ)軟件部,上海 201808)

0 引言

近年來,我國與歐美一些國家之間以操作系統(tǒng)為核心的技術(shù)生態(tài)體系競爭日益顯現(xiàn)[1-2]。Android 從移動設(shè)備、穿戴設(shè)備、智能家居全方位打造的生態(tài)圈已經(jīng)相當(dāng)成熟[3],在我國的移動終端市場占有極大的比例,甚至一些安全要求高的專用領(lǐng)域也在使用Android系統(tǒng),如北斗導(dǎo)航、警用搜救、軍用作戰(zhàn)等[4-5],這無疑在安全性、知識產(chǎn)權(quán)等多方面都存在巨大風(fēng)險[6]。在此背景下,銀河銳華終端操作系統(tǒng)(YROS)就成為了很好的國產(chǎn)化替代方案。

銀河銳華終端操作系統(tǒng)是國防科技大學(xué)與中國電子科技集團第三十二研究所自主研發(fā)的智能移動終端操作系統(tǒng),使用Linux+HTML5 的實現(xiàn)方案,適用于智能手持、平板、可穿戴等移動終端設(shè)備[7]。

銀河銳華終端操作系統(tǒng)應(yīng)用是使用HTML5+JavaScript+CSS 的模式開發(fā)的,這種開發(fā)模式具有界面適配靈活、可移植性強的特點[8-10],但是用于開發(fā)移動終端應(yīng)用也存在較多問題,諸如運行效率較低、可調(diào)試性差、對底層的操控性差等[11]。此外,由于一些專用領(lǐng)域已在使用基于Android開發(fā)的軟件,這些Android應(yīng)用多為Java+Native 模式開發(fā),即有很多對性能要求較高的核心功能是通過JNI 的方式在Native 層實現(xiàn)的[12-13],而將這部分代碼通過JavaScript 的方式移植到銀河銳華終端操作系統(tǒng)上往往是不現(xiàn)實的。若能夠提供一種切實可行的移植方案,則能加快國產(chǎn)化移動操作系統(tǒng)的普及以及生態(tài)的建立。

綜上所述,在銀河銳華終端操作系統(tǒng)上實現(xiàn)應(yīng)用的C++/JavaScrip 混合開發(fā)是非常有必要的。基于此,本文進行基于銀河銳華終端操作系統(tǒng)的C++適配層研究,通過對系統(tǒng)框架層與系統(tǒng)接口進行擴展,實現(xiàn)C++與JavaScript的交互調(diào)用。

1 C++適配層框架

基于銀河銳華終端操作系統(tǒng)的C++適配層通過插件的方式,動態(tài)加載按照特定方式實現(xiàn)的功能性C++插件庫文件,并以系統(tǒng)接口的形式實現(xiàn)JavaScript 與C++插件庫之間的交互調(diào)用。

在銀河銳華終端操作系統(tǒng)的框架層拓展插件庫模塊管理器與插件庫對象管理器。其中插件庫模塊管理器對所有的C++插件庫以模塊的形式進行動態(tài)管理;而插件庫對象管理器則隸屬于每一個應(yīng)用進程,用于JavaScript對C++插件庫的具體調(diào)用。

C++適配層的架構(gòu)圖如圖1所示。

圖1 C++適配層架構(gòu)圖

1.1 C++插件庫

C++插件庫需要按照特定的方式進行開發(fā)。

C++適配層提供了一個插件庫的基類,C++插件庫應(yīng)繼承該基類根據(jù)具體功能需求實現(xiàn)一個橋接類,該橋接類將作為C++插件庫接收J(rèn)avaScrip 調(diào)用指令的入口。橋接類的主要功能包括插件的初始化與插件的方法調(diào)用。繼承插件庫基類實現(xiàn)橋接類的關(guān)鍵在于調(diào)用方法的重載實現(xiàn),調(diào)用方法接收J(rèn)avaScrip 傳遞的操作指令以及指令參數(shù),根據(jù)指令進行相應(yīng)操作決策,并將執(zhí)行的最終結(jié)果返回到JavaScrip。由于指令參數(shù)在數(shù)量以及類型上均存在不確定性,因此在C++插件庫基類聲明了一個字符串作為指令參數(shù),應(yīng)用開發(fā)時,可以根據(jù)實際情況在傳入時對參數(shù)列表進行編碼,并在C++適配層中進行相應(yīng)的解碼工作,以保證參數(shù)的正確傳遞。

C++插件庫需要按照約定聲明一個全局插件實例,該實例將在C++插件庫加載時被初始化,該實例的指針將向外提供,用于對插件庫中的方法進行調(diào)用。

此外,C++適配層還為C++插件庫提供一個接口用于其對JavaScript的回調(diào)。在該回調(diào)方法中,將通過回調(diào)ID惟一標(biāo)示每一次回調(diào)過程。

1.2 插件庫模塊管理器

插件庫模塊管理器將每個C++插件庫作為一個模塊進行動態(tài)管理,插件模塊中保存有系統(tǒng)調(diào)用該C++插件庫時所需的信息,具體如下:

插件庫句柄:用于保存C++插件庫的句柄。

插件庫橋接類實例指針:用于保存橋接類的實例。

回調(diào)方法指針:用于保存C++插件庫發(fā)起對JavaScript調(diào)用的入口方法。

注冊回調(diào)指針方法:用于系統(tǒng)向插件庫中進行回調(diào)方法的注冊。

刪除回調(diào)指針方法:用于系統(tǒng)移出插件庫中的回調(diào)方法。

調(diào)用方法:用于系統(tǒng)發(fā)起對C++插件庫的調(diào)用。

每當(dāng)應(yīng)用使用JavaScript 發(fā)起加載一個C++插件庫的請求時,系統(tǒng)為該插件庫動態(tài)生成插件模塊進行保存;當(dāng)JavaScript 進行C++插件庫功能調(diào)用時,插件庫模塊管理器將通過C++插件庫的句柄進行方法調(diào)用;若C++插件庫需要進行回調(diào),需要JavaScript 首先向插件庫中注冊回調(diào)方法指針進行保存,插件庫通過插件模塊中保存的回調(diào)方法指針進行回調(diào)。

1.3 插件庫對象管理器

每個應(yīng)用將獨立擁有一個專屬于自己的插件庫對象管理器,插件庫對象管理器向應(yīng)用提供用于與C++插件庫進行交互的系統(tǒng)接口,這些接口主要包括:

C++插件庫初始化接口(init):用于動態(tài)加載指定C++插件庫,創(chuàng)建該庫的模塊實例;

C++插件庫調(diào)用接口(exec):用于調(diào)用C++插件庫中的指定功能;

注冊回調(diào)方法接口(addListener):用于注冊接收并處理C++插件庫回調(diào)事件的方法;

移除回調(diào)方法接口(removeListener):用于停止接收C++插件庫中的回調(diào)事件;

檢測庫是否加載接口(isloadedlibrary):用于檢測某指定C++插件庫是否被成功加載;

卸載C++插件庫接口(unloadlibrary):用于卸載指定的C++插件庫。

1.4 應(yīng)用與C++插件庫的交互調(diào)用

C++適配層通過拓展系統(tǒng)JavaScript 接口向應(yīng)用提供與C++插件庫的交互調(diào)用功能。

首先應(yīng)用通過初始化接口(init)加載指定路徑的C++插件庫,并為該C++插件庫指定一個惟一的標(biāo)示符;再通過調(diào)用接口(exec)指定操作字段,調(diào)用C++插件庫的指定功能;應(yīng)用注冊回調(diào)事件處理方法(addListener),用于接收處理C++插件庫的回調(diào)事件,回調(diào)事件中包括用于標(biāo)示每個回調(diào)的惟一ID,以及傳遞的參數(shù),回調(diào)事件處理方法通過識別不同的回調(diào)ID來進行不同的處理;當(dāng)應(yīng)用與C++插件庫的交互調(diào)用結(jié)束時,通過調(diào)用移除回調(diào)方法接口(removeListener)結(jié)束對C++插件庫回調(diào)的監(jiān)聽,并最后通過調(diào)用卸載庫接口卸載指定C++插件庫。應(yīng)用與C++插件庫的交互流程圖如圖2所示。

圖2 應(yīng)用與C++插件庫交互調(diào)用流程圖

2 應(yīng)用C++/JavaScript混合開發(fā)實現(xiàn)

在銀河銳華終端操作系統(tǒng)中增加C++適配層框架后,便能夠?qū)︺y河銳華終端操作系統(tǒng)應(yīng)用進行C++/JavaScript 開發(fā)。本章節(jié)將使用該模式進行一個簡單加減法計算應(yīng)用的開發(fā),其中加減法的運算邏輯功能在C++插件庫中設(shè)置,而應(yīng)用通過JavaScript使用系統(tǒng)接口實現(xiàn)對C++插件庫的功能調(diào)用。

2.1 C++插件庫的實現(xiàn)

應(yīng)用通過繼承C++適配層提供的基類按照功能需求實現(xiàn)自己的C++插件庫。該插件類的實現(xiàn)關(guān)鍵在于對方法Execute的重載實現(xiàn),該方法的核心在于通過對指令參數(shù)的解析來選擇需要執(zhí)行的處理流程,并解析傳入?yún)?shù)進行相應(yīng)的處理。

在該實現(xiàn)過程中,使用“ADD”、“MIN 作為操作指令,并將參數(shù)列表按照J(rèn)SON 格式進行解析;在進行相應(yīng)的功能操作后將結(jié)果同樣進行JSON封裝后返回。

Calculator.h實現(xiàn)的偽代碼如“代碼1”所示。

2.2 應(yīng)用與C++插件庫交互調(diào)用的實現(xiàn)

應(yīng)用通過插件庫對象管理器加載C++插件庫,并對C++插件庫進行調(diào)用,添加回調(diào)監(jiān)聽器來監(jiān)聽并處理C++插件庫中的回調(diào)事件。

一個簡單的對上述加、減運算C++插件庫的交互JavaScript 示例如代碼3 所示。首先應(yīng)用需要實例化一個插件庫對象管理器,并調(diào)用初始化接口對C++插件庫進行初始化;然后通過注冊回調(diào)方法接口注冊一個回調(diào)方法;最后將參數(shù)進行JSON 格式封裝后通過C++插件庫調(diào)用接口進行具體功能的調(diào)用。

3 結(jié)束語

基于銀河銳華終端操作系統(tǒng)的C++適配層通過擴展系統(tǒng)框架與系統(tǒng)接口,實現(xiàn)JavaScript與C++的交互調(diào)用,從而使銀河銳華終端操作系統(tǒng)應(yīng)用的開發(fā)能夠使用C++/JavaScript 混合進行。這就使銀河銳華終端操作系統(tǒng)應(yīng)用的開發(fā)更加靈活與便捷;也使更多的Android 應(yīng)用能夠更方便地移植到銀河銳華終端操作系統(tǒng)上。這無疑能大大加快專用領(lǐng)域的移動操作系統(tǒng)國產(chǎn)化進程。

猜你喜歡
方法
中醫(yī)特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數(shù)學(xué)教學(xué)改革的方法
河北畫報(2021年2期)2021-05-25 02:07:46
化學(xué)反應(yīng)多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學(xué)習(xí)方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 国产丝袜一区二区三区视频免下载| 99国产精品一区二区| 91小视频在线| 亚洲第一成年免费网站| 色偷偷综合网| 国产精品私拍99pans大尺度| 久一在线视频| 免费中文字幕一级毛片| 中文字幕在线看| 国产精品偷伦在线观看| 中文字幕人妻av一区二区| 欧美在线国产| 国产自在线拍| 国产成人一二三| 丰满人妻中出白浆| 国产免费高清无需播放器| 午夜性刺激在线观看免费| 99久久精品国产自免费| 亚洲天堂精品视频| 日韩在线中文| 在线看片中文字幕| 久久网欧美| 免费激情网站| 亚洲天堂视频在线观看免费| 亚洲精品无码抽插日韩| 亚洲91精品视频| 波多野结衣无码AV在线| 久久国产av麻豆| 婷婷中文在线| www.精品视频| 日韩毛片基地| 国产女人水多毛片18| 99这里只有精品在线| 999在线免费视频| 精品国产自在现线看久久| 欧美日韩国产成人高清视频| 亚洲日韩高清在线亚洲专区| 国产综合精品一区二区| 亚洲69视频| 色精品视频| 黄色网站在线观看无码| 在线播放国产99re| 国产成人综合网| 精品午夜国产福利观看| 日本伊人色综合网| 国产欧美日韩综合在线第一| 亚洲第一中文字幕| 亚洲第一区在线| 人妻免费无码不卡视频| 国产人妖视频一区在线观看| 日韩精品亚洲人旧成在线| 亚洲男人的天堂在线观看| 亚洲AV无码不卡无码| 国产成熟女人性满足视频| 欧美成人日韩| 久青草国产高清在线视频| 国内精自线i品一区202| 日本国产一区在线观看| 亚洲伊人久久精品影院| 免费一极毛片| 2021国产精品自产拍在线| 日韩东京热无码人妻| 中国一级毛片免费观看| 国产特级毛片aaaaaa| 亚洲第一视频网| 欧美成人免费| 午夜精品国产自在| 国产精品美女免费视频大全 | 女人18毛片一级毛片在线| 国产欧美成人不卡视频| 久热这里只有精品6| 国产青青操| 黄色福利在线| 国产全黄a一级毛片| 在线观看精品国产入口| 久久久国产精品无码专区| 伊人AV天堂| 91精品人妻互换| 亚洲美女操| 成人精品午夜福利在线播放| 高清欧美性猛交XXXX黑人猛交 | 亚洲第一精品福利|