鸿蒙应用开发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://xiahunao.cn/news/3031810.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

05.线程

进程有哪些缺陷? 1.创建的代价较高 进程是OS进行资源分配的基本单位,也就是说创建进程是需要分配资源的,所以创建代价很高 2.通信不方便 进程之间要想进行通信必须借助第三方资源(管道、内存映射、消息队列) 线程的优…

Java开发工具Idea的下载与激活

一,官网下载Idea 建议从官网下载,安全、可靠。 1,点击此处进入官网下载 2,进入官网之后点击[Support],点击浮窗左侧[Download and Install] 3,跳入如下新界面,点击Download进入下载界面 4&am…

汇昌联信数字:拼多多如何开个人店铺?有哪些教程?

在互联网经济飞速发展的当下,电子商务平台如雨后春笋般涌现,其中拼多多以其独特的社交电商模式迅速崛起,吸引了大批商家和个人卖家入驻。如果你正考虑在拼多多开设个人店铺,那么了解开店流程和相关教程就显得尤为重要。以下是关于…

水面垃圾监测识别摄像机

随着城市化进程的加快和旅游业的兴起,水域环境污染问题日益突出,水面垃圾成为环境保护的重要问题。为有效监测和清理水面垃圾,水面垃圾监测识别摄像机应运而生。水面垃圾监测识别摄像机利用高清晰度摄像头和智能识别算法,能够实时…

大语言模型LLM原理篇

大模型席卷全球,彷佛得模型者得天下。对于IT行业来说,以后可能没有各种软件了,只有各种各样的智体(Agent)调用各种各样的API。在这种大势下,笔者也阅读了很多大模型相关的资料,和很多新手一样&a…

STL-Setmap

前言 大家好,我是jiantaoyab,我们将进入到CSTL 的学习。STL在各各C的头文件中,以源代码的形式出现,不仅要会用,还要了解底层的实现。源码之前,了无秘密。 STL六大组件 Container通过Allocator取得数据储存…

【XR806开发板试用】试用SWD+Jlink调试

XR806开发板,只能使用编写代码,然后通过UART下载,没法在线debug, 效率会差很多,官方没有提供这一方面的资料。 先查CPU, 官方介绍是arm-china的MC1,通过armv8 Architecture refenence manual资料…

利用106短信群发平台能否提升沟通效率?

利用106短信群发平台确实能够显著提升沟通效率,具体体现在以下几个方面: 1.快速传递信息:106短信群发平台能够实现信息的快速传递。一旦设置好发送内容和接收群体,短信便能在瞬间发送至大量用户。这种即时性确保了信息的迅速传达…

Gitlab:从其它项目组里导入一个项目

1.首先获取原项目的http地址 http://ip/projectGroup/ProjectX.git其中,ip 为公司gitlab内网地址。 2.进入目的项目组进行创建 首先,需要拥有一个该组拥有者权限的账号,才能进行后续的操作。 2.1.点击创建项目按钮 2.2.选择导入项目 其中…

11.买卖股票的最佳时机Ⅰ

文章目录 题目简介题目解答解法一:一次遍历代码:复杂度分析: 题目链接 大家好,我是晓星航。今天为大家带来的是 买卖股票的最佳时机面试题Ⅰ 相关的讲解!😀 题目简介 题目解答 解法一:一次遍历…

怎么让电脑耳机和音响都有声音

电脑耳机音响不能同时用没声音怎么办 一般来说,重新开机后问题能够得到解决。右击“我的电脑”---“属性”---“硬件”---“设备管理器”,打开“声音、视频和游戏控制器”有无问题,即看前面有没有出现黄色的“”。 如果您的 电脑 耳机能正常…

【Linux系统编程】第十六弹---冯诺依曼体系结构与操作系统

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、冯诺依曼体系结构 2、操作系统原理 2.1、什么是操作系统? 2.2、用图解释操作系统 2.3、理解操作系统 总结 …

路由器、交换机和网卡

大家使用VMware安装镜像之后,是不是都会考虑虚拟机的镜像系统怎么连上网的,它的连接方式是什么,它ip是什么? 路由器、交换机和网卡 1.路由器 一般有几个功能,第一个是网关、第二个是扩展有线网络端口、第三个是WiFi功…

在做题中学习(55):一维前缀和模板

【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) 题目解释: 注意:下标从1开始的。 l 和 r就是对这n个整数去取一个区间,例如示例一: (1,2) 区间 就是算出1 2 4 中 1,2下标对应值的和,12 3 同理,(2,3) …

SHAP分析+立方样条拟合的展示可能的交互作用

SHAP分析立方样条的拟合展示可能的交互作用 SHAP分析的另一个特点就是对交互作用的分析,计算交互作用的SHAP值,绘制相关的交互作用图表,但是仅局限于xgboost模型,其它的模型不能单独计算相互作用的SHAP值,也就不能绘制…

React 第二十九章 React 和 Vue 描述页面的区别

面试题:React 和 Vue 是如何描述 UI 界面的?有一些什么样的区别? 标准且浅显的回答: React 中使用的是 JSX,Vue 中使用的是模板来描述界面 前端领域经过长期的发展,目前有两种主流的描述 UI 的方案&#xf…

读写备份寄存器BKP与实时时钟RTC

文章目录 读写备份寄存器接线图代码 RTC实时时钟接线图代码 读写备份寄存器 接线图 即接个3.3v的电源到VBT引脚 代码 代码效果:第一次写入备份寄存器,下载程序后再注释掉,再进行下载,之前写入的数据还会保存在备份寄存器中&am…

QQ无人直播秘籍:24小时自动化短剧,边睡边赚,月入过万实战分享!

在如今经济大环境如此糟糕的时代,寻找一种简单、有效的方式来实现日入1000的梦想成为了许多人的追求。而QQ短剧24小时无人直播项目,则是一个备受瞩目的赚钱机会。借助腾讯官方流量扶持,这个项目不仅能够让创业者轻松入门,还能够实…

新火种AI|正面硬刚OpenAI与谷歌?微软竟然偷偷自研出5000亿参数大模型!

在AI领域,微软公司一直以其独到的创新性和前瞻性而闻名。也正因此,它抢先在AI赛道嗅到商机,并极具预判性的投资了OpenAI,使其成为自己在AI赛道上的最强助力。不过,微软的野心不止于此。 根据The Information 5月6日的…

光耦推荐—高速风筒方案中用到哪些光耦型号

高速风筒是现代生活中常见的电器设备,广泛应用于家庭、商业和工业领域;光耦是一种能够将输入信号转换成输出信号的元器件,其作用在于将电气信号转换成光信号,从而实现电路的隔离和保护;采用光耦可实现对风机转速和温度…