開(kāi)發(fā)工具
鴻蒙的主開(kāi)發(fā) IDE 為 DevEco-Studio(DevelopEcology Studio,生態(tài)開(kāi)發(fā) Studio),和 Android Studio 一樣,基于 IntelliJ 平臺(tái)做的自定義 IDE。因此,對(duì)于 Java 開(kāi)發(fā)者而言,DevEco 只是“在熟悉中帶有一點(diǎn)點(diǎn)陌生”。
安裝 Node.js
在安裝好 DevEco 之后,首次點(diǎn)開(kāi)需要開(kāi)發(fā)者設(shè)置 Node.js 環(huán)境,并且有版本要求:
Node.js version: even-
numbered version marked LTS, in the v14.19.1 to v16 range npm version: 6.14.16 or later
下載時(shí)需要注意選擇 Node 長(zhǎng)期維護(hù)的版本并且使用較新的版本安裝包(可以選擇使用自裝包也可以通過(guò) IDE 下載。有坑,見(jiàn)問(wèn)題一)。
ohpm
ohpm(OpenHarmony Package Manager,亦稱(chēng) ohsdkmgr),是鴻蒙系統(tǒng)的包管理工具(類(lèi)似于 Android SDK Package Manager),支持查看、安裝和卸載 SDK 組件,SDK 組件包括 API 和工具鏈,也需要獨(dú)立安裝。這里推薦直接在 DevEco IDE 中安裝,能省事不少。
HarmonyOS SDK
和 Android SDK 相同,除了 Manager 工具之外,還需要下載鴻蒙系統(tǒng)用于開(kāi)發(fā)的各個(gè)系統(tǒng)版本的 SDK APIs 和工具,也推薦直接在 DevEco IDE 中傻瓜式安裝。從 SDK 大小看,275.93MB 中規(guī)中矩,大概是剛起步的原因,內(nèi)容并不多。SDK 中包含了如下內(nèi)容(Mac 中的下載路徑:/Users/xxxx/Library/Huawei/Sdk):
3.1.0(API 9)
Previewer 3.2.3.6 75.00 MB
Toolchains 3.2.3.6 21.99 MB
OpenHarmony(API 9)
ArkTS 3.2.12.5 46.87 MB
JS 3.2.12.5 21.92 MB
Previewer 3.2.12.5 97.52 MB
Toolchains 3.2.12.5 12.64 MB
截止當(dāng)前,SDK 提供的最高版本是 3.1.0 API 9(鴻蒙 4.0+ 的系統(tǒng)需要額外的企業(yè)賬號(hào)授權(quán)才能體驗(yàn)),里面包含了兩部分:Harmony SDK 和 OpenHarmony SDK。
HarmonyOS SDK VS OpenHarmony SDK
大家看到這里應(yīng)該會(huì)有一個(gè)疑惑,HarmonyOS 和
OpenHarmony 是兩個(gè)概念,有什么區(qū)別? 首先 OpenHarmony 是一個(gè)開(kāi)源項(xiàng)目,有開(kāi)放原子開(kāi)源基金會(huì)(OpenAtom
Foundation)孵化和運(yùn)營(yíng)。相當(dāng)于 Android 的 AOSP,但不支持 Java 開(kāi)發(fā)應(yīng)用,不支持模擬器運(yùn)行。 而
HarmonyOS 是在開(kāi)源基礎(chǔ)上,實(shí)現(xiàn)現(xiàn)有 Android 生態(tài)應(yīng)用在部分搭載該 HarmonyOS
設(shè)備上運(yùn)行(可以理解為鴻蒙過(guò)渡階段,中間態(tài))。既然如此,那么在開(kāi)發(fā)語(yǔ)言支持方面,自然是支持 Java/C/C++ 的。
同時(shí),值得開(kāi)發(fā)者注意的是,OpenHarmony 和 HarmonyOS 的 API
略有差別,且打包簽名的方式也不同,代碼層面上的不同在后面「編碼篇」我們?cè)谠敿?xì)展開(kāi)。
這里對(duì)不熟悉 ArkTS 的同學(xué)在簡(jiǎn)單解釋下概念,ArkTS 是一個(gè) TS 應(yīng)用開(kāi)發(fā)框架,支持 Node.js 和 WebAssembly(能力可擴(kuò)展到 C/C++ 領(lǐng)域),所以它支持多種編程語(yǔ)言實(shí)現(xiàn),ArkTS 涉及了多組件,如編譯器 TS 前端、TS 后端、TS 運(yùn)行時(shí)、TS 調(diào)試器等。其中,ArkTS Runtime 是 OpenHarmony 上 TS 應(yīng)用使用的運(yùn)行時(shí),包含了 TS 對(duì)象的分配器以及垃圾回收器、符合 ECMAScript 規(guī)范的標(biāo)準(zhǔn)庫(kù)、用于運(yùn)行 Ark 前端組件生成的「方舟」字節(jié)碼(ArkBytecode)的解釋器、用于存儲(chǔ)隱藏類(lèi)的內(nèi)聯(lián)緩存、對(duì)外的函數(shù)接口(AFFI)等模塊。
ArkTS 就可以理解為是 TypeScript 語(yǔ)言基礎(chǔ)上的一個(gè)框架,該框架匹配了 ArkUI 框架,擴(kuò)展了聲明式 UI、狀態(tài)管理等相應(yīng)的能力,讓開(kāi)發(fā)者可以以更簡(jiǎn)潔、更自然的方式開(kāi)發(fā)跨端應(yīng)用。
ArkTS、TypeScrip t和 JavaScript 之間的關(guān)系: JavaScript 是一種屬于網(wǎng)絡(luò)的高級(jí)腳本語(yǔ)言,已經(jīng)被廣泛用于
Web 應(yīng)用開(kāi)發(fā),常用來(lái)為網(wǎng)頁(yè)添加各式各樣的動(dòng)態(tài)功能,為用戶(hù)提供更流暢美觀的瀏覽效果。 TypeScript 是 JavaScript
的一個(gè)超集,它擴(kuò)展了 JavaScript 的語(yǔ)法,通過(guò)在 JavaScript 的基礎(chǔ)上添加靜態(tài)類(lèi)型定義構(gòu)建而成,是一個(gè)開(kāi)源的編程語(yǔ)言。
ArkTS 兼容 TypeScript 語(yǔ)言,拓展了聲明式 UI、狀態(tài)管理、并發(fā)任務(wù)等能力。
HelloWorld
按照國(guó)際慣例,接觸一門(mén)新的開(kāi)發(fā)技術(shù),首先從 Hello World 開(kāi)始,那么在學(xué)習(xí)鴻蒙時(shí),我們也從創(chuàng)建一個(gè)基礎(chǔ)的工程開(kāi)始。
首先,當(dāng)選擇「Create Project」時(shí),DevEco 彈出的創(chuàng)建工程的選項(xiàng)只有兩個(gè):「Application」和「Atomic Service」,Application 很好理解,就是基于嵌入式或者移動(dòng)端的「需要安裝」的應(yīng)用,而 Atomic Service 則是通過(guò)服務(wù)組件、二維碼掃描、OneHop(基于 NFC 的不同應(yīng)用或設(shè)備間數(shù)據(jù)無(wú)縫傳輸和交互的能力)方式通過(guò)的「免安裝」服務(wù)。Atomic Service 等后續(xù)章節(jié)再來(lái)探索。我們先集中精力關(guān)注移動(dòng)端「Application」的開(kāi)發(fā)。
和 Android Studio 類(lèi)似,只要我們?cè)?DevEco 上選擇 Application 的創(chuàng)建標(biāo)簽,它提供的是以「頁(yè)面」維度的入口文件,區(qū)別在于 Android Studio 提供的是以 「Activity」 命名的入口文件(或者「活動(dòng)」),而鴻蒙系統(tǒng)則稱(chēng)之為 「Ability」 ,從這可以看出一些有意思的點(diǎn)是,Android 的 Activity 聚焦的是「行為」,而鴻蒙的 Ability 注重的是「能力」,「行為」注重和用戶(hù)的交互,而「能力」傾向的是邊界的擴(kuò)展,這和鴻蒙的「萬(wàn)物互聯(lián)」思想是相輔相成的。(格局大了有沒(méi)有)
v
在創(chuàng)建工程上,還可以看出一點(diǎn),就是鴻蒙在開(kāi)發(fā)的時(shí)候,正在淡化邊界,既然要做到「萬(wàn)物互聯(lián)」,那么就不用去管當(dāng)前的開(kāi)發(fā)設(shè)備到底是在手機(jī)端、還是手表、亦或是電視還是自動(dòng)駕駛等,IDE 提供的是能力的創(chuàng)建,而這個(gè)能力可以應(yīng)用到各個(gè)設(shè)備端,當(dāng)然是否真的能做到,我們接著往下看。
還有一點(diǎn)小區(qū)別,可以看下創(chuàng)建工程的左上角,DevEco 提供了所謂的「Template Market」,即模版市場(chǎng),初心應(yīng)該是提供開(kāi)發(fā)這一些便捷的模版,減少開(kāi)發(fā)成本,同時(shí)也能固定鴻蒙各個(gè)應(yīng)用間的體驗(yàn)統(tǒng)一性,點(diǎn)進(jìn)去看發(fā)現(xiàn),目前只有一個(gè)「Shopping Mall」的 Template,后續(xù)可能還要依賴(lài)官方和開(kāi)發(fā)者之間的支持,這里暫時(shí)按下不表。主頁(yè)卡片上,DevEco 提供的和 Android Studio 類(lèi)似的使用于不同應(yīng)用類(lèi)型的不同樣式頁(yè)面。作為一個(gè)有經(jīng)驗(yàn)的開(kāi)發(fā)者,我們就跳過(guò)「Empty Aliblity」這種簡(jiǎn)單的模版,直接上難度,走一個(gè)較為復(fù)雜的 「Category Ability」。
選中以后,進(jìn)入下一步,一股熟悉感鋪面而來(lái):
定義工程名,語(yǔ)言只能選 ArkTS,Stage 和 FA 分別代表鴻蒙 API 4-8 和 API 9,還有目標(biāo)設(shè)備,直接下一步 「Finish」。
這里可能會(huì)有人好奇,在 DevEco IDE 上連接 Android 設(shè)備,是否也可以進(jìn)行工程的編譯和運(yùn)行,答案是否定的,如果是非鴻蒙系統(tǒng),IDE 上并不會(huì)識(shí)別有設(shè)備連接到 IDE,理所當(dāng)然也不能進(jìn)行 Android 設(shè)備的編譯調(diào)試。
工程結(jié)構(gòu)
不出意外地出了意外,開(kāi)始執(zhí)行工程創(chuàng)建之后報(bào)錯(cuò)了,詳見(jiàn)后面「問(wèn)題」章節(jié)問(wèn)題一。
解決之后,繼續(xù)探索。
包結(jié)構(gòu)
我們先從 APP 包結(jié)構(gòu)入手,具體看下打包后的產(chǎn)物長(zhǎng)什么樣子。當(dāng)前鴻蒙支持 Stage 和 FA(Feature Ability)兩種應(yīng)用模型,我們來(lái)看下兩者包體上的異同。
VS
從包結(jié)構(gòu)里可以看出,對(duì)于 FA 模型,內(nèi)部的 HAP 模塊相對(duì)獨(dú)立,每個(gè) HAP 都包含了相同的 assets 和 config.json 類(lèi)型代碼、資源和數(shù)據(jù),側(cè)面印證了 FA 模型每個(gè)應(yīng)用組件獨(dú)享一個(gè) ArkTS 引擎實(shí)例的現(xiàn)象。
Stage 模型與 FA 模型最大的區(qū)別在于:Stage模型中,多個(gè)應(yīng)用組件共享同一個(gè) ArkTS 引擎實(shí)例;而 FA
模型中,每個(gè)應(yīng)用組件獨(dú)享一個(gè) ArkTS 引擎實(shí)例。因此在 Stage
模型中,應(yīng)用組件之間可以方便的共享對(duì)象和狀態(tài),同時(shí)減少?gòu)?fù)雜應(yīng)用運(yùn)行對(duì)內(nèi)存的占用。Stage
模型作為主推的應(yīng)用模型,開(kāi)發(fā)者通過(guò)它能夠更加便利地開(kāi)發(fā)出分布式場(chǎng)景下的復(fù)雜應(yīng)用。
對(duì)于 IDE,相信接觸過(guò) Android Studio 的開(kāi)發(fā)者都不陌生,對(duì)于一些開(kāi)發(fā)調(diào)試工具、界面排布、入口等不再贅述,我們主要集中在工程結(jié)構(gòu)上。
來(lái)看一下,工程幾個(gè)重要的組成部分。這里不得不吐槽一句,作為官方的工程示例,同一個(gè)工程里,編碼風(fēng)格上既然包含了駝峰、小寫(xiě)、下劃線、中線等多種命名風(fēng)格,顯得有那么點(diǎn)不統(tǒng)一和諧。
AppScope
存放整個(gè)應(yīng)用公共的信息和資源,屬于公共資源,對(duì)于各個(gè) module 均可讀。app.json5文件里存放了關(guān)于應(yīng)用的配置信息,比如包名、版本號(hào)、應(yīng)用名稱(chēng)、圖標(biāo)等,和 Android Manifest 類(lèi)似。
這里對(duì) json5 格式也做下進(jìn)一步解釋?zhuān)琷son5 是 json 的超集,通過(guò)包含一些 ECMAScript5.1 的產(chǎn)物來(lái)減少 json 的限制,擴(kuò)展 JSON 的語(yǔ)法。簡(jiǎn)單來(lái)說(shuō),json5 比 json 更加靈活,比如:
json 只能使用""來(lái)表示 String 類(lèi)型數(shù)據(jù),而 json5 可以使用單引號(hào)
json5 支持對(duì)數(shù)據(jù)進(jìn)行注釋?zhuān)箍勺x性更高
舉個(gè)例子:
{ "name": 'John', "age": 30, // this is a comment /* this is another comment */ "email": "johndoe@example.com", "hobbies": [ "reading", "coding", "music", ], }
entry
默認(rèn)的初始化入口模塊,是應(yīng)用的主模塊,存放 HarmonyOS 應(yīng)用的代碼和資源,其中里面包含源碼的目錄為 /entry/src/main/ets,包含模塊公共資源的目錄為 /entry/src/main/resources。ets 下可根據(jù)實(shí)際開(kāi)發(fā)定義不同的文件夾目錄,如示例代碼中使用了 MVVM 的工程架構(gòu)。一般而言,pages 文件下存放的是頁(yè)面相關(guān)的代碼。
hvigor
類(lèi)似于 Android 的 gradle 目錄,存放了系統(tǒng)開(kāi)發(fā)構(gòu)建環(huán)境依賴(lài)的版本號(hào)
oh_modules
是工程的依賴(lài)包,存放工程依賴(lài)的源文件。
build-profile.json5
{ "app": { "signingConfigs": [], "compileSdkVersion": 9, "compatibleSdkVersion": 9, "products": [ { "name": "default", "signingConfig": "default", } ] }, "modules": [ { "name": "entry", "srcPath": "./entry", "targets": [ { "name": "default", "applyToProducts": [ "default" ] } ] } ] }
應(yīng)用層級(jí)的配置文件,包括簽名、產(chǎn)品配置、模塊信息等,對(duì)標(biāo) Android 的 app 級(jí)別的 build.gradle + settings.gradle。
hvigorfile.ts
工程級(jí)編譯構(gòu)建任務(wù)腳本,hvigor 是基于任務(wù)管理機(jī)制實(shí)現(xiàn)的一款全新的自動(dòng)化構(gòu)建工具,主要提供任務(wù)注冊(cè)編排,工程模型管理、配置管理等核心能力。聽(tīng)著比較抽象,可以先簡(jiǎn)單理解為構(gòu)建腳本,我們?cè)趯?shí)際使用的時(shí)候再詳細(xì)介紹。
oh-package.json5
工程級(jí)依賴(lài)配置文件,用于記錄引入包的配置信息。
編譯運(yùn)行打包
在接下來(lái),我們來(lái)看一下鴻蒙上應(yīng)用的編譯運(yùn)行打包部分的情況。
當(dāng)使用真機(jī)來(lái)進(jìn)行編譯運(yùn)行時(shí),會(huì)出現(xiàn)「沒(méi)有簽名」運(yùn)行失敗的情況,詳見(jiàn)后面「問(wèn)題」章節(jié)問(wèn)題二。
解決了簽名問(wèn)題,終于可以在真機(jī)上運(yùn)行了。然而,又出意外了,在正常進(jìn)入 Demo 頁(yè)面的之后,整個(gè)頁(yè)面和交互就卡死了(沒(méi)錯(cuò),類(lèi)似于 ANR 了),在屏幕上進(jìn)行無(wú)意義的點(diǎn)擊之后,徹底黑屏。更意外的是,當(dāng)我點(diǎn)擊 Log 里的截屏能力時(shí),能正常截到圖像,但真機(jī)卻是黑屏。同時(shí)還影響了系統(tǒng)的穩(wěn)定性,從后臺(tái)切回來(lái)后,能正常顯示頁(yè)面,但是后臺(tái)任務(wù)這里,又出現(xiàn)了異常顯示。詳見(jiàn)后面「問(wèn)題」章節(jié)問(wèn)題三。
打包
我們?cè)凇凹僭O(shè)”應(yīng)用沒(méi)問(wèn)題的情況下,自然而然地進(jìn)入打產(chǎn)物包的階段。在「Build」工具欄,我們看到產(chǎn)物有兩種類(lèi)型:Hap 和 APP,APP 無(wú)需贅述,我們了解下 Hap 是什么東西,HamonyOS Ability Package for short,我們從簽名了解到,鴻蒙是以 Ability 為主要維度來(lái)構(gòu)建應(yīng)用的,而 Hap 是 Ability 的部署包(類(lèi)似于 Module 的概念),同時(shí) Ability 又分為了 FA(Feature Ability,HarmonyOS 早期版本,不再主推) 和 PA(Particle Ability) 兩種類(lèi)型,是組成應(yīng)用的基本單元。FA 和 PA 的區(qū)別在于「有無(wú) UI 元素」。
當(dāng)我們選擇構(gòu)建 APP 類(lèi)型時(shí),生成的產(chǎn)物在 ProjectRootDir/build/outputs/default 下面,并且后綴是 .app。而選擇 Hap 類(lèi)型構(gòu)建時(shí),生成的產(chǎn)物后綴自然是 .hap,值得注意的是,無(wú)論 App 還是 Hap 都可以獨(dú)立安裝在鴻蒙設(shè)備上,App 可以上線應(yīng)用市場(chǎng)。這么設(shè)計(jì)的初衷,可能還是基于各個(gè) IoT 設(shè)備都能運(yùn)行的考慮。
命令行工具
在鴻蒙的構(gòu)建生態(tài)中,存在幾種工具指令輔助進(jìn)行開(kāi)發(fā),這里也做一個(gè)歸納總結(jié):
命令 | 用途 | 常用指令 | 路徑 |
---|---|---|---|
sdkmgr | HarmonyOS SDK命令行管理工具,支持查看、安裝和卸載SDK組件,SDK組件包括API和工具鏈 | list、install、uninstall、version、help | 單獨(dú)從下面命令包工具中下載 |
ohsdkmgr | OpenHarmony SDK命令行管理工具,支持查看、安裝和卸載SDK組件,SDK組件包括API和工具鏈 | list、install、uninstall、version、help | 單獨(dú)從命令包工具中下載 |
ohpm | 鴻蒙生態(tài)三方庫(kù)的包管理工具,支持OpenHarmony共享包的發(fā)布、安裝和依賴(lài)管理 | init、install、uninstall、list、info、update、publish、ping | /Users/xxx/Library/Huawei/ohpm/bin 注意運(yùn)行該命令前需要先執(zhí)行 bin 目錄下的 init |
??hdc | HarmonyOS Device Connector,是HarmonyOS為開(kāi)發(fā)人員提供的用于調(diào)試的命令行工具,和 adb 類(lèi)似,開(kāi)發(fā)者最常使用的工具 | 命令太多,詳見(jiàn)鏈接 | /Users/xxx/Library/Huawei/Sdk/hmscore/3.1.0/toolchains |
hvigor | 自動(dòng)化構(gòu)建工具 | 進(jìn)程、性能等命令,不常使用 | 依賴(lài)工程目錄下的 hvigorw 文件運(yùn)行,暫不支持全局命令行 |
??bytrace | 用于追蹤進(jìn)程軌跡、分析性能的一種工具,主要對(duì)內(nèi)核ftrace進(jìn)行了封裝和擴(kuò)展,來(lái)支持用戶(hù)態(tài)的打點(diǎn)。通過(guò)該工具可以打開(kāi)想要查看的用戶(hù)態(tài)和內(nèi)核label,然后通過(guò)命令行進(jìn)行抓取trace信息到指定文件中。(類(lèi)似 Android systrace) | -t/–trace_begin/–trace_dump/–trace_finish/-l/-o/-z | 執(zhí)行 hdc shell(在 鴻蒙 4.0.0 真機(jī)上不好使) |
codelinter | 執(zhí)行代碼檢查與修復(fù) | -c(指定執(zhí)行檢查規(guī)則配置文件)/-s(指定執(zhí)行檢查的工程根目錄)/-f(檢查的同時(shí)執(zhí)行QuickFix)/-o(檢查結(jié)果輸出路徑)/-v(查看版本)/-h(幫助) | 單獨(dú)從下面命令包工具中下載 |
鴻蒙貼心地提供了 codelinter、ohpm、sdkmgr 三個(gè)工具的工具包(點(diǎn)這下載),將該包配置到環(huán)境變量中,即可快捷使用。
注意:sdkmgr 僅支持 17+ 的 JAVA 版本。否則無(wú)法使用
問(wèn)題
問(wèn)題一:ERROR: Cannot find module ‘node:path’
原因分析:
還記得前面提到的安裝編譯環(huán)境時(shí),對(duì) node.js 和 npm 版本是有要求的,然而我根據(jù)它的提示信息下載 node v15.14.0版本,還是會(huì)報(bào)錯(cuò),需要升級(jí)到 node v16.20.2 及以上版本,不得不說(shuō),確實(shí)「坑」,提示信息不準(zhǔn)確。
解決:
重新下載新的 node 包安裝后 Rebuild project。
問(wèn)題二:Failure[MSG_ERR_INSTALL_FAILED_NO_BUNDLE_SIGNATURE]
原因分析:
即使是 debug 模式下,也需要有包簽名信息,不然無(wú)法運(yùn)行到真機(jī)上
解決:打開(kāi) 「Project Structure」,在登錄華為開(kāi)發(fā)者賬號(hào)后自動(dòng)生成一個(gè)簽名。(吐槽:在 DevEco 上增加了一個(gè)登錄按鈕,要登錄卻還是跳轉(zhuǎn)到了瀏覽器網(wǎng)頁(yè)去進(jìn)一步驗(yàn)證,做的不夠徹底和統(tǒng)一)
在生成簽名后,會(huì)發(fā)現(xiàn)在工程的 build-profile.json5 文件夾里就自動(dòng)生成了相關(guān)的簽名文件和簽名信息:
問(wèn)題三:Demo 在 鴻蒙 4.0.0 系統(tǒng)上出現(xiàn)卡死、黑屏問(wèn)題
原因分析:
可能存在 app 4.0.0 系統(tǒng)和 3.x.x API 不兼容的情況。因?yàn)樵?3.1.0 的模擬器上,Demo 是可以正常使用的,當(dāng)然由于測(cè)試設(shè)備有限,無(wú)法明確定位到是這個(gè)問(wèn)題。
解決:
暫時(shí)無(wú)法解決,后續(xù)跟進(jìn)更新
問(wèn)題四:當(dāng) PC 上同時(shí)打開(kāi) Android Studio 和 DevEco IDE 時(shí),連接鴻蒙手機(jī),有可能出現(xiàn)兩個(gè) IDE 都會(huì)識(shí)別不到設(shè)備的情況
原因分析:端口沖突?
解決:
關(guān)掉一個(gè) IDE,重新插拔即可
與 Android Studio 異同
從我們上面幾個(gè)章節(jié)的介紹,或多或少可以總結(jié)出一些 Android 和 鴻蒙 在構(gòu)建工具方面的異同點(diǎn)出來(lái):
同
1.都是基于 IntelliJ 改造后適用于 Android 和 Harmony 開(kāi)發(fā)的 IDE,降低 Android 開(kāi)發(fā)者遷移門(mén)檻
2.構(gòu)建編譯流程上,從代碼構(gòu)建、簽名生成、打包屬于同一類(lèi)流程,即使是一些應(yīng)用資源分布和代碼構(gòu)建,都能看到 Android 的影子
異
1.開(kāi)發(fā)語(yǔ)言的不同(ArkTS vs Java/Kotlin),工具也從 Android 的 ADB 變成了 HDC(HarmonyOS Device Connector,兩者命令對(duì)比可見(jiàn)下表)
2.構(gòu)建工具從 Android 的 gradle/groovy 變成了 hvigor/json5(一款全新基于 TS 實(shí)現(xiàn)的前端構(gòu)建任務(wù)編排工具,結(jié)合 npm 包管理機(jī)制,主要提供任務(wù)管理機(jī)制,任務(wù)注冊(cè)編排、工程模型管理、配置管理等關(guān)鍵能力,更符合 ArkTS/JS 開(kāi)發(fā)者的開(kāi)發(fā)習(xí)慣) 的組合
3.編碼風(fēng)格和工程結(jié)構(gòu)編排上也略有差異
HDC | ADB | 說(shuō)明 |
---|---|---|
hdc -h | adb --help | 查看幫助 |
hdc -v | adb --version | 查看版本 |
hdc list targets | adb devices | 查看連接設(shè)備 |
hdc kill | adb kill-server | 結(jié)束服務(wù) |
hdc kill -r | adb start-server | 啟動(dòng)服務(wù) |
hdc app install [安裝包路徑] | adb install [安裝包路徑] | 安裝應(yīng)用 |
hdc app uninstall package | adb uninstall package | 卸載應(yīng)用 |
hdc hilog | adb logcat | 抓取log |
hdc shell hilogcat >log.log | adb shell logcat >log.log | 抓取log并保存 |
hdc shell reboot | adb reboot | 重啟設(shè)備 |
hdc shell bm get -u | adb shell bm get -u | 獲取UUID |
hdc file recv REMOTE… LOCAL | adb pull REMOTE… LOCAL |
接收文件 REMOTE:手機(jī) LOCAL:PC |
hdc file send LOCAL… REMOTE | adb push LOCAL… REMOTE | 發(fā)送文件 |
hdc shell screencap filename | adb shell screencap filename | 截屏 |
hdc shell screenrecord filename | adb shell screenrecord filename | 錄屏 |
總結(jié)
該篇文章通過(guò) IDE 以及構(gòu)建過(guò)程,對(duì)一些鴻蒙相關(guān)的開(kāi)發(fā)語(yǔ)言、構(gòu)建環(huán)境、命令工具等基本概念進(jìn)行了解釋?zhuān)瑸楹罄m(xù)進(jìn)一步開(kāi)發(fā)打下基礎(chǔ)。同時(shí),在整個(gè)過(guò)程中,我們簡(jiǎn)單對(duì)比 Android 系統(tǒng),發(fā)現(xiàn)鴻蒙現(xiàn)有的開(kāi)發(fā)環(huán)境還有待改進(jìn),比如對(duì)命令工具需要單獨(dú)下載配置、IDE Previewer 極耗 CPU、應(yīng)用對(duì)系統(tǒng)兼容性等問(wèn)題。
審核編輯 黃宇
-
鴻蒙
+關(guān)注
關(guān)注
57文章
2305瀏覽量
42696 -
Harmony
+關(guān)注
關(guān)注
0文章
52瀏覽量
2579
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論