当前位置: 首页 > news >正文

鸿蒙-项目创建及了解

目录

项目创建

 1.App普通项目创建

2.元服务创建

项目结构

.hvigor

.idea

AppScope

entry

EntryAbility.ts

pages

resources

module.json5

ohosTest 

hvigorfile.ts

build-profile.json5 

oh_modules

build-profile.json5

hvigorfile.ts

项目运行


项目创建

File->new->create Project

 1.App普通项目创建

第一个为空白模版。选中可以看到对应的创建能力模版


2.元服务创建

元服务可以理解为卡片式的服务模式。类似下图。

项目结构

这里主要讲的是应用的项目结构.

从上到下。

.hvigor

存储构建配置文件信息。

.idea

存储项目的配置信息。

AppScope

翻译过来是【应用程序范围】。它是存放了全局的资源文件及配置信息
resources为资源文件。app.json5为全局配置信息
 

{"app": {"bundleName": "com.application.myapplication",// 标识应用的Bundle名称,用于标识应用的唯一性。"bundleType": "app",// 标识应用的Bundle类型,用于区分应用或者原子化服务。如app或者atomicService"vendor": "example",//应用开发厂商的描述"versionCode": 1000000,//应用的版本号"versionName": "1.0.0",//应用版本号的文字描述,用于向用户展示。"icon": "$media:app_icon",//应用的图标"label": "$string:app_name",//应用的名称"description": "$string:description_application",//应用的描述信息"minAPIVersion": 9,//应用运行需要的SDK的API最小版本。"targetAPIVersion": 9,//应用运行需要的API目标版本。"apiReleaseType": "Release",//应用运行需要的API目标版本的类型,(可不填,系统自动填入)Canary:受限发布的版本。  Beta:公开发布的Beta版本。  Release:公开发布的正式版本。"debug": false,//标识应用是否可调试,true:可调试。 false:不可调试。"car": {  //tablet、tv、wearable、car、phone可以对不对设备单独设置参数,如不设置则默认用公共的"minAPIVersion": 8,}},
}

app.json5

entry

应用模块

EntryAbility.ts

承载Ability生命周期。也是指定了第一个打开的界面

pages

页面

resources

当前应用模块的资源信息

module.json5

{"module": {"name": "entry",   //当前Module的名称"type": "entry",   //标识当前Module的类型。类型有两种,分别: entry:应用的主模块。 feature:应用的动态特性模块。"description": "$string:module_desc",  //前Module的描述信息"mainElement": "EntryAbility",  //当前Module的入口"deviceTypes": [//标识当前Module可以运行在哪类设备上"phone","tablet"],"deliveryWithInstall": true,  //当前Module是否在用户主动安装的时候安装,表示该Module对应的HAP是否跟随应用一起安装。 true:主动安装时安装。 false:主动安装时不安装"installationFree": false,  //当前Module是否支持免安装特性。 true:表示支持免安装特性,且符合免安装约束。 false:表示不支持免安装特性。"pages": "$profile:main_pages",  //当前Module的profile资源,用于列举每个页面信息。"virtualMachine": "ark",   //当前Module运行的目标虚拟机类型,供云端分发使用"metadata": [//(待确认,暂不了解)当前Module的自定义元信息,标签值为数组类型,只对当前Module、UIAbility、ExtensionAbility生效。{"name": "string","value": "string","resource": ""}],"abilities": [//当前Module中UIAbility的配置信息,只对当前UIAbility生效。{"name": "EntryAbility","srcEntry": "./ets/entryability/EntryAbility.ts","description": "$string:EntryAbility_desc","icon": "$media:icon","label": "$string:EntryAbility_label","startWindowIcon": "$media:icon","startWindowBackground": "$color:start_window_background","exported": true,"skills": [//标识UIAbility组件或者ExtensionAbility组件能够接收的Want的特征。简而言之就是消息传递用的{"entities": ["entity.system.home"],"actions": ["ohos.want.action.home"]}]}],"extensionAbilities": [//当前Module中ExtensionAbility的配置信息,标签值为数组类型,只对当前ExtensionAbility生效。],"requestPermissions": [//当前应用运行时需向系统申请的权限集合。{"name": "ohos.abilitydemo.permission.PROVIDER","reason": "$string:reason","usedScene": {"abilities": ["FormAbility"],"when": "inuse"}}]}
}

当前模块的配置资源

ohosTest 

测试用例

hvigorfile.ts

模块级编译构建任务脚本

build-profile.json5 

{"apiType": 'faMode',  //API类型,支持FA和Stage模型"showInServiceCenter": true,  //是否在服务中心展示"buildOption": {//配置筛选har依赖.so资源文件的过滤规则"napiLibFilterOption": {//按照.so文件的优先级顺序,打包最高优先级的.so文件"pickFirsts": ["**/1.so"],//按照.so文件的优先级顺序,打包最低优先级的.so 文件"pickLasts": ["**/2.so"],//排除的.so文件"excludes": ["**/3.so"],//允许当.so重名冲突时,使用高优先级的.so文件覆盖低优先级的.so文件"enableOverride": true},//cpp相关编译配置"externalNativeOptions": {"path": "./src/main/cpp/CMakeLists.txt",  //CMake配置文件,提供CMake构建脚本"arguments": "",  //传递给CMake的可选编译参数"abiFilters": [  //用于设置本机的ABI编译环境"armeabi-v7a","arm64-v8a"],"cppFlags": ""  //设置C++编译器的可选参数},},"targets": [  //定义的Target,开发者可以定制不同的Target,具体请参考定制多目标构建产物{"name": "default","runtimeOS": "HarmonyOS",},{"name": "ohosTest",}    ]
}

当前的模块信息、编译信息配置项

oh_modules

用于存放三方库依赖信息。关于原npm工程适配ohpm操作

build-profile.json5

{"app": { //工程的签名信息,可包含多个签名信息"signingConfigs": [  {"name": "default",  //标识签名方案的名称"type": "HarmonyOS",  //标识HarmonyOS应用//该方案的签名材料"material": {  "certpath": "D:\\SigningConfig\\debug_hos.cer",  //调试或发布证书文件,格式为.cer"storePassword": "******",  //密钥库密码,以密文形式呈现"keyAlias": "debugKey",  //密钥别名信息"keyPassword": "******",  //密钥密码,以密文形式呈现"profile": "D:\\SigningConfig\\debug_hos.p7b",  //调试或发布证书Profile文件,格式为.p7b"signAlg": "SHA256withECDSA",  //密钥库signAlg参数"storeFile": "D:\\SigningConfig\\debug_hos.p12"  //密钥库文件,格式为.p12}}],"compileSdkVersion": 9,  //指定HarmonyOS应用/服务编译时的SDK版本"compatibleSdkVersion": 9,  //指定HarmonyOS应用/服务兼容的最低SDK版本//定义构建的产品品类,如通用默认版、付费版、免费版等"products": [  {"name": "default",  //定义产品的名称,支持定制多product目标产物,具体请参考定制多目标构建产物"signingConfig": "default",  //指定当前产品品类对应的签名信息,签名信息需要在signingConfigs中进行定义}]},"modules": [{"name": "entry",  //模块名称"srcPath": "./entry",  //标明模块根目录相对工程根目录的相对路径"targets": [  //定义构建的APP产物,由product和各模块定义的targets共同定义{"name": "default",  //target名称,由各个模块的build-profile.json5中的targets字段定义"applyToProducts": [  "default"   //表示将该模块下的“default” Target打包到“default” Product中]}]}]
}

应用级配置信息,包括签名、产品配置等。

hvigorfile.ts

应用级编译构建任务脚本。

项目运行

相关文章:

鸿蒙-项目创建及了解

目录 项目创建 1.App普通项目创建 2.元服务创建 项目结构 .hvigor .idea AppScope entry EntryAbility.ts pages resources module.json5 ohosTest hvigorfile.ts build-profile.json5 oh_modules build-profile.json5 hvigorfile.ts 项目运行 项目创建 F…...

SQLiteC/C++接口详细介绍sqlite3_stmt类(九)

返回:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(六) 下一篇: 无 33、sqlite3_column_table_name 函数 sqlite3_column_table_name 用于返回结果集中指定列所属的表的名称。如果查询中列使…...

idea2023 运行多 springboot 实例

概要 1、修改idea运行多实例(本地测试负载) 你可能用到其他 1、改造项目缓存token 至redis 支持负载均衡部署 SpringSecurity6.0RedisJWTMP基于token认证功能开发(源码级剖析可用于实际生产项目)_springsecurity redis管理token…...

HarmonyOS系统开发ArkTS常用组件编程技巧

目录 样式复用 Styles方法 Extend方法 组件编程在使用过程中有很多技巧,在这里分享样式复用技巧和UI结构复用技巧。 样式复用 我们观察下面的代码,在代码中很多重复行的代码,如: Image 的 .width(30).height(30) 是重复的But…...

大数据开发(Hive面试真题-卷三)

大数据开发(Hive面试真题) 1、Hive的文件存储格式都有哪些?2、Hive的count的用法?3、Hive得union和unionall的区别?4、Hive的join操作原理,left join、right join、inner join、outer join的异同&#xff1…...

Oracle数据库SQL开发规范

Oracle数据库SQL开发规范是为了保证SQL代码的质量、可读性和性能而遵循的一系列准则和最佳实践。以下是一些常见的Oracle SQL开发规范要点: 1. 命名规范 使用有意义且一致的命名约定,例如表名采用TBL_MODULE_NAME,视图采用VW_MODULE_VIEW等…...

FreeRTOS 消息队列

1. 队列简介 1.1 队列的概念 队列是任务到任务、任务到中断、中断到任务数据交流的一种机制(消息传递) 类似全局变量?假设有一个全局变量a 0,现有两个任务都在写这个变量 a: 大家想象一下如果任务 1 运行一次&#…...

如何在Python中实现列表推导式?并给出一个例子

如何在Python中实现列表推导式?并给出一个例子 Python的列表推导式(List Comprehension)是一种强大且简洁的创建列表的方法。它允许我们在一行代码中完成循环和条件判断,从而生成所需的列表。列表推导式不仅提高了代码的可读性&a…...

Flask中的Blueprints:模块化和组织大型Web应用【第142篇—Web应用】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Flask中的Blueprints:模块化和组织大型Web应用 在构建大型Web应用时&#xff0…...

如何通过idea搭建一个SpringBoot的Web项目(最基础版)

通过idea搭建一个SpringBoot的Web项目 文章目录 通过idea搭建一个SpringBoot的Web项目一、打开idea,找到 create new project二、创建方式三、配置项目依赖四、新建项目模块五、总结 一、打开idea,找到 create new project 方式1 方式2 二、创建方式 新…...

Python和FastAPI语义分析和文本图像

要点 使用FastAPI开发RESTful API,创建端点,自定义响应,结构化多路由。Pydantic数据验证库数据建模,创建依赖项注入。开发数据库和对象关系映射,SQLAlchemy,Tortoise ORM,MongoDB。建立权限和安…...

centos系统ssh7.4升级9.6

编译安装 OpenSSL 下载 OpenSSL 源代码: wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz这个命令从 OpenSSL 的官方网站下载指定版本(1.1.1w)的源代码压缩包。 解压源代码: tar zxvf openssl-1.1.1w.tar.gz使用 tar…...

excel所有知识点

1要加双引号 工作表(.xlsx) 单击右键→插入,删除,移动、重命名、复制、设置标签颜色,选定全部工作表 工作表的移动:两个表打开→右键→移动(如果右键是灰色的,可能是保护工作表了&#xff09…...

显卡基础知识及元器件原理分析

显卡应该算是是目前最为火热的研发方向了,其中的明星公司当属英伟达。 当地时间8月23日,英伟达发布截至7月30日的2024财年第二财季财报,营收和利润成倍增长,均超市场预期。 财报显示,第二财季英伟达营收为135.07 亿美…...

Spark Rebalance hint的倾斜的处理(OptimizeSkewInRebalancePartitions)

背景 本文基于Spark 3.5.0 目前公司在做小文件合并的时候用到了 Spark Rebalance 这个算子,这个算子的主要作用是在AQE阶段的最后写文件的阶段进行小文件的合并,使得最后落盘的文件不会太大也不会太小,从而达到小文件合并的作用,…...

Vue 3中实现基于角色的权限认证实现思路

一、基于角色的权限认证主要步骤 在Vue 3中实现基于角色的权限认证通常涉及以下几个主要步骤: 定义角色和权限:首先需要在后端服务定义不同的角色和它们对应的权限。权限可以是对特定资源的访问权限,比如读取、写入、修改等。用户认证&#…...

Visual Studio 2022进行文件差异比较

前言 Visual Studio 2022在版本17.7.4中发布在解决方案资源管理器中比较文件的功能,通过使用此功能,可以轻松地查看两个文件之间的差异,包括添加、删除和修改的代码行。可以逐行查看差异,并根据需要手动调整和编辑文件内容以进行…...

1.2 编译型语言和解释型语言的区别

编译型语言和解释型语言的区别 通过高级语言编写的源码,我们能够轻松理解,但对于计算机来说,它只认识二进制指令,源码就是天书,根本无法识别。源码要想执行,必须先转换成二进制指令。 所谓二进制指令&…...

C语言-常量

什么是常量? 答:常量是在程序执行过程中,其值不发生改变的量,常量分为直接常量和符号常量两种。 其中直接常量又可以分为整型常量、实型常量、字符型常量、字符串常量。 直接常量 1.整型常量 整型常量即整数,包括正整数,负整数和0。c语言中常量可以用八进制,十进制和十六…...

开源的OCR工具基本使用:PaddleOCR/Tesseract/CnOCR

前言 因项目需要,调研了一下目前市面上一些开源的OCR工具,支持本地部署,非调用API,主要有PaddleOCR/CnOCR/chinese_lite OCR/EasyOCR/Tesseract/chineseocr/mmocr这几款产品。 本文主要尝试了EasyOCR/CnOCR/Tesseract/PaddleOCR这…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...