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

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

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

HDC技術(shù)分論壇之ArkCompiler原理解析

HarmonyOS開發(fā)者 ? 來源:HarmonyOS開發(fā)者 ? 作者:xianyuqiang ? 2021-10-29 10:32 ? 次閱讀

作者:xianyuqiang 編譯器首席架構(gòu)師

ArkCompiler(方舟編譯器)是組件化、可配置的多語言編譯和運行平臺,它既能支撐單一語言運行環(huán)境,也能支撐多種語言組合的運行環(huán)境。它目前主要支持的語言是JavaScript、TypeScript和Java。

一、概述

HarmonyOS的設(shè)計目標(biāo),是成為打通手機、PC、平板、電視、車機和智能穿戴等多種設(shè)備的統(tǒng)一操作系統(tǒng)。

其應(yīng)用開發(fā)有多編程語言、多范式的支持需求,其中高級編程語言包括JavaScript、TypeScript、Java等,開發(fā)范式包括聲明式UI范式、分布式編程范式。我們需要相應(yīng)的編譯器和運行時來支撐這些高級應(yīng)用編程語言的高效開發(fā)、部署和運行。使應(yīng)用開發(fā)者能使用同一套開發(fā)框架實現(xiàn)一次開發(fā)多端部署運行。并且讓使用HarmonyOS設(shè)備的用戶,能獲得統(tǒng)一的用戶體驗。于是,ArkCompiler應(yīng)運而生。

1. 目標(biāo)

ArkCompiler是為支持多種編程語言、多種芯片平臺的聯(lián)合編譯、運行而設(shè)計的統(tǒng)一編程平臺,其設(shè)計目標(biāo)是提供一個語言可插拔、組件可配置的多語言編譯器運行時。

語言可插拔:設(shè)計架構(gòu)上支持多種語言接入,ArkCompiler有能力提供具有高效執(zhí)行性能且具有跨語言優(yōu)勢的多語言運行時,也可以在小設(shè)備上提供高效輕量的單一語言運行時。

組件可配置:ArkCompiler具有豐富的編譯器運行時組件系統(tǒng)。通過定制化配置編譯運行時的語言和組件,以支持手機、PC、平板、電視、汽車和智能穿戴等多種設(shè)備上不同的性能和內(nèi)存需求。

2. 架構(gòu)

如圖2所示,ArkCompiler包含編譯器、工具鏈、運行時等關(guān)鍵部件。ArkCompiler工具鏈實現(xiàn)對應(yīng)語言的前端編譯器,將前端開發(fā)框架的高級語言編譯成統(tǒng)一的字節(jié)碼/二進制文件。根據(jù)不同的應(yīng)用場景,通過ArkCompiler運行時解釋器解釋執(zhí)行字節(jié)碼文件或JIT/AOT編譯器編譯執(zhí)行對應(yīng)體系架構(gòu)的優(yōu)化機器碼,從而提升運行效率和啟動性能。

0a082d6c-385b-11ec-82a8-dac502259ad0.png

圖2 ArkCompiler運行原理

下面,本文將從前端編譯器,運行時展開介紹。

二、前端編譯器

前端編譯器是高級語言通往語言運行時的橋梁,它按照語言規(guī)范,將編程語言表達(dá)的語義翻譯為運行時能夠理解的介質(zhì),在ArkCompiler解決方案里,這體現(xiàn)為ArkCompiler字節(jié)碼。即圖3中的ArkCompiler Bytecode(簡稱abc)。部分語言,也支持通過ArkCompiler的AOT Compiler組件直接將字節(jié)碼編譯成對應(yīng)體系架構(gòu)的優(yōu)化機器碼。

圖3 ArkCompiler前端

1. 前端編譯器功能

在需要支持多種語言的ArkCompiler中,前端編譯器的主要作用是在Host側(cè)把源碼生成字節(jié)碼文件,這樣的優(yōu)點:

利用Host強大的計算能力,能夠在運行前做更多更復(fù)雜的算法優(yōu)化,減少運行時的工作,提高運行效率。

相比常見的JavaScript運行時,可以把端側(cè)的編譯解析過程提前到發(fā)布前,提升程序的啟動性能。

編譯優(yōu)化

ArkCompiler提供對TypeScript(TS)的原生支持。在前端編譯TS源碼時,會利用TS的顯式類型聲明,應(yīng)用類型推導(dǎo)進行類型優(yōu)化,并且將推導(dǎo)出的類型信息通過字節(jié)碼文件保留至運行時,由此運行時可以直接利用類型信息執(zhí)行快速路徑。

此外,靜態(tài)的類型分析和推導(dǎo)也使得TS AOT (Ahead of Time) Compiler成為可能,靜態(tài)分析得到的類型信息幫助AOT Compiler直接編譯生成高質(zhì)量的機器碼,使得TS源碼可以直接以機器碼形式運行,進一步提升運行性能。

0b595df8-385b-11ec-82a8-dac502259ad0.png

圖5 編譯優(yōu)化

2. ArkCompiler字節(jié)碼

ArkCompiler字節(jié)碼(ArkCompiler Bytecode)是運行時解釋器能夠解析運行的一種硬件和平臺無關(guān)的中間表現(xiàn)形式,以緊湊、可擴展、多語言支持作為設(shè)計目標(biāo)。屏蔽設(shè)備的差異,支持應(yīng)用的跨設(shè)備分發(fā)、部署和運行。ArkCompiler采用的是基于寄存器的字節(jié)碼格式。每個寄存器的寬度為64位,最多支持65536個寄存器。

(1)寄存器

ArkCompiler寄存器要求能夠放置對象引用和基本類型,寬度采用64位。寄存器的作用域是以函數(shù)棧幀為范圍。在字節(jié)碼指令編碼中,寄存器索引支持4位、8位以及16位的變長編碼,在支持方法內(nèi)不同數(shù)量范圍的寄存器尋址的同時減小字節(jié)碼尺寸。

(2)累加寄存器

累加寄存器,俗稱累加器,是一個特殊的寄存器,被指令隱含使用。使用累加器的主要目的是在不損失性能的前提下改善指令編碼密度。在ArkCompiler字節(jié)碼中,上一條指令利用累加器作為結(jié)果輸出,下一條指令將此累加器作為輸入,可以有效改善指令密度,減小字節(jié)碼的尺寸。同時,通過在生成字節(jié)碼階段的數(shù)據(jù)流及控制流分析和優(yōu)化,前端編譯器可以有效消除冗余的累加器load和store操作。

(3)基本類型支持

ArkCompiler字節(jié)碼提供對32位(i32)和64位(i64)整型數(shù)值的寄存器操作支持,8位和16位數(shù)值通過擴展到32位來模擬。支持對IEEE-754雙精度浮點f64值的寄存器的操作,f32數(shù)據(jù)類型(IEEE-754單精度)也通過轉(zhuǎn)換為f64值進行模擬?;緮?shù)據(jù)類型不需要虛擬機進行記錄、跟蹤和推導(dǎo),而是通過操作不同基本數(shù)據(jù)類型的專用字節(jié)碼進行表示,包括整數(shù)值的符號性。為了更有效地利用字節(jié)碼的指令空間,設(shè)計中對高頻使用的數(shù)據(jù)類型和操作引入更多的專用字節(jié)碼,而對低頻使用的數(shù)據(jù)類型和操作采用更通用的字節(jié)碼。

(4)語言相關(guān)類型支持

ArkCompiler根據(jù)其執(zhí)行的語言支持層次化的類型系統(tǒng)。這樣,創(chuàng)建或者從常量池加載的字符串、數(shù)組、異常對象等,都是含有相應(yīng)層次關(guān)系的、和具體語言規(guī)范相匹配的數(shù)據(jù)對象。

(5)動態(tài)類型語言支持

為支持類似JS/TS的動態(tài)類型語言,ArkCompiler通過特殊的標(biāo)記值(“Any”)表示動態(tài)類型值,其包裝了值本身和相應(yīng)的類型信息(包括基本類型和對象引用類型數(shù)據(jù))。虛擬寄存器的寬度可以容納“Any”值。同時,在動態(tài)類型語言代碼的執(zhí)行上下文中,也可能使用到包含類型檢查指令在內(nèi)的靜態(tài)確定類型指令序列,以表示動態(tài)類型相關(guān)語義。

三、ArkCompiler運行時

ArkCompiler運行時,如圖6所示,被分為了核心運行時(Core Runtime)和各自語言獨立的運行時插件(Runtime Plugin)。

核心運行時主要由運行時的公共核心組件構(gòu)成,包含定義字節(jié)碼格式和行為的Public ISA模塊,對接系統(tǒng)調(diào)用的ArkCompiler Base Platform模塊, 支持Debugger、Profiler等工具的Common Tool模塊和承載字節(jié)碼文件處理的ArkCompiler File模塊等。也提供了可選的語言無關(guān)的解釋器、內(nèi)存管理、編譯器和并發(fā)等基礎(chǔ)設(shè)施組件。

各語言運行時插件則包含各語言特有的特性實現(xiàn)以及標(biāo)準(zhǔn)庫來支撐語言的運行行為符合對應(yīng)的語言規(guī)范,由各語言按需定制。

1. 執(zhí)行引擎

ArkCompiler運行時執(zhí)行引擎有多種組件,包括解釋器、JIT編譯器和AOT編譯器,如圖7所示。

0c264570-385b-11ec-82a8-dac502259ad0.png

圖7 執(zhí)行引擎結(jié)構(gòu)

(1)解釋器

解釋器可直接運行前端編譯器輸出的字節(jié)碼。

(2)JIT Compiler

JIT編譯器一般需要運行時執(zhí)行代碼一段時間,Profiler生成了profiling數(shù)據(jù)之后,根據(jù)profiling數(shù)據(jù)即時編譯生成高質(zhì)量的機器碼(上圖Optimized Code II)來運行。(JIT可以根據(jù)代碼執(zhí)行情況實時編譯生成最優(yōu)機器指令)

(3)AOT Compiler

AOT編譯器則是在運行前根據(jù)靜態(tài)信息直接編譯生成高質(zhì)量的目標(biāo)機器碼(上圖Optimized Code I)在設(shè)備上運行,PGO(Profile Guided Optimization)配置文件可以作為AOT Compiler的輸入之一,給AOT Compiler一些指示,比如編譯的范圍以及編譯某個方法時使用哪些優(yōu)化技術(shù)。通常這種PGO配置文件由在同等規(guī)格的設(shè)備上經(jīng)過運行時profiling或者大數(shù)據(jù)分析生成。

無論是JIT 編譯器生成的優(yōu)化代碼,還是AOT編譯器生成的優(yōu)化代碼,通常都是在一定優(yōu)化假設(shè)或者優(yōu)化推斷的前提下生成的。如果這個前提在運行時不成立,則需要進行Deopt(逆優(yōu)化),回退到解釋器執(zhí)行,這種情況一般較少發(fā)生。

2. 定制化需求

ArkCompiler運行時通過不同執(zhí)行模式的按需組合,支持多種設(shè)備不同的定制化需求。

在低端IOT設(shè)備上,ArkCompiler執(zhí)行引擎支持純解釋器的執(zhí)行模式,以滿足小設(shè)備的內(nèi)存限制條件;

在高端設(shè)備上,ArkCompiler執(zhí)行引擎支持解釋器配合AOT編譯器以及JIT編譯器的模式運行,對相當(dāng)部分代碼使用AOT編譯器編譯,使得程序一開始就可以運行在高質(zhì)量的優(yōu)化代碼上,獲得最好的執(zhí)行性能;

在其它設(shè)備上,則根據(jù)設(shè)備的硬件條件限制來選擇策略,設(shè)定高頻使用需要AOT編譯的代碼范圍,其它代碼則依靠解釋器配合JIT Compiler運行,使得應(yīng)用執(zhí)行性能能夠得到最大化。

為了提升解釋執(zhí)行性能,在特定的體系架構(gòu)下,解釋器約定了將解釋執(zhí)行上下文中某些頻繁使用的數(shù)據(jù)放在對應(yīng)的物理寄存器中,比如在Arm64架構(gòu)下,上下文中當(dāng)前字節(jié)碼指令地址、累加器值、解釋器棧幀、指令映射表、當(dāng)前線程對象等,直接放在固定的寄存器上,避免了在棧上頻繁的加載和寫入操作。

3. 并發(fā)

復(fù)雜移動應(yīng)用的開發(fā)和運行對并發(fā)有較強的需求。ArkCompiler運行時除了提供標(biāo)準(zhǔn)的“Java多線程編程”和“運行支持”之外,也提供響應(yīng)式的Actor并發(fā)編程模型支持。此模型下執(zhí)行體之間不共享任何數(shù)據(jù),通過消息機制進行通信。當(dāng)前,業(yè)界的一些Actor并發(fā)模型,例如傳統(tǒng)JS引擎的web-worker實現(xiàn),有啟動速度慢、內(nèi)存占用高等缺陷。

為了利用設(shè)備的多核能力獲得更好的性能提升,在Actor內(nèi)存隔離模型的基礎(chǔ)上,ArkCompiler運行時通過共享Actor實例中的不可變或者不易變的對象、內(nèi)建代碼塊、方法字節(jié)碼等,提升Actor的啟動性能和節(jié)省內(nèi)存開銷,達(dá)到實現(xiàn)輕量級Actor并發(fā)模型的目標(biāo)。

4. 跨語言優(yōu)化

HarmonyOS應(yīng)用在某些情況下實際上是由多種語言的代碼組成的。例如對HarmonyOS JS/TS應(yīng)用,有一些系統(tǒng)庫、框架和應(yīng)用依賴的部分能力的實現(xiàn)使用了C/C++和Java語言。HarmonyOS開發(fā)框架也提供了JS/TS與C/C++交互的JS NAPI以及JS/TS與Java交互的Channel機制。考慮不同語言之間的交互場景的開發(fā)和運行效率需求,ArkCompiler和開發(fā)框架聯(lián)合設(shè)計,提供了對應(yīng)的優(yōu)化機制。

(1)JS/TS與C/C++交互

在TS 版本的操作系統(tǒng)平臺API實現(xiàn)中,通常需要面臨C/C++代碼訪問和操作TS對象的場景。對這個業(yè)務(wù)場景,ArkCompiler可以根據(jù)TS源碼的class聲明和運行時約定,生成包含TS對象布局描述的C/C++頭文件,以及操作這些TS對象的C/C++實現(xiàn)庫。

在C/C++代碼中,通過包含TS對象描述頭文件以及鏈接對應(yīng)實現(xiàn)庫,實現(xiàn)直接操作TS對象的效果。需要說明的是,由于TS類型或其內(nèi)在布局并非總是固定不變的,因此在TS對象操作的代碼實現(xiàn)中,會插入類型檢查,如果對象類型或布局在運行時發(fā)生變化,則回退執(zhí)行通用的慢速路徑。

(2)JS/TS與Java交互

HarmonyOS中有一些應(yīng)用所需的能力是通過系統(tǒng)、框架或應(yīng)用的Java庫提供的。因此在HarmonyOS應(yīng)用中,也存在較多JS/TS代碼與Java代碼交互的場景。常見的案例中,由于JS/TS代碼和Java代碼有各自獨立的運行環(huán)境,相互之間對于對方的數(shù)據(jù)表示、調(diào)用約定都是不可知的,所以JS/TS與Java的數(shù)據(jù)交互通常需要經(jīng)過標(biāo)準(zhǔn)的JSON序列化和反序列化流程,以及經(jīng)由Native層橋接的相互調(diào)用。這造成在一些場景中開銷較大,影響用戶體驗。

ArkCompiler利用同時支持多語言的優(yōu)勢,運行時具備不同語言的數(shù)據(jù)表示、對象布局、函數(shù)調(diào)用約定等信息,這使得跨語言之間的直接數(shù)據(jù)訪問、對象操作和方法調(diào)用成為可能,同時Java代碼提供的更多確定的類型信息也成為JS/TS類型推導(dǎo)的額外輸入,利于對JS/TS的編譯優(yōu)化。另一方面,這也使我們能為開發(fā)者提供一個更簡化的多語言編程模型,減少需要額外手工編寫的業(yè)務(wù)無關(guān)的跨語言交互代碼工作量。

四、總結(jié)

HarmonyOS所支持的IoT時代下,結(jié)合應(yīng)用生態(tài)、開發(fā)體驗和用戶體驗等方面的需求, ArkCompiler與硬件、操作系統(tǒng)、開發(fā)框架、編程語言協(xié)同設(shè)計,在多語言統(tǒng)一編譯運行和多設(shè)備支持的基礎(chǔ)上,實現(xiàn)對HarmonyOS應(yīng)用在開發(fā)和運行效率等方面的提升。

未來,ArkCompiler在持續(xù)優(yōu)化基礎(chǔ)體驗的同時,更會進一步結(jié)合HarmonyOS萬物互聯(lián)的需求,在跨端遷移、多端協(xié)同等創(chuàng)新場景,從編譯器和運行時等方面提供底層的解決方案和優(yōu)化機制,提升分布式應(yīng)用的開發(fā)和運行體驗。

編輯:jq

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

    關(guān)注

    452

    文章

    50033

    瀏覽量

    419872
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1608

    瀏覽量

    48986
  • 方舟
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    8436
  • 解釋器
    +關(guān)注

    關(guān)注

    0

    文章

    103

    瀏覽量

    6482

原文標(biāo)題:HDC技術(shù)分論壇:ArkCompiler原理解析

文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    電磁屏蔽技術(shù)的原理解析

    電磁屏蔽技術(shù)的原理解析 電磁屏蔽技術(shù)是一種利用特定材料或構(gòu)造來阻擋、吸收或反射外界電磁波的技術(shù)。它在電子設(shè)備、通信系統(tǒng)以及電磁環(huán)境的凈化等方面具有重要應(yīng)用,可以有效地防止電磁干擾,保護
    的頭像 發(fā)表于 03-06 14:58 ?1698次閱讀

    arkcompiler_runtime_core/static_core/runtime和arkcompiler_ets_runtime有什么關(guān)聯(lián)

    arkcompiler_runtime_core/static_core/runtime有內(nèi)存分配和垃圾回收,arkcompiler_ets_runtime也有獨立的內(nèi)存管理和垃圾回收。 這兩個庫之間是什么關(guān)系和作用
    發(fā)表于 01-10 21:39

    信息與數(shù)據(jù)安全前沿論壇圓滿舉辦

    12 月 17 日,作為 2023 開放原子開發(fā)者大會 15 場平行論壇中唯一的一場數(shù)據(jù)安全論壇,“信息與數(shù)據(jù)安全前沿論道”論壇成功召開
    的頭像 發(fā)表于 12-22 11:25 ?350次閱讀
    信息與數(shù)據(jù)安全前沿<b class='flag-5'>分</b><b class='flag-5'>論壇</b>圓滿舉辦

    技術(shù)創(chuàng)新,照見未來 | 2023 開放原子開發(fā)者大會 OpenHarmony 論壇圓滿舉行

    OpenHarmony 論壇(以下簡稱“論壇”)在無錫隆重舉行。作為開放原子開發(fā)者大會最重要的技術(shù)
    的頭像 發(fā)表于 12-22 09:58 ?411次閱讀
    <b class='flag-5'>技術(shù)</b>創(chuàng)新,照見未來 | 2023 開放原子開發(fā)者大會 OpenHarmony <b class='flag-5'>分</b><b class='flag-5'>論壇</b>圓滿舉行

    云原生技術(shù)前沿落地實踐論壇圓滿舉辦

    12 月 16 日,2023 開放原子開發(fā)者大會【云原生技術(shù)前沿落地實踐】論壇在無錫成功舉辦。論壇將聚焦云原生的泛在化、Serverless 化以及智能化等前沿發(fā)展趨勢,與一線
    的頭像 發(fā)表于 12-22 09:20 ?969次閱讀
    云原生<b class='flag-5'>技術(shù)</b>前沿落地實踐<b class='flag-5'>分</b><b class='flag-5'>論壇</b>圓滿舉辦

    信息與數(shù)據(jù)安全前沿論壇圓滿舉辦

    12月17日,作為2023開放原子開發(fā)者大會15場平行論壇中唯一的一場數(shù)據(jù)安全論壇,“信息與數(shù)據(jù)安全前沿論道”論壇成功召開。該
    的頭像 發(fā)表于 12-20 19:15 ?328次閱讀

    技術(shù)創(chuàng)新,照見未來 | 2023開放原子開發(fā)者大會OpenHarmony論壇圓滿舉行

    OpenHarmony論壇(以下簡稱“論壇”)在無錫隆重舉行。作為開放原子開發(fā)者大會最重要的技術(shù)論壇
    的頭像 發(fā)表于 12-18 15:55 ?421次閱讀

    OpenHarmony技術(shù)大會 | 硬件(南向)生態(tài)論壇嘉賓金句

    點擊藍(lán)字 ╳ 關(guān)注我們 開源項目 OpenHarmony 是每個人的 OpenHarmony 原文標(biāo)題:OpenHarmony技術(shù)大會 | 硬件(南向)生態(tài)論壇嘉賓金句 文章出處:【微信公眾號:OpenAtom OpenHar
    的頭像 發(fā)表于 11-14 15:15 ?358次閱讀

    OpenHarmony技術(shù)大會 | 應(yīng)用(北向)生態(tài)論壇嘉賓金句

    點擊藍(lán)字 ╳ 關(guān)注我們 開源項目 OpenHarmony 是每個人的 OpenHarmony 原文標(biāo)題:OpenHarmony技術(shù)大會 | 應(yīng)用(北向)生態(tài)論壇嘉賓金句 文章出處:【微信公眾號:OpenAtom OpenHar
    的頭像 發(fā)表于 11-14 15:10 ?242次閱讀

    OpenHarmony技術(shù)大會 | 編程語言及開發(fā)框架論壇嘉賓金句

    點擊藍(lán)字 ╳ 關(guān)注我們 開源項目 OpenHarmony 是每個人的 OpenHarmony 原文標(biāo)題:OpenHarmony技術(shù)大會 | 編程語言及開發(fā)框架論壇嘉賓金句 文章出處:【微信公眾號:OpenAtom OpenHa
    的頭像 發(fā)表于 11-11 21:15 ?503次閱讀

    OpenHarmony技術(shù)大會 | 開發(fā)者工具論壇嘉賓金句

    點擊藍(lán)字 ╳ 關(guān)注我們 開源項目 OpenHarmony 是每個人的 OpenHarmony 原文標(biāo)題:OpenHarmony技術(shù)大會 | 開發(fā)者工具論壇嘉賓金句 文章出處:【微信公眾號:OpenAtom OpenHarmon
    的頭像 發(fā)表于 11-11 21:10 ?404次閱讀

    OpenHarmony技術(shù)大會 | OS內(nèi)核及視窗論壇嘉賓金句

    點擊藍(lán)字 ╳ 關(guān)注我們 開源項目 OpenHarmony 是每個人的 OpenHarmony 原文標(biāo)題:OpenHarmony技術(shù)大會 | OS內(nèi)核及視窗論壇嘉賓金句 文章出處:【微信公眾號:OpenAtom OpenHarm
    的頭像 發(fā)表于 11-10 20:25 ?434次閱讀

    OpenHarmony技術(shù)大會 | OS安全論壇嘉賓金句

    點擊藍(lán)字 ╳ 關(guān)注我們 開源項目 OpenHarmony 是每個人的 OpenHarmony 原文標(biāo)題:OpenHarmony技術(shù)大會 | OS安全論壇嘉賓金句 文章出處:【微信公眾號:OpenAtom OpenHarmony
    的頭像 發(fā)表于 11-10 20:15 ?312次閱讀
    OpenHarmony<b class='flag-5'>技術(shù)</b>大會 | OS安全<b class='flag-5'>分</b><b class='flag-5'>論壇</b>嘉賓金句

    OpenHarmony技術(shù)大會|OS原生智能論壇嘉賓金句

    點擊藍(lán)字 ╳ 關(guān)注我們 開源項目 OpenHarmony 是每個人的 OpenHarmony 原文標(biāo)題:OpenHarmony技術(shù)大會|OS原生智能論壇嘉賓金句 文章出處:【微信公眾號:OpenAtom OpenHarmony
    的頭像 發(fā)表于 11-09 22:10 ?408次閱讀

    議程直擊 | 第二屆OpenHarmony技術(shù)大會——OS安全論壇

    E N D ??? 關(guān)注我們,持續(xù)獲取OpenHarmony技術(shù)大會最新消息! 原文標(biāo)題:議程直擊 | 第二屆OpenHarmony技術(shù)大會——OS安全論壇 文章出處:【微信公眾號:
    的頭像 發(fā)表于 11-01 08:44 ?346次閱讀
    議程直擊 | 第二屆OpenHarmony<b class='flag-5'>技術(shù)</b>大會——OS安全<b class='flag-5'>分</b><b class='flag-5'>論壇</b>