HarmonyOS ArkTS工程目录结构(Stage模型)

news2025/6/16 20:38:37

1. ArkTS工程目录结构(Stage模型)

官方文档(https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/start-with-ets-stage-0000001477980905-V2)
在这里插入图片描述
在这里插入图片描述

1.1. AppScope

  AppScope > app.json5:应用的全局配置信息。详见app.json5配置文件

{
  "app": {
    /*包名*/
    "bundleName": "com.example.demo",
    /*标识应用的Bundle类型,用于区分应用或者原子化服务。该标签可选值为app 和 atomicService。(-app:当前Bundle为普通应用。-atomicService:当前Bundle为元服务),该标签可以缺省,缺省为app*/
    "bundleType": "app",
    /*应用开发厂商*/
    "vendor": "example",
    /*版本号(该标签值为32位非负整数。此数字仅用于确定某个版本是否比另一个版本更新,数值越大表示版本越高。开发者可以将该值设置为任何正整数,但是必须确保应用的新版本都
    使用比旧版本更大的值。该标签不可缺省,versionCode 值应小于2^31次方)*/
    "versionCode": 10000,
    /*版本名称(该标签仅由数字和点构成,推荐采用 "A.B.C.D"四段式的形式。四段式推荐的含义如下:
    第一段:主版本号/Major,范围0-99,重大修改的版本,如实现新的大功能或重大变化。
    第二段:次版本号/Minor,范围0-99,表示实现较突出的特点,如新功能添加或重大问题修复)。
    第三段:特性版本号/Feature,范围0-99,标识规划的新版本特性。
    第四段:修订版本号/Patch,范围0-999,表示维护版本,修复bug
    标签最大字节长度为127.*/
    "versionName": "1.0.0",
    /*应用图标,该标签不可缺省*/
    "icon": "$media:app_icon",
    /*应用的名称,该标签不可缺省*/
    "label": "$string:app_name",
    /*标识应用是否可调试,该标签由IDE编译构建时生成(-true:可调试;-false:不可调试),该标签可以缺省,缺省为false*/
    "debug": true,
    /*标识应用的描述信息,标签值是字符串类型(最大255个字节)或对描述内容的字符串资源索引。该标签可缺省,缺省值为空*/
    "description": "",
  }
}

1.2. entry

  entry:HarmonyOS工程模块,编译构建生成一个HAP包。
(1)src > main > ets:用于存放ArkTS源码。
(2)src > main > ets > entryability:应用/服务的入口。
(3)src > main > ets > pages:应用/服务包含的页面。
(4)src > main > resources:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。关于资源文件,详见资源分类与访问。
(5)src > main > module.json5:Stage模型模块配置文件。主要包含HAP包的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。具体的配置文件说明,详见module.json5配置文件。

{
  "module": {
    /*标识当前Module的名称,标签值采用字符串表示(最大长度31个字节),该名称在整个应用中要唯一,仅支持英文字符。不可缺省*/
    "name": "entry",
    /*标识当前Module的类型。类型有两种,分别:
    -entry:应用的主模块。
    -feature:应用的动态特性模块。
 
    不可缺省
    */
    "type": "entry",
    /*标识当前Module所对应的代码路径,标签值为字符串(最长127字节)。 该标签值可缺省,缺省值为空*/
    "srcEntry": "",
    /*标识当前Module的描述信息,标签值是字符串类型(最长255字节)或对描述内容的字符串资源索引,可缺省,缺省值为空*/
    "description": "$string:module_desc",
    /*标识当前Module的入口UIAbility名称或者ExtensionAbility名称。标签最大长度为255。字符串,可缺省,缺省值为空*/
    "mainElement": "EntryAbility",
    /*标识当前Module可以运行在哪类设备上,标签值采用字符串数组的表示。字符串数组,不可缺省*/
    "deviceTypes": [
      "phone",
      "tablet"
    ],
    /*标识当前Module是否在用户主动安装的时候安装,表示该Module对应的HAP是否跟随应用一起安装。
    -true:主动安装时安装。
    -false:主动安装时不安装
 
      布尔值,不可缺省
    */
    "deliveryWithInstall": true,
    /*标识当前Module是否支持免安装特性
    -true:表示支持免安装特性,且符合免安装约束。
    -false:表示不支持免安装特性
 
    说明:
    - 当应用的entry类型Module的该字段配置为true时,该应用的feature类型的该字段也需要配置为true。
    -当应用的entry类型Module的该字段配置为false时,该应用的feature类型的该字段根据业务需求配置true或false
 
    布尔值,不可缺省
    */
    "installationFree": false,
    /*标识当前Module的profile资源,用于列举每个页面信息。该标签最大长度为255个字节。
        字符串,在有UIAbility的场景下,该标签不可缺省*/
    "pages": "$profile:main_pages",
    /*标识当前Module中UIAbility的配置信息,标签值为数组类型,只对当前UIAbility生效。  对象,可缺省,缺省值为空*/
    "abilities": [
      {
        /*标识当前UIAbility组件的名称,该名称在整个应用要唯一,标签值采用字符串表示(最大长度127字节),仅支持英文字符。字符串,不可缺省*/
        "name": "EntryAbility",
        /*该标签标识入口UIAbility的代码路径,标签值为字符串(最长127字节)*/
        "srcEntry": "./ets/entryability/EntryAbility.ts",
        /*标识当前UIAbility组件的启动模式,可选标签值:
        - multiton:多实例模式,每次启动创建一个新的实例。
        -singleton:单实例模式,仅第一次启动创建新实例。
        -specified:指定实例模式,运行时由开发者决定是否创建新实例。
 
        字符串,可缺省,该标签缺省为 "singleton"。
        */
        "launchType": "singleton",
        /*标识当前UIAbility组件的描述信息,标签值是字符串类型(最长255字节)或对描述内容的资源索引。字符串,可缺省,缺省值为空*/
        "description": "$string:EntryAbility_desc",
        /*标识当前UIAbility组件的图标,标签值为图标资源文件的索引。字符串,该标签可缺省,缺省值为空。如果UIAbility被配置为MainElement,该标签必须配置*/
        "icon": "$media:app_icon",
        /*标识当前UIAbility组件*/
        "label": "$string:EntryAbility_label",
        /*标识当前UIAbility组件启动页面图标资源文件的索引。取值示例:$media:icon。该标签最大字节长度为255。字符串,不可缺省*/
        "startWindowIcon": "$media:icon",
        /*标识当前UIAbility组件启动页面背景颜色资源文件的索引。取值示例:$color:red。该标签最大字节长度为255。该标签最大字节长度 255。字符串,不可缺省。*/
        "startWindowBackground": "$color:start_window_background",
        /*标识当前UIAbility组件是否可以被其他应用调用。
        -true:表示可以被其他应用调用。
        -false:表示不可以被其他应用调用。
 
        布尔值,缺省值为false*/
        "exported": true,
        /*标识当前UIAbility组件或ExtensionAbility组件能够接收的Want特征集,为数组格式。配置规则:
        - 对于Entry类型的HAP,应用可以配置多个具有入口能力的skills标签(即配置了ohos.want.action.home 和 entity.system.home)。
        - 对于Feature类型的HAP,只有应用可以配置具有入口能力的skills标签,服务不允许配置。
 
        对象数组,可缺省,缺省值为空
        */
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ],
    /*标识当前应用运行时需向系统申请的权限集合。对象,该标签可缺省,缺省值为空*/
    'requestPermissions': [
      {
        "name": "ohos.permission.INTERNET",
        "reason": "$string:dependency_reason",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      }
    ]
  }
}

(6)build-profile.json5:当前的模块信息、编译信息配置项,包括buildOption、targets配置等。其中targets中可配置当前运行环境,默认为HarmonyOS。
(7)hvigorfile.ts:模块级编译构建任务脚本,开发者可以自定义相关任务和代码实现。

1.3. oh_modules

  oh_modules:用于存放三方库依赖信息。关于原npm工程适配ohpm操作,请参考历史工程迁移。

1.4. build-profile.json5

  build-profile.json5:应用级配置信息,包括签名、产品配置等。

1.5. hvigorfile.ts

  hvigorfile.ts:应用级编译构建任务脚本。

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

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

相关文章

高级语言讲义2010计专(仅高级语言部分)

1.编写一程序&#xff0c;对输入的正整数&#xff0c;求他的约数和。 如&#xff1a;18的约数和为1236939 #include <stdio.h>int getsum(int n){int i,sum0;for(i1;i<n;i)if(n%i0)sumi;return sum; } int main(){int sum getsum(18);printf("%d",sum); …

【UE5】游戏框架GamePlay

项目资源文末百度网盘自取 游戏框架 游戏 由 游戏模式(GameMode) 和 游戏状态(GameState) 所组成 加入游戏的 人类玩家 与 玩家控制器(PlayerController) 相关联 玩家控制器允许玩家在游戏中拥有 HUD&#xff0c;这样他们就能在关卡中拥有物理代表 玩家控制器还向玩家提供 …

XSS靶场-DOM型初级关卡

一、环境 XSS靶场 二、闯关 1、第一关 先看源码 使用DOM型&#xff0c;获取h2标签&#xff0c;使用innerHTML将内容插入到h2中 我们直接插入<script>标签试一下 明显插入到h2标签中了&#xff0c;为什么不显示呢&#xff1f;看一下官方文档 尽管插入进去了&#xff0…

腾讯云轻量服务器流量用完了怎么办?停机吗?

腾讯云轻量服务器流量用完了怎么办&#xff1f;超额流量另外支付流量费&#xff0c;流量价格为0.8元/GB&#xff0c;会自动扣你的腾讯云余额&#xff0c;如果你的腾讯云账号余额不足&#xff0c;那么你的轻量应用服务器会面临停机&#xff0c;停机后外网无法访问&#xff0c;继…

Spring Boot单元测试与热部署简析

1 Spring Boot的简介 Spring Boot是一个用于构建独立的、生产级别的Spring应用程序的框架。它简化了Spring应用程序的开发过程&#xff0c;提供了自动配置和默认配置&#xff0c;使得开发者只需专注于业务逻辑的实现&#xff0c;而不用去关注繁琐的配置问题。 Spring …

【MATLAB】MATLAB转C/C++语言并部署到VS2019

首先将你要转换的代码保存 function [outputArg1, outputArg2] test(inputArg1,inputArg2)print(inputArg1inputArg2)outputArg1double(inputArg1inputArg2);outputArg2double(inputArg1*inputArg2); end在APP中找到MATLAB Coder 选择保存的文件 C/C中需要给变量定义类型&…

江科大stm32学习笔记——【5-1】EXIT外部中断

1.中断系统 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序&#xff0c;处理完成后返回原来被暂停的位置继续运行。 外部中断&#xff1a;…

推理判断-聂佳-判读4-定义判断

知识点讲解 考点1 快速识别有效信息 考点2 同构选项排除 题目 考点1 快速识别有效信息 考点2 同构选项排除 总结

ubuntu debian apt deb debootstrap根文件系统制作 利用国内源加速 清华源

参考项目 https://github.com/Kron4ek/Wine-Builds/blob/master/create_ubuntu_bootstraps.sh 制作一个最小的deb 根文件系统 sudo apt install debootstrap debootstrap --arch amd64 jammy ~/tmp/ubuntu-jammy-bootstrap https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ 命…

【kubernetes】关于k8s集群中的ingress规则案例

目录 一、k8s 对外服务之 Ingress 1.1什么是ingress 1.2外部的应用能够访问集群内的服务有哪些方案&#xff1f; 1.3Ingress 组成 1.4Ingress-Nginx 工作原理 1.5ingress 暴露服务的方式 二、实操ingress暴露服务 前期.部署 nginx-ingress-controller 2.1基于host网络…

Hi3516DV500+SC2210 AIISP 黑光相机

1. Hi3516DV500 Hi3516DV500是一颗面向行业市场推出的高清智能网络摄像头SoC。该芯片最高支持2路sensor输入&#xff0c;支持最高5M30fps的ISP图像处理能力&#xff0c;支持2F WDR、多级降噪、六轴防抖、多光谱融合等多种传统图像增强和处理算法&#xff0c;支持通过AI算法对输…

实施工程师的项目流程

实施工程师负责项目的执行和实施&#xff0c;他的项目流程&#xff1a; 1. 项目准备阶段&#xff1a; - 确认项目需求和目标。 - 制定项目计划和工作范围。 - 分配资源和制定预算。 - 确定项目团队成员和角色。 2. 设计和准备阶段&#xff1a; - 分析和评估项…

187基于matlab的弹道目标跟踪滤波方法

基于matlab的弹道目标跟踪滤波方法&#xff0c;扩展卡尔曼滤波&#xff08;extended Kalman filter, EKF&#xff09;、转换测量卡尔曼滤波&#xff08;conversion measurement Kalman filter, CMKF&#xff09;跟踪滤波&#xff0c;得到距离、方位角、俯仰角误差结果。程序已调…

力扣hot100:76.最小覆盖子串(滑动窗口)

本题使用滑动窗口解决&#xff0c;用right表示滑动窗口的右边界&#xff0c;left表示滑动窗口的左边界。寻找可行解&#xff0c;我们可以这样约定滑动窗口的意义&#xff1a;right指针向右移动&#xff0c;是使得滑动窗口找到可行解。left指针向右移动是为了更新窗口使得其可以…

【蓝牙协议栈】【经典蓝牙】【BLE蓝牙】蓝牙协议规范(射频、基带链路控制、链路管理)

目录 1. 蓝牙协议规范&#xff08;射频、基带链路控制、链路管理&#xff09; 1.1 射频协议 1.2 基带与链路控制协议 1.3 链路管理器 1. 蓝牙协议规范&#xff08;射频、基带链路控制、链路管理&#xff09; 蓝牙协议是蓝牙设备间交换信息所应该遵守的规则。与开放系…

VMware虚拟机安装Ubuntu kylin22.04系统教程(附截图详细步骤)

一、版本信息 虚拟机产品&#xff1a;VMware Workstation 17 Pro 虚拟机版本&#xff1a;17.0.0 build-20800274 ISO映像文件&#xff1a;ubuntukylin-22.04-pro-amd64.iso 二、安装步骤 打开虚拟机&#xff0c;点击创建新的虚拟机&#xff1a; 选择自定义&#xff1a; 硬…

js【深度解析】代码的执行顺序

代码的分类 我们将每一句要执行的 js 代码当做一个任务&#xff0c;则 js 代码可以按照其执行方式的不同&#xff0c;按下图分类 同步任务&#xff1a;立即执行的代码异步任务&#xff1a;延迟执行的代码 微任务&#xff1a;被放入微任务队列&#xff08;micro task queue&…

AI给开发经验3-5年的程序员的一些建议

Q: 你是一名CTO&#xff0c;请你给开发经验3-5年的程序员一些职业和生活方面的建议&#xff0c;1500字。 A: 作为一名有着丰富经验的CTO&#xff0c;我深知程序员在职业道路上的成长并非一帆风顺。针对开发经验在3-5年的程序员&#xff0c;我想从职业和生活两个方面&#xff0…

【NR 定位】3GPP NR Positioning 5G定位标准解读(十一)-增强的小区ID定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

idm对比aria2哪个好 aria2和idm哪个快 Aria2和IDM的原理

一、idm对比aria2哪个好 下面对aria2和idm进行对比&#xff0c;看看哪款更好。 idm: 优势&#xff1a; 1&#xff09;可将下载速度提升5倍以上&#xff1b; 2&#xff09;界面友好&#xff0c;操作简便&#xff1b; 3&#xff09;支持多个主流的浏览器&#xff1b; 4&am…