開源 Arkts 鴻蒙應用 開發(一)工程文件分析

文章的目的為了記錄使用Arkts?進行Harmony?app?開發學習的經歷。本職為嵌入式軟件開發,公司安排開發app,臨時學習,完成app的開發。開發流程和要點有些記憶模糊,趕緊記錄,防止忘記。

相關鏈接:

開源 Arkts 鴻蒙應用 開發(一)工程文件分析-CSDN博客

開源 Arkts 鴻蒙應用 開發(二)封裝庫.har制作和應用-CSDN博客

開源 Arkts 鴻蒙應用 開發(三)Arkts的介紹-CSDN博客

開源 Arkts 鴻蒙應用 開發(四)布局和常用控件-CSDN博客

?推薦鏈接:

開源 java android app 開發(一)開發環境的搭建-CSDN博客

開源 java android app 開發(二)工程文件結構-CSDN博客

開源 java android app 開發(三)GUI界面布局和常用組件-CSDN博客

開源 java android app 開發(四)GUI界面重要組件-CSDN博客

開源 java android app 開發(五)文件和數據庫存儲-CSDN博客

開源 java android app 開發(六)多媒體使用-CSDN博客

開源 java android app 開發(七)通訊之Tcp和Http-CSDN博客

開源 java android app 開發(八)通訊之Mqtt和Ble-CSDN博客

開源 java android app 開發(九)后臺之線程和服務-CSDN博客

開源 java android app 開發(十)廣播機制-CSDN博客

開源 java android app 開發(十一)調試、發布-CSDN博客

開源 java android app 開發(十二)封庫.aar-CSDN博客

推薦鏈接:

開源C# .net mvc 開發(一)WEB搭建_c#部署web程序-CSDN博客

開源 C# .net mvc 開發(二)網站快速搭建_c#網站開發-CSDN博客

開源 C# .net mvc 開發(三)WEB內外網訪問(VS發布、IIS配置網站、花生殼外網穿刺訪問)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客

開源 C# .net mvc 開發(四)工程結構、頁面提交以及顯示_c#工程結構-CSDN博客

開源 C# .net mvc 開發(五)常用代碼快速開發_c# mvc開發-CSDN博客

本章節主要講述鴻蒙開發環境的安裝DevEco,各工程文件的作用,最后就是第一個鴻蒙App的例子。

內容如下:

1.? DevEco安裝

2.? 工程文件分析

3.? 第一個App

一、DevEco

鴻蒙開發從2019年起,經歷了一些變化,從最開始的兼容安卓開發,到最近HarmonyOs Next 純血鴻蒙,不再支持安卓,變化還是比較大。我這里是使用的最新版鴻蒙編譯器DevEco 5.05。

這里是下載地址開發-HarmonyOS NEXT鴻蒙應用開發平臺-華為開發者聯盟

安裝過程中需要華為開發者賬號,用手機和驗證碼就可以登錄,也不想安卓開發,這個配置哪個配置一堆,直接可以創建運行。

1.1? 創建項目

1.2? 版本和設備選擇,SDK需要參考手機系統版本進行選擇否則會出錯。設備版本可選可不選,鴻蒙是1次開發,多個設備可以運行,所以有此選擇。

1.3? app創建完成

二、工程文件分析

2.1? 源碼都在entry文件夾下面,其中entryablity就是活動文件,類似安卓開發的 maniactivity,里面有頁面啟動和關閉等回調函數。Index.ets為界面文件。

2.2? 各配置文件

app.json5 設置包的名稱,和圖標等

資源文件夾resouces,element里面為字符串,顏色資源。media里面為圖片和視頻資源。

build-profile.json5,api的模式選擇,這里選擇常用的stageMode。基于?Ability + UIAbility + ExtensionAbility?架構。

oh-package.json5項目依賴文件,使用har包等,需在這里申明。

三、第一個APP

?EntryAbility代碼
import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';const DOMAIN = 0x0000;export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate');}onDestroy(): void {hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onDestroy');}onWindowStageCreate(windowStage: window.WindowStage): void {// Main window is created, set main page for this abilityhilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate');windowStage.loadContent('pages/Index', (err) => {if (err.code) {hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err));return;}hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.');});}onWindowStageDestroy(): void {// Main window is destroyed, release UI related resourceshilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');}onForeground(): void {// Ability has brought to foregroundhilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onForeground');}onBackground(): void {// Ability has back to backgroundhilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onBackground');}
}

Index.ets代碼

@Entry
@Component
struct Index {@State message: string = 'Hello World';build() {RelativeContainer() {Text(this.message).id('HelloWorld').fontSize($r('app.float.page_text_font_size')).fontWeight(FontWeight.Bold).alignRules({center: { anchor: '__container__', align: VerticalAlign.Center },middle: { anchor: '__container__', align: HorizontalAlign.Center }}).onClick(() => {this.message = 'Welcome';})}.height('100%').width('100%')}
}

最終顯示,點擊標紅預覽器可以看到顯示效果,點擊“Hello World” 會顯示 “Welcome”

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85226.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85226.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85226.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

protobuf遇到protoc-gen-go: unable to determine Go import path for “xxx“

問題 這個錯誤是因為 .proto 文件中缺少必需的 go_package 選項。在 protobuf 生成 Go 代碼時,這是關鍵配置項。 pandaVM:~/dev/pb$ protoc --go_out. pb.proto protoc-gen-go: unable to determine Go import path for "pb.proto"Please specify eithe…

linux unix socket 通信demo

好,下面是已經整合完善的版本: ? 功能點(你要求的全部實現了): Unix Domain Socket (SOCK_STREAM) 服務端先啟動:正常通信 客戶端先啟動:等待服務端直到連接成功 客戶端每秒發送一條消息 服務端…

近期GitHub熱榜推薦

【1】fluentui-system-icons (HTML) 👨?💻 作者: microsoft 📦 倉庫: microsoft / fluentui-system-icons 🌐 鏈接: https://github.com/microsoft/fluentui-system-icons ? 星標&#xf…

Jupyter 是什么?基于瀏覽器的交互式計算環境

🧠 一、Jupyter 是什么? Jupyter 是一個基于瀏覽器的交互式計算環境,名字取自Julia Python R 三種語言,但現在已支持超過40種編程語言。它最核心的功能是讓你在同一個文檔(.ipynb 文件)中混合編寫代碼、…

CTF解題:[NSSCTF 2022 Spring Recruit]弱類型比較繞過

一、漏洞背景介紹 在 CTF(Capture The Flag)競賽和 Web 安全測試中,PHP 語言的類型比較漏洞是常見的考點。這類漏洞源于 PHP 的弱類型特性,即當使用進行比較時,PHP 會自動進行類型轉換,從而導致一些不符合…

【SQL】存儲過程 vs 普通 SQL

一、存儲過程 vs 普通 SQL 的核心區別 先明確兩者的本質: 普通 SQL:是直接執行的查詢 / 操作語句(如SELECT、INSERT),每次執行都要編譯,邏輯寫在應用端或直接運行。存儲過程:是預編譯并存儲在…

Vue.js第一節

初識Vue、插值操作、屬性綁定 初識&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>D…

前端打斷點

這個按鈕有個點擊事件&#xff0c;然后點擊這個js 即可進入到代碼中 如果這時想打一些臨時的表達式&#xff0c;可以按esc彈出console控制臺&#xff0c; 右上角有可以使用的變量

Jmeter接口測試與性能測試

&#x1f345; 點擊文末小卡片 &#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 目前最新版本發展到5.0版本&#xff0c;需要Java7以上版本環境&#xff0c;下載解壓目錄后&#xff0c;進入\apache-jmeter-5.0\bin\&#xff0c;雙擊ApacheJMete…

如何利用大模型搭建本地知識庫

要利用大模型搭建本地知識庫&#xff0c;核心在于&#xff1a;構建高質量知識內容源、使用向量化技術實現語義檢索、部署大語言模型以實現自然語言問答接口、設計本地知識庫的數據更新機制、注重隱私與合規性控制。其中&#xff0c;使用向量化技術實現語義檢索至關重要&#xf…

vscode連接不上服務器問題修復

原因&#xff1a;運維人員修復漏洞&#xff0c;升級了服務器openssh版本&#xff0c;導致無法新建連接連上vscode 操作&#xff1a; 1.刪除云桌面上C:\Users\.ssh 路徑下known_hosts文件&#xff1b; 2.設置免密登錄 1&#xff09;執行 ssh-keygen -t rsa -C "your_em…

架構優化——submodule轉為subtree

文章目錄 背景subtree優勢submodule切換到subtree腳本subtree使用切開發分支推送代碼同步代碼 背景 submodule過多&#xff0c;目前20個submodule需要切出20個分支&#xff0c;查看提交記錄、切分支等使用起來麻煩。 團隊深受困擾&#xff01; subtree優勢 繼承submodule的…

車載軟件架構 --- 汽車中央控制單元HPC軟件架構方案實例

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

零基礎開始的網工之路第二十一天------性能優化

目錄 一、性能優化概述 二、性能監控工具 1. 基礎工具 2. 高級工具 三、子系統優化策略 1. CPU優化 2. 內存優化 3. 磁盤I/O優化 4. 網絡優化 四、資源限制優化 1. ulimit 2. cgroups&#xff08;控制組&#xff09; 五、安全與注意事項 六、綜合案例 案例1&…

【Google Chrome】谷歌瀏覽器歷史版本下載

最新版&#xff1a; Chrome for Testing availability 谷歌瀏覽器 Chrome 最新版離線安裝包下載地址 v137.0.7151.104 - 每日自動更新 | 異次元軟件 歷史版本&#xff1a; Download Google Chrome 105.0.5195.102 for Windows - Filehippo.com chrome瀏覽器,chrome插件,谷…

線性表實訓(頭歌實踐平臺課程答案詳細解說)

C 和 C 支持 4 種基本數據類型&#xff08;整型、浮點型、字符型、布爾型&#xff09;和 3 種復合型數據類型&#xff08;數組、指針、結構&#xff09;。復合類型的數據對于數據結構至關重要&#xff0c;因為從某種程度上來說數據量的多少和數據結構的好壞決定了程序的復雜程度…

【前端】threeJS學習(長期更新)

簡介 Three.js是用JavaScript編寫的第三方庫&#xff0c;用于實現3D功能&#xff0c;基于WebGL進行封裝。 一個3D模型的建立主要由以下幾個部分組成&#xff08;基本版&#xff09;&#xff1a; * 創建場景scene--相機camera--渲染器renderer--(燈光light)&#xff1b; *…

Linux系統--權限

大家好&#xff0c;上一次我們學習了關于Linux中的基礎指令&#xff0c;那么我們今天來繼續學習Linux的新的內容&#xff1a;權限。那么話不多說&#xff0c;我們開始今天的學習&#xff1a; 目錄 Linux權限 1. Linux權限的概念 2. Linux權限管理 3. ?件權限值的表??法…

論文筆記 <交通燈> <多智能體>DERLight雙重經驗回放燈機制

今天看的論文是這篇 主要提出了傳統優先級經驗回放&#xff08;PER&#xff09;在復雜交通場景中效率低下&#xff0c;使用二叉樹存儲樣本&#xff0c;導致大規模樣本時計算復雜度高。而且不丟棄樣本&#xff0c;造成存儲空間浪費。 雙重經驗池&#xff1a; 為了解決以上問題…

Chromium 136 編譯指南 macOS篇:環境準備與系統配置(一)

1. 引言 在瀏覽器技術的星空中&#xff0c;Chromium 猶如一顆最亮的明星&#xff0c;照亮了整個互聯網的發展軌跡。作為推動現代 Web 技術革命的核心引擎&#xff0c;Chromium 不僅是 Google Chrome 的技術基石&#xff0c;更是 Microsoft Edge、Opera、以及眾多定制瀏覽器的共…