精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

輕松入門OpenHarmony成為媒體子系統Contributor

OpenAtom OpenHarmony ? 來源:OpenAtom OpenHarmony ? 作者:OpenAtom OpenHarmony ? 2022-06-30 15:22 ? 次閱讀

如何優雅地參與開源貢獻,向頂級開源項目提交 PR(Pull Request),跟著大咖 30 分鐘成為 OpenAtom OpenHarmony(以下簡稱“OpenHarmony”) Contributor。戰“碼”先鋒直播間第四期,邀請華為終端BG軟件架構設計部主任工程師 Jelly 為大家分享《輕松入門,成為媒體開發者》。分享主要介紹了:軟件工程師必備技能(Git,識別好的代碼),HiStreamer 媒體引擎介紹和如何參與開源項目并得到能力提升。

參與戰“碼”先鋒,PR 征集令!你可以在Gitee 的 OpenHarmony 代碼倉提交 PR 參與活動,和全球開發者同臺競技,比拼技藝,為 OpenHarmony 貢獻力量。

軟件工程師必備技能-Git

必備技能之Git的基本概念

Git 是開發人員的必備工具,熟練地使用 Git 能夠讓自己在開發工作中更加得心應手,特別是在參與開源項目中,Git 作為提交 PR 的常備工具,操作流程和代碼命令需要熟練于心。為此,Jelly 老師在分享中為大家梳理了 Git 工作中的幾個關鍵概念,抓住關鍵就能更容易理解 Git 的命令。 首先要理解工作目錄、本地倉庫、遠端倉庫的概念。工作目錄(下圖藍色框內),就是我們 clone 代碼之后本地的代碼;本地倉庫(下圖紅色框內),是 .git 目錄的內容,它包含了所有的代碼倉歷史記錄;遠端倉庫,是 clone 代碼時使用的服務器端的地址,比如git@gitee.com:openharmony/multimedia_histreamer.git。遠端倉庫和本地倉庫的內容一般是一樣的。 其次需要理解 Git 歷史記錄相關概念。Git 作為版本管理工具,主要的任務是記錄歷史。歷史由一個個 commit 構成,每一次在 Git 上運行 Git commit 命令,就會產生一個 commit。開發過程中,經常需要多個分支并行開發。Git 提供了超輕量級的分支管理機制,分支名就是指向分支最后一個 commit 的指針,可以向該分支繼續提交 commit。為了方便溝通,還會給 commit 起別名,這就是 tag,它用來標記一個確定的 commit 點。如果要獲取指定 commit 的代碼,可以輸入命令 git checkout commit_id 來完成,commit_id 也可以替換成分支名或者 tag。

69db8a08-f6e3-11ec-ba43-dac502259ad0.png

為了方便在命令行查看分支圖,我們可以執行下面命令配置一個 git 命令別名 lg:

git config--global alias.lg "log--graph--pretty=format:'%Cred%h%Creset-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'--abbrev-commit --date=relative"

在本地命令行輸入 git lg,就能查看當前倉庫的歷史分支圖。git lg 跟普通的 git log 命令類似,也可以在后面加若干個 commit_id/ 分支名 /tag,把該位置顯示到分支圖中。分支圖左側的每一個星號都對應著一個 commit,星號后面是 commit_id,然后可能還有黃色的部分是分支名和 tag 名稱,再往右是 commit message、時間和作者信息

6a0f7264-f6e3-11ec-ba43-dac502259ad0.png

各個Git操作的含義

基本概念有助于我們理解,而接下來的介紹:各個 Git 操作的含義則更為直觀地展示了 Git 操作的原理。Git 命令主要是將數據在多個區域中傳遞:Work space(工作目錄),Index(緩存區),本地倉庫和遠程倉庫。比如 git add 是將工作目錄修改的代碼傳遞到緩存區,執行 commit 命令是將緩存的代碼提交到本地倉庫,開發者也可以用 git commit -a 將上述兩個命令合并成一個命令。commit 提交到本地倉庫,再用 git push 就可以提交到遠程倉庫。用 git fetch 可以將遠程倉庫的 commit 取到本地倉庫中,再用 git rebase 或者 git merge 可以將本地倉庫的代碼體現到工作目錄,也可以用 git pull 將上述兩個步驟合并。

6a368bb0-f6e3-11ec-ba43-dac502259ad0.png

常見的操作場景使用的命令如下:

●更新本地代碼(使之與服務器一致)

git fetch

git status

git rebase origin/master (注意:origin 是 remote 名字, master 是遠程分支名,根據自己需要修改)

●提交代碼為本地 commit

git add -u

git commit -s -m "your message"

●本地 commit 上傳到服務器(origin一般要用自己的fork倉)

git push origin HEAD:master(注意:origin是remote名字,master是遠程分支名,根據自己需要修改)

●創建 PR,更新 PR

源分支變化,PR 會自動更新

●其他比較重要的知識

git blame path 查看文件每一行代碼的修改歷史

git reset / git checkout

git remote -v 使用多個 remote

必備技能之識別好的代碼

好的代碼函數/模塊劃分清晰、分支判斷少、松耦合、易于閱讀和理解、依賴規則確定、學習成本低,差的代碼則相反。好代碼(也稱為整潔代碼)主要體現在:職責單一、干凈、無重復,能夠直觀體現業務、通過了所有測試的優雅的代碼。寫整潔代碼的主要方法是消除重復,提高表現力。整潔編碼有四個原則:可以工作、容易被理解、沒有重復的邏輯和代碼、沒有多余的代碼。

下圖中對比了一個函數修改前后的代碼,修改前:函數較長,共 60 行。細節較多,不在同一個抽象層次上編碼;分支判斷較多,容易成為 BUG 的溫床,較難維護。修改后,函數只有 30 行,在同一個抽象層次上編碼,分支判斷較少,這樣會更容易理解和維護。

6a5b5a12-f6e3-11ec-ba43-dac502259ad0.png

為了幫助大家提升識別/寫好代碼的能力,Jelly 老師還向大家介紹了需要關注的幾個知識點:代碼壞味道、通過重構改善既有代碼的設計、演進式設計、設計模式、面向對象設計原則等;以及相關書籍推薦:《代碼整潔之道》、《重構-改善既有代碼的設計》、《Head First 設計模式》、《敏捷軟件開發:原則、模式與實踐》。

HiStreamer媒體引擎介紹

HiStreamer媒體引擎介紹

第三部分 Jelly 老師為我們介紹了 HiStreamer 媒體引擎。首先,從 OpenHarmony 媒體子系統軟件架構開始,系統架構主要分為四層。最上層是應用層,包括音樂、視頻等應用。第二層是應用接口層,為應用開發提供接口。最下面一層是 HDI 層,提供訪問硬件的抽象接口。HDI和接口層之間是服務層,主要有 MediaService、AudioService、CameraService 等服務。其中 MediaService 負責音視頻文件讀取、流媒體下載、解封裝、解碼等工作。在 MediaService中,有兩個媒體引擎,HiStreamer 就是其中之一。HiStreamer 可以在 mini/small/standard 設備上運行,支持插件擴展。

6a84fbd8-f6e3-11ec-ba43-dac502259ad0.png

HiStreamer媒體引擎業務功能

媒體引擎主要負責媒體數據讀取、流媒體下載、封裝/解封裝、編解碼、輸出等。Jelly 老師以播放本地 MP3 文件為例,為大家詳細解讀 HiStreamer 媒體引擎的工作流程。 講解流程前先了解 MP3 的文件結構。它由一個 ID3 Metadata 容器頭和 ES Data(編碼后的音頻數據)構成。ES Data 由若干 MP3 Frame 數據幀組成,每個 MP3 Frame 又由 MP3 Header 和 MP3 Data 構成。

音頻文件在播放的過程中,首先要讀取 MP3 文件,解析 ID3 Metadata 容器頭,然后將 ES Data 解碼成 PCM,最后播放 PCM。這四個過程抽象成四個節點:輸入節點、解封裝節點、解碼節點、輸出節點。上一個節點的輸出,是下一個節點的輸入。輸入節點讀取進來的是文件數據流,經過解封裝節點,解析出 ID3 容器頭中的參數,取出 ES Data 傳到下一個節點:解碼節點。解碼節點再解碼 ES Data 得到 PCM 數據流,最后傳到輸出節點進行播放。

6aaf040a-f6e3-11ec-ba43-dac502259ad0.png

HiStreamer的邏輯架構

它分為媒體引擎和插件兩部分。其中插件又分為平臺插件和廠商插件。媒體引擎和平臺插件,是可以跨平臺運行的。HiStreamer 媒體引擎又分為三層:●最上面是業務封裝層,為各種業務場景封裝易于使用的接口,比如播放器、錄音機等。●中間是 Pipeline 框架層,負責業務流程管理。Pipeline 由若干節點構成,音頻播放的四個節點在 Pipeline 框架層被組裝起來。具體的業務處理在節點中完成,這些節點支持以插件的形式擴展新的業務處理能力:比如輸入節點可以擴展支持文件輸入、流媒體輸入,解封裝節點可以擴展支持 MP3、MP4、AAC 等格式的解封裝,解碼節點可以擴展支持 MP3、AAC 等格式的解碼,輸出插件,可以擴展支持不同平臺/產品的輸出。

●引擎還有一個插件管理層,負責插件的加載、卸載等工作。

為了提高開發效率,HiStreamer 媒體引擎還配備了一個工具庫,提供 OS 適配和日志調測等功能。

6ad56a14-f6e3-11ec-ba43-dac502259ad0.png

如何參與開源項目并得到能力提升

以HiStreamer媒體引擎項目為例介紹參與方式

參與開源項目,首先要找到適合自己的方向,可以結合自己的興趣方向選擇開源項目。比如希望做JS應用開發,則建議參與 OpenHarmony 應用相關項目;如果想從事 C/C++ 開發,建議參與 OpenHarmony 框架/服務等項目,比如:多媒體服務,HiStreamer 媒體引擎等;驅動開發也可以參與 OpenHarmony 驅動相關項目。 如果想提升軟件開發技能,可以選擇氛圍較好的社區,這樣能夠更容易在社區內結識活躍的開發者和 committer,并獲得幫助。另外,挑選一個易于學習上手的項目比較重要,比如:代碼質量高,入門簡單,學習曲線平緩的項目,這樣對開發者來說學習的路徑相對輕松。這里Jelly老師推薦了一個開源項目 HiStreamer 媒體引擎,在 PC 機上就可以編譯運行,比較容易上手。大家可以在 HiStreamer 項目中選擇適合自己的任務參與,比如,文檔補充,測試用例補充,還可以參與問題解決,或者實現新的插件。

HiStreamer 媒體引擎項目還有自動化測試用例,這樣有 3 個好處:①修改代碼后,執行用例就可以比較完整地進行測試,比手動測試覆蓋更全,執行更輕松;②測試用例表明了軟件的使用方法,可以作為了解軟件功能的入口。③大家還可以通過補充測試用例的方式參與進來。

在參與項目過程中,大家可以獲得軟件設計、開發、測試相關技能的提升,這些技能普遍適用于所有軟件項目。同時,大家還可以通過項目了解媒體格式相關知識。

6afc8734-f6e3-11ec-ba43-dac502259ad0.png

HiStreamer開發環境與編譯運行

編譯代碼的第一步是搭建運行環境。為 HiStreamer 媒體引擎搭建一個環境并運行起來非常簡單,一般有軟件編譯背景的開發者都能辦到。一般有2種方式運行 HiStreamer:使用 PC 或開發板。其中使用 PC 運行的開發環境最為簡單,它對電腦系統沒有特殊的要求,基本上所有電腦都能做到。在開發板上運行的環境復雜一些,需要在 Linux 系統下編譯,并且需要較大的硬盤空間,至少需要 60G 內存,還需要有開發板。

Jelly 老師主要介紹如何在 PC 上運行 HiStreamer 媒體引擎。首先需要安裝 CLion 和 MinGW 8.1.0 posix seh 版本。隨后啟動 CLion,File->Open,選擇 histreamer_dev 目錄,打開它即可編譯運行。第一次打開會自動下載 test_resource和histreamer。如果要運行自動化測試,還需要安裝 Python3

PC編譯運行步驟:

1.打開 CLion,點擊File->Open。

2.瀏覽到 histreamer_dev 目錄,打開它就能自動開始配置。

3.如果沒有配置,可以點擊項目根目錄,右鍵,選擇 Reload CMake Project。

4.配置完成,右上角就可以選擇構建目標 histreamer_player,點擊編譯運行按鈕即可編譯運行。

5.還可以選擇其它的構建目標,比如 histreamer_st 編譯運行測試用例。

histreamer_st 還支持通過參數指定運行哪些 tag 的用例,比如:

●fast - 運行所有快速運行完的用例;

●video_play_fast - 運行快速的 video 播放測試;

●audio_play_fast - 運行快速的 audio 播放測試。

6b2023b0-f6e3-11ec-ba43-dac502259ad0.png

HiStreamer單步跟蹤調試運行

在 PC 上運行,有一個好處就是可以通過調試運行的方式,單步跟蹤運行流程。通過這種方式,可以比較快地了解軟件的工作流程。下圖中幾個主要的步驟如下: 1在代碼中的某個位置設置斷點。

2點擊屏幕右上方的 Debug 按鈕,CLion 會以調試的方式將代碼運行起來。當運行到設置的斷點位置,就會停下來。

3可以單步運行,比如第一個按鈕 step over,點擊它就會往下走一行,遇到函數也不會走進函數里面;第二個按鈕是 step into,遇到函數時,將跳入函數中執行。單步跟蹤能夠清晰地看到代碼執行情況,這對于學習代碼運行流程非常有幫助。

4可以查看每個線程的運行調用棧。雙擊函數調用的位置,就能看到對應的代碼。

5可以看到當前的變量的值,或者添加自己關注的變量。

6b4fec12-f6e3-11ec-ba43-dac502259ad0.png

HiStreamer自動運行所有測試

為了方便大家補充用例,Jelly 老師也簡單介紹了自動化測試用例的相關知識。在項目的根目錄下,有一個名為 local_test.bat 的腳本文件,雙擊它就可以運行所有的自動化測試。這里使用了 testngpp 這個測試框架來管理用例,具體使用方法參見這個鏈接:https://gitee.com/sinojelly/testngpp2。

測試用例被放在測試裝置(FIXTURE)中,一個測試裝置,可以有多個用例。用例可以是 TEST 定義的普通測試用例,也可以是 PTEST 定義的參數化測試用例。PTEST 后面有用例執行時需要傳入的參數,這里是 url,后面是用例的名字,要描述清楚這個用例的測試場景。下面是用例的內容,這里是創建播放器播放一個 url。PTEST 的參數由 DATA_PROVIDER 提供,DATA_PROVIDER 里可以有多個 DATA_GROUP,針對每個 DATA_GROUP 都會調用一次 PTEST,從而測試不同路徑的 url 的播放。這樣把測試用例和測試數據進行了解耦,補充新的測試數據就可以覆蓋更多資源,不用修改用例。

6b65da40-f6e3-11ec-ba43-dac502259ad0.png

歡迎感興趣的開發者朋友們一起跟著媒體子系統 HiStreamer Committer 輕松入門,成為 OpenHarmony Contributor,同時學習并實踐實用的軟件開發技能,為大家今后在軟件研發領域的發展夯實基礎。

參與戰“碼”先鋒,PR 征集令!在 Gitee 的 OpenHarmony 代碼倉提交 PR 參與活動,和全球的開發者一起共建 OpenHarmony 的繁榮生態!

文章中涉及的鏈接匯總:

HiStreamer媒體引擎介紹:

https://www.bilibili.com/video/BV1v5411m72k

Git下載地址:

https://gitforwindows.org

HiStreamer輔助倉histreamer_dev:

https://gitee.com/histreamer/histreamer_dev

HiStreamer環境安裝:

https://gitee.com/histreamer/histreamer_dev/blob/master/README_zh.md

Python3下載地址:

https://www.python.org/downloads/

HiStreamer測試場景和結果匯總:

https://gitee.com/histreamer/multimedia_histreamer/wikis/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E6%B5%8B%E8%AF%95%E5%9C%BA%E6%99%AF%E5%92%8C%E7%BB%93%E6%9E%9C%E6%B1%87%E6%80%BB

HiStreamer插件開發指南:

https://gitee.com/openharmony/multimedia_histreamer/wikis/%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97

CLion下載:

https://www.jetbrains.com/clion/download/other.html

MinGW 8.1.0 posix seh 版本下載:

國外:

https://nchc.dl.sourceforge.net/project/mingw-w64/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z

國內:

https://pan.baidu.com/s/1A5aVLZgM71HiiOkx8207eg?pwd=a7pt

testngpp測試框架:

https://gitee.com/sinojelly/testngpp2

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開源
    +關注

    關注

    3

    文章

    3253

    瀏覽量

    42407
  • OpenHarmony
    +關注

    關注

    25

    文章

    3661

    瀏覽量

    16159

原文標題:30分鐘成為Contributor|輕松入門,成為媒體子系統Contributor

文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Openharmony軟件評估指南-米爾瑞芯微RK3568開發板

    Openharmony軟件評估指南用于介紹在米爾的開發板上運行Openharmony系統下的核心資源與外設資源的測試步驟與評估方法。本文可作為前期評估指南使用,也可以作為通用系統開發的
    發表于 09-06 20:06

    鴻蒙開發接口媒體:【@ohos.multimedia.media (媒體服務)】

    媒體子系統為開發者提供一套簡單且易于理解的接口,使得開發者能夠方便接入系統并使用系統媒體資源。
    的頭像 發表于 06-06 11:03 ?745次閱讀
    鴻蒙開發接口<b class='flag-5'>媒體</b>:【@ohos.multimedia.media (<b class='flag-5'>媒體</b>服務)】

    鴻蒙OpenHarmony開發:【編譯構建指導】

    OpenHarmony編譯子系統是以GN和Ninja構建為基座,對構建和配置粒度進行部件化抽象、對內建模塊進行功能增強、對業務模塊進行功能擴展的系統,該系統提供以下基本功能
    的頭像 發表于 05-13 09:31 ?1629次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>開發:【編譯構建指導】

    如何在OpenHarmony設置靜態IP?

    介紹本文適用于所有RK3566/RK3568/RK3588平臺產品在OpenHarmony系統上設置靜態IP。本文以PurplePiOH開發板為例,在OpenHarmony系統上進行設
    的頭像 發表于 05-12 08:32 ?659次閱讀
    如何在<b class='flag-5'>OpenHarmony</b>設置靜態IP?

    鴻蒙OpenHarmony開發板:【子系統配置規則】

    通過build倉下的subsystem_config.json可以查看所有子系統的配置規則。
    的頭像 發表于 05-08 22:07 ?252次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>開發板:【<b class='flag-5'>子系統</b>配置規則】

    鴻蒙OpenHarmony【標準系統編寫“Hello World”程序】 (基于RK3568開發板)

    源碼],創建RK3568開發板的源碼工程。 示例目錄 拉取openharmony項目代碼,在代碼根目錄創建sample子系統文件夾,在子系統目錄下創建hello部件文件夾,hello文件夾中創建
    的頭像 發表于 04-24 17:32 ?694次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>【標準<b class='flag-5'>系統</b>編寫“Hello World”程序】 (基于RK3568開發板)

    鴻蒙OpenHarmony【快速入門概述】

    OpenHarmony是一款面向全場景的開源分布式操作系統,采用組件化設計,支持在128KiB到xGiB RAM資源的設備上運行系統組件,設備開發者可基于目標硬件能力自由選擇系統組件進
    的頭像 發表于 04-19 15:14 ?408次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>【快速<b class='flag-5'>入門</b>概述】

    深開鴻正式升級成為OpenHarmony項目群A類捐贈人

    近日,深開鴻作為OpenHarmony核心共建單位、OpenHarmony生態委員會委員單位、OpenHarmony代碼Top 10貢獻單位,通過了開放原子開源基金會OpenHarmony
    的頭像 發表于 04-18 09:40 ?597次閱讀
    深開鴻正式升級<b class='flag-5'>成為</b><b class='flag-5'>OpenHarmony</b>項目群A類捐贈人

    OpenHarmony內核編程實戰

    編程入門[Hello,OpenHarmony]在正式開始之前,對于剛接觸OpenHarmony的伙伴們,面對大篇幅的源碼可能無從下手,不知道怎么去編碼寫程序,下面用一個簡單的例子帶伙伴們入門
    的頭像 發表于 03-27 08:31 ?732次閱讀
    <b class='flag-5'>OpenHarmony</b>內核編程實戰

    鴻蒙OpenHarmony技術:【設備互信認證】

    OpenHarmony中,設備互信認證模塊作為安全子系統的子模塊,負責設備間可信關系的建立、維護、使用、撤銷等全生命周期的管理,實現可信設備間的互信認證和安全會話密鑰協商,是搭載OpenHarmony的設備進行可信互聯的基礎平
    的頭像 發表于 03-25 17:04 ?676次閱讀
    鴻蒙<b class='flag-5'>OpenHarmony</b>技術:【設備互信認證】

    鴻蒙開發圖形圖像:【圖形子系統

    圖形子系統主要包括UI組件、布局、動畫、字體、輸入事件、窗口管理、渲染繪制等模塊,構建基于輕量OS應用框架滿足硬件資源較小的物聯網設備或者構建基于標準OS的應用框架滿足富設備的OpenHarmony系統應用開發。
    的頭像 發表于 03-23 16:50 ?607次閱讀
    鴻蒙開發圖形圖像:【圖形<b class='flag-5'>子系統</b>】

    鴻蒙開發學習:【驅動子系統

    OpenHarmony驅動子系統采用C面向對象編程模型構建,通過平臺解耦、內核解耦,兼容不同內核,提供了歸一化的驅動平臺底座,旨在為開發者提供更精準、更高效的開發環境,力求做到一次開發,多系統部署。
    的頭像 發表于 03-17 22:05 ?544次閱讀
    鴻蒙開發學習:【驅動<b class='flag-5'>子系統</b>】

    【六】Purple Pi OH開發板帶你7天入門OpenHarmony!

    今天我們來從OpenHarmony簡介、環境搭建、創建第一個OpenHarmony項目等方面開始OpenHarmony應用開發的第一步。一.OpenHarmony簡介
    的頭像 發表于 03-14 08:31 ?492次閱讀
    【六】Purple Pi OH開發板帶你7天<b class='flag-5'>入門</b><b class='flag-5'>OpenHarmony</b>!

    【工作準備】OpenHarmony鴻蒙操作系統開發——基礎必備軟件

    前言 在下根據多年 OpenHarmony 內核及多個子系統的開發經驗,將用到的必備工具軟件列出一張清單,供新同學參考。如何精進?請自行搜索專業手冊進行學習,我是碰到什么問題、需要什么小功能然后去查
    的頭像 發表于 02-23 15:51 ?1674次閱讀
    【工作準備】<b class='flag-5'>OpenHarmony</b>鴻蒙操作<b class='flag-5'>系統</b>開發——基礎必備軟件

    Purple Pi 帶你7天入門OpenHarmony

    大家好!我是一名剛入門OpenHarmony的小白,很高興能夠和大家一起學習OpenHarmony,在本系列文章里,我將分享使用PurplePiOH從零開始學習開源鴻蒙的整個流程,并提供每一步需要
    的頭像 發表于 02-19 13:20 ?446次閱讀
    Purple Pi 帶你7天<b class='flag-5'>入門</b><b class='flag-5'>OpenHarmony</b>