鸿蒙应用开发DevEco Studio工程目录模块介绍

面向开发者,HarmonyOS 推出了 DevEco Studio 和 Dev Device Tool 两款开发工具,前者目前迭代至 3.1 版本(对外开放版本),用于开发 HarmonyOS 应用;后者用于开发智能设备

在这里插入图片描述
应用的工程主体结构如上图

在这里我们可以看到有几个主要的模块,就是AppScopeentry 目录, 还有oh_modules 这三个主要的目录。
在这里有两个隐藏文件.hvigor这个是发布时候存储配置构建文件信息的目录
.idea是一个开发工具有关的配置就放在这两个里面

在这里插入图片描述

AppScope 目录包含一个 app.json5 文件和 resources 文件夹 。这个文件存放的是全局的公共资源的文件

  • app.json5 用来配置应用的 bundle 名称(可以理解为应用包名)、bundleType 可以设置为 app 和 atomicService,用于标识应用是普通应用或元服务;其他信息主要是应用的版本信息、SDK 支持版本、应用图标和名称、设备特殊配置以及是否支持多工程联合开发等

  • resources 目录 存放公共类型资源文件,module 中 media 的图片 icon 资源不能和该目录下 media 中的 icon 重名

    • elements一般存放一些字符类型的资源
    • media 一般存放图片视频这些媒体资源

app.json5 存放的是这个hap的一些全局工具资源的配置

{"app": {"bundleName": "com.example.myapplication","vendor": "example","versionCode": 1000000,"versionName": "1.0.0","icon": "$media:app_icon","label": "$string:app_name"}
}

在这里插入图片描述
entry 目录是当前工程中的一个 module,一个工程允许包含一个 entry 类型 module 和 多个 feature 类型module,前者表示是应用的主模块,后者是应用的动态特性模块;该目录下包含了这个module所有的代码、文本、多媒体、图片、配置等各种资源;

在这里main 目录下面包含的是这个APP主要模块的代码,ohosTest 包含的是这个模块对应的测试代码。

我们可以发现在这里有一个oh-package.json5的文件,这个表示的是这个模块配置的第三方依赖的文件。但是我们还可以发现一个整个项目的配置依赖文件, 下面这个是工程级 oh-package.json5

在这里插入图片描述

这个模块需要使用第三方库,那么我们可以看到这样的引用方式

{"license": "","devDependencies": {},"author": "","name": "entry","description": "Please describe the basic information.","main": "","version": "1.0.0","dependencies": { //在大括号内添加依赖"@ohos/lottie": "^2.0.0"} 
}

b4539a21d938410db21bcbb8d3ff5ee6.png)

hvigor 目录: hvigor 是一款基于任务管理机制实现的一套自动化构建工具(基于TypeScript + npm 包管理机制实现的轻量化前端构建工具),HarmonyOS 在迭代时,使用它替代 Gradle。该目录下有2个配置文件:

  • hvigor-config.json5:会以插件形式引入 hvigor 构建工具并且标识其版本;

  • hvigor-wrapper.js:是一个 js 脚本文件,与 hvigor相关的包装器

HarmonyOS API Version 8 ~ 9 采用 Hvigor构建工具和构建插件(hvigor-ohos-plugin)组成,该插件利用Hvigor的任务编排机制实现应用/服务构建任务流的执行,完成HAP/APP的构建打包,应用于应用/服务的构建。使用该插件需要在 hvigor 目录下 hvigor-config.json5 中配置。

{“hvigorVersion”: "2.2.1","dependencies": {"@ohos/hvigor-ohos-plugin": "2.2.1"}
}

**oh_modules:**用于存放三方库依赖信息


一些其他的文件信息

**build-profile.json5:**是应用的构建配置脚本,其中配置了应用签名信息、编译和适配 SDK 版本,构建产物以及多个 module 信息,在这里还可以配置不同 module 的多 target 构建信息

build-profile.json5 的 buildOption 中还可以配置 HAP 依赖的/需要排除的 .so 文件以及CPP相关配置。

{"apiType": 'stageMode',"buildOption": {},//使用 target 构建多目标产物"targets": [{"name": "default","runtimeOS": "HarmonyOS"},{"name": "free","runtimeOS": "HarmonyOS","config": {"deviceType": ["phone"]}},{"name": "pay","runtimeOS": "HarmonyOS","config": {"deviceType": ["phone"]},"source": {//定义多目标产物的源码集,不同版本产物,可定义不同的源码集"pages": ["pages/Index","pages/home/AbilityPage","pages/home/NewsPage"]},
//      定义多目标构建产物的资源目录"resource": {"directories": ["./src/main/resources_default"]}},{"name": "ohosTest",}]
}

HarmonyOS 要求在工程级别 build-profile.json5 文件中配置调试或发布证书、密钥库文件和密钥等信息。

"material": {"certpath": "abc.cer", //华为颁发的数字证书"storePassword": "********", //密钥库密码,会以密文形式呈现"keyAlias": "alias","keyPassword": "********",  //密钥密码,会以密文形式呈现"profile": "abc.p7b", //"signAlg": "SHA256withECDSA","storeFile": "abc.p12" //本地生成密钥库}

签名配置流程和配置证书等信息说明

首先在 DevStudio 执行 Build -> Generate Key and CSR , 分别生成本地密钥库(.p12 后缀文件)和 证书请求文件(.csr 后缀文件,Certificate Signing Request)

在这里插入图片描述

在这里插入图片描述

密钥库: 包含非对称加密中使用的公钥和私钥,存储在密钥库文件中,公钥和私钥对用于数字签名和验证;

证书请求文件:包含密钥对中的公钥和公共名称、组织名称、组织单位等信息,用于向AppGallery Connect申请数字证书;

申请华为数字证书:登录华为开发者联盟,向 AppGallery Connect -> 用户与访问 -> 证书管理 -> 新增证书 按照流程申请华为的数字证书,在申请时要选择提交本地 证书请求文件;

申请 Profile 文件:AppGallery Connect -> 我的项目 -> HAP Provision Profile 申请 Profile 文件,申请时要选择对应的华为数字证书

以上信息的配置还可以使用 DevEco Studio 的签名面板自动进行配置:

需要注意的是,使用签名面板自动配置,必须通过USB 接口连接可调试设备(可调试设备需要在 华为网站进行绑定)。
勾选 Automatically generate signature 后会自动生成相关信息,之后点击 apply 或 ok 即可。

hvigorfile.ts:应用级的编译构建人物脚本

hvigorw 和 hvigorw.bat: Hvigor 构建工具的可执行文件和批处理文件

在这里, 有bat的这个表示的是Windows下的执行脚本

@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem  Hvigor startup script for Windows
@rem
@rem ##########################################################################@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocalset DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fiset WRAPPER_MODULE_PATH=%APP_HOME%\hvigor\hvigor-wrapper.js
set NODE_EXE=node.exegoto start:start
@rem Find node.exe
if defined NODE_HOME goto findNodeFromNodeHome%NODE_EXE% --version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto executeecho.
echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH.
echo.
echo Please set the NODE_HOME variable in your environment to match the
echo location of your NodeJs installation.goto fail:findNodeFromNodeHome
set NODE_HOME=%NODE_HOME:"=%
set NODE_EXE_PATH=%NODE_HOME%/%NODE_EXE%if exist "%NODE_EXE_PATH%" goto execute
echo.
echo ERROR: NODE_HOME is not set and no 'node' command could be found in your PATH.
echo.
echo Please set the NODE_HOME variable in your environment to match the
echo location of your NodeJs installation.goto fail:execute
@rem Execute hvigor
"%NODE_EXE%" %WRAPPER_MODULE_PATH% %*if "%ERRORLEVEL%" == "0" goto hvigorwEnd:fail
exit /b 1:hvigorwEnd
if "%OS%" == "Windows_NT" endlocal:end

没有bat的这个文件就是我们Linux下的执行脚本。

#!/bin/bash# ----------------------------------------------------------------------------
#  Hvigor startup script, version 1.0.0
# 
#  Required ENV vars:
#  ------------------
#    NODE_HOME - location of a Node home dir
#    or 
#    Add /usr/local/nodejs/bin to the PATH environment variable
# ----------------------------------------------------------------------------HVIGOR_APP_HOME=$(dirname $(readlink -f $0))
HVIGOR_WRAPPER_SCRIPT=${HVIGOR_APP_HOME}/hvigor/hvigor-wrapper.js
warn() {echo ""echo -e "\033[1;33m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m"
}error() {echo ""echo -e "\033[1;31m`date '+[%Y-%m-%d %H:%M:%S]'`$@\033[0m"
}fail() {error "$@"exit 1
}# Determine node to start hvigor wrapper script
if [ -n "${NODE_HOME}" ];thenEXECUTABLE_NODE="${NODE_HOME}/bin/node"if [ ! -x "$EXECUTABLE_NODE" ];thenfail "ERROR: NODE_HOME is set to an invalid directory,check $NODE_HOME\n\nPlease set NODE_HOME in your environment to the location where your nodejs installed"fi
elseEXECUTABLE_NODE="node"which ${EXECUTABLE_NODE} > /dev/null 2>&1 || fail "ERROR: NODE_HOME is not set and not 'node' command found in your path"
fi# Check hvigor wrapper script
if [ ! -r "$HVIGOR_WRAPPER_SCRIPT" ];thenfail "ERROR: Couldn't find hvigor/hvigor-wrapper.js in ${HVIGOR_APP_HOME}"
fi# start hvigor-wrapper script
exec "${EXECUTABLE_NODE}" \"${HVIGOR_WRAPPER_SCRIPT}" "$@"

这两个文件是用来做ohpm编译构建的执行的工具,实际上功能是完全一样的。

local.properties:项目的私有属性配置文件,默认会配置 nodejs 的安装目录以及 harmonyOS SDK;

**oh-package.json5:**用于编译和构建项目,内部配置了模块级的依赖文件(即三方库声明文件的入口和包名)

**oh-package-lock.json5:**是一个树形结构文件,用于描述项目依赖关系。文件包含了项目的所有依赖项和它们的版本信息。通过该文件,可以确保项目在不同环境中的构建一致性,并避免潜在的版本冲突问题。



无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程 https://www.cbedai.net/chichoxian

References

  1. https://www.bilibili.com/video/BV1Zc411v7wv?p=8&spm_id_from=pageDriver&vd_source=57623809cb42c86b58d359b44bfd8dcf
  2. https://juejin.cn/post/7322156771614392371

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/835007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编写一个C#程序,实现音乐文件的播放功能

一、作业要求 要求1: 1. 程序应能够读取MP3文件,并播放其中的音频。 2. 程序应能够处理可能出现的异常,如文件不存在、文件读取错误等。 3. 程序应具有良好的用户界面,方便用户进行操作。 4. 程序应具有良好的兼容性&#xf…

数据可视化训练第三天(富豪借钱问题可视化)

题目 一个穷人到富人那里去借钱,原以为富人不愿意,哪知富人一口答应了下来, 但提出了如下条件: 在30天中,富人第一天借给穷人1万元,第二天借给2万,以后每天所借的钱数都比上一天的多一万&…

C++数据结构——AVL树

前言:本篇文章将紧随二叉搜索树的节奏,分享一个新的数据结构——AVL树。 目录 一.AVL树概念 二.AVL树插入规则 三.AVL树实现 1.基本框架 2.插入 3.旋转 1)左\右单旋 2)左右/右左双旋 4.遍历 5.求树高度 6.判断平衡 7.…

仿真算法验证成功后,如何快速实现真机无缝切换?

Prometheus仿真优势 首先,我们先通过下面这个视频了解一下Prometheus仿真有哪些优势: 开源自主无人机平台重大更新!Promethus仿真到真机无缝切换 Prometheus仿真最大的优势之一是采用了模块化设计,对每个操作节点进行了封装&…

影刀进行shopee商品排名零代码爬取

需要研究shopee平台的排名更新时间段和周期,几分钟用影刀写了一个爬取应用,每10分钟进行一次排名爬取(以fan‘风扇’为例),0代码爬取。 打开’fan’关键词搜索网页;等待网页加载;滚动进一步加载…

如何使用Python为Excel文件添加预设文档属性和自定义文档属性

向Excel文件添加文档属性是专业地组织和管理电子表格数据的关键步骤。这些属性,如标题、作者、主题和关键词,增强了文件的元数据,使得在大型数据库或文件系统中跟踪、排序和搜索文档变得更加容易。通过包含这些信息,您不仅提高了文…

太牛了!360大佬编写的《应急响应指导手册》火了!(PDF限时3天领取)

免责声明: 请使用者遵守《中华人民共和国网络安全法》,由于传播、利用本账号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号及作者不为此承担任何责任。 简介 这份《应急响应指导手册》&#xf…

CSS跳动文字

<div class"loading-mask"><div class"loading-text"><span style"--i:1">加</span><span style"--i:2">载</span><span style"--i:3">中</span><span style"--i:…

android进阶-AIDL

参考&#xff1a;Android进阶——AIDL详解_android aidl-CSDN博客 AIDL&#xff08;Android 接口定义语言&#xff09;&#xff0c;可以使用它定义客户端与服务端进程间通信&#xff08;IPC&#xff09;的编程接口&#xff0c;在 Android 中&#xff0c;进程之间无法共享内存&…

Word设置代码块格式

前言 Word中无法像Markdown和LaTeX一样插入代码块&#xff0c;若要在Word中插入代码块可以手动设置代码块格式或自动粘贴代码块格式。若不追求完美高亮效果&#xff0c;可使用前者方案&#xff1b;若追求完美的高亮效果&#xff0c;可使用后者方案。下文介绍这2种方案。 手动…

C++ 多态的相关问题

目录 1. 第一题 2. 第二题 3. inline 函数可以是虚函数吗 4. 静态成员函数可以是虚函数吗 5. 构造函数可以是虚函数吗 6. 析构函数可以是虚函数吗 7. 拷贝构造和赋值运算符重载可以是虚函数吗 8. 对象访问普通函数快还是访问虚函数快 9. 虚函数表是什么阶段生成的&…

华为 Huawei 交换机 配置 Dot1q 终结子接口实现同设备 VLAN 间通信示例

组网需求 企业的不同部门拥有相同的业务&#xff0c;如上网、 VoIP 等业务&#xff0c;且各个部门中的用户位于不同的网段。目前存在不同的部门中相同的业务所属的VLAN 不相同&#xff0c;现需要实现不同VLAN中的用户相互通信。 如 图 7-7 所示&#xff0c;部门 1 和部门 2 中…

【拼多多笔试题汇总】2024-05-09-拼多多春招笔试题-三语言题解(Cpp/Java/Python)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新拼多多近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f…

常见物联网面试题详解

物联网一直是非常火热的行业&#xff0c;G端如智慧城市、智慧工厂、智慧园区、智慧水利、智慧矿山等行业&#xff0c;都会涉及到物联网&#xff0c;基本都是软硬一体&#xff0c;因此当面试相关企业时&#xff0c;物联网平台是面试企业重点考察的项&#xff0c;小伙伴如果从事相…

前端使用Compressor.js实现图片压缩上传

前端使用Compressor.js实现图片压缩上传 Compressor.js官方文档 安装 npm install compressorjs使用 在使用ElementUI或者其他UI框架的上传组件时&#xff0c;都会有上传之前的钩子函数&#xff0c;在这个函数中可以拿到原始file&#xff0c;这里我用VantUI的上传做演示 a…

财务管理|基于SprinBoot+vue的财务管理系统(源码+数据库+文档)

财务管理系统 目录 基于SprinBootvue的财务管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 1管理员功能模块 2员工功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1…

Docker快速搭建NAS服务——NextCloud

Docker快速搭建NAS服务——NextCloud 文章目录 前言NextCloud的搭建docker-compose文件编写运行及访问 总结 前言 本文主要讲解如何使用docker在本地快速搭建NAS服务&#xff0c;这里主要写如下两种&#xff1a; FileBrowser1&#xff1a;是一个开源的Web文件管理器&#xff…

idea运行项目报错提示:java: 错误: 不支持发行版本 19,让我来看看

在项目经常切换jdk时&#xff0c;这个error经常能遇到“不支持发行版本19”&#xff0c;这个问题修改起来其实很简单&#xff0c;但在真正操作到能够解决问题的那一步前&#xff0c;通常习惯先去查看配置的jdk版本是否是选择正确的&#xff0c;也就是先确认当前这个项目选择的j…

西湖大学英语听力考试音频无线发射系统-英语听力发射系统浅析

西湖大学英语听力考试音频无线发射系统-英语听力发射系统浅析 由北京海特伟业科技任洪卓发布于2024年5月10日 西湖大学&#xff0c;这所矗立于时代前沿的高等学府&#xff0c;始终秉持着创新精神和追求卓越的坚定信念&#xff0c;不断致力于教学质量的提升与学术研究的深化。其…

实体门店超-常规营销获客:218套落地方案/打造引流/锁客/复购/裂变营销

课程内容&#xff1a; 1 记住&#xff0c;生意不好不一定是你产品出了问题,mp4 2 生意人为什么要从产品思维向流量思维转型&#xff0c;社区超市每月多5万.mp4 3 实体老板不懂鱼塘理论只能等死&#xff0c;美业1招锁定275名年用户卡,mp4 4 餐饮赢销八部&#xff0c;帮你引爆…