鸿蒙-项目创建及了解

news2024/11/16 20:23:43

目录

项目创建

 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

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

项目运行

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

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

相关文章

vue3+ts+element-plus实际开发之统一掉用弹窗封装

vue3tselement-plus实际开发之统一掉用弹窗封装 插槽1. 官网介绍先理解 插槽、具名插槽、 作用域插槽、动态插槽名、具名作用域插槽属性和使用方法 2. 统一调用弹窗封装dome实战- 使用场景:- 对el-dialog进行数据动态设置- 新建一个ts文件用于统一存放组件&#xff…

Windows系统安装配置Everything结合内网穿透实现公网环境搜索本地文件

文章目录 前言1.软件安装完成后,打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前言 要搭建一个在线资料库,我们需要两个软件的支持,分别是cpolar(用于搭建内网穿透数据隧道…

2024年5月软考初级《信息处理技术员》报名考试全流程梳理

2024年软考信息处理技术员考试报名时间节点: 报名时间:上半年3月18日到4月15日,下半年8月19日到9月15日(各地区报名时间不同,具体日期见官方通告) 准考证打印时间:上半年5月20日起&#xff0c…

项目文章|真菌ChIP-seq+RNA-seq解析脱落酸生物合成的调控机制

组蛋白翻译后修饰是表观遗传调控的主要机制之一,已被证明在基因表达的调控中发挥重要作用,参与真菌发育、感染相关的形态发生、环境应激反应、次级代谢产物的生物合成和致病性。我们分享过不少真菌组蛋白修饰的文章,今天接着带来一篇利用ChIP…

uniapp使用Echarts图表H5显示正常 打包app显示异常

uniapp使用Echarts在H5页面调试 调试完在H5正常显示 然后通过安卓机调试的时候 发现直接空白了 还有这个爆错 Initialize failed: invalid dom 我有多个图表、图表是通过v-for循环出来的 解决方案 原来是yarn直接安装Echarts 然后改成本地JS文件引入 gitbub文件地址 — dist/…

大屏动效合集更更更之实现百分比环形

实现效果 参考链接: https://pslkzs.com/demo/pie/demo1.php 写在最后🍒 源码,关注🍥苏苏的bug,🍡苏苏的github,🍪苏苏的码云

华院计算 | 意大利早期的三位女学者——历史没有忘记

意大利历史上名人很多,其中三位先驱女学者特别值得后人铭记。哲学家艾琳娜皮斯科皮亚(Elena Lucrezia Cornaro Piscopia,1646年6月5日-1684年7月26日)于1678年从帕多瓦大学(Universit di Padova)获得哲学博…

SAP MRP允许过去开始日期简介

在SAP系统中,关于“过去开始日期”的配置点,通常涉及到物料需求计划(MRP)的运行和计划订单的处理。特别是在MRP运行后,如果发现计划订单的日期不符合预期,可能需要进行相应的调整。 之前在项目中就有用户提出MRP跑出的结果不允许在过去的时间,必须要在当前日期或者在当前…

【华为Datacom数通认证】HCIA-HCIP-HCIE

华为认证课程概述 华为认证是华为技术有限公司(简称"华为")基于"平台生态"战略,围绕"云-管-端"协同的新ICT技术架构,打造的业界覆盖ICT领域最广的认证体系,包含"ICT技术架构认证"、"ICT开发者…

解决Could not autowire. No beans of ‘UserMapper‘ type found问题

问题: 解决方法1 降低spring版本 失败 解决方法2 查看数据库连接,无作用 解决方法3 polo,Mapper不在同一级,修改,但无作用 解决方法4 将Autowrited改为Autowrited(required false),无作用 解决方法…

vulhub中GIT-SHELL 沙盒绕过漏洞复现(CVE-2017-8386)

GIT-SHELL 沙盒绕过(CVE-2017-8386)导致任意文件读取、可能的任意命令执行漏洞。 测试环境 为了不和docker母机的ssh端口冲突,将容器的ssh端口设置成3322。本目录下我生成了一个id_rsa,这是ssh的私钥,连接的时候请指…

人免疫球蛋白E (Human IgE) 单克隆抗体—BioPorto

免疫反应是指机体对于异己成分或者变异的自体成分做出的防御反应,当免疫系统对正常无害物质产生不适当反应时,则称为变态反应,即过敏。免疫球蛋白E(IgE)是一类与过敏反应有关的抗体,通常在人类血清蛋白中含…

【问题解决】AttributeError: module ‘tensorflow‘ has no attribute ‘io‘

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

滤波器自动化测试之插入损耗测试方法与标准

插入损耗是指信号通过滤波器后,输出信号与输入信号之间的功率差距。插入损耗包括共模插入损耗和差模插入损耗两种。插入损耗越小,说明滤波器对输入信号的衰减程度就越低,滤波器的性能就越好。作为滤波器的重要指标之一,插入损耗测…

广告电商模式:三方共赢的创新路径与未来趋势

随着互联网的迅猛发展和普及,电子商务与广告行业也在经历前所未有的变革与创新。在这样的背景下,广告电商模式作为一种新兴的商业模式,正逐渐崭露头角。它将广告与电子商务紧密融合,通过精准营销和用户参与,实现了广告…

C语言文件操作 w模式

先上菜 #include<stdlib.h> #include<stdio.h> int main() { FILE* pfWrite fopen("test.txt", "w"); if (pfWrite NULL) { printf("%s\n", strerror(errno)); return 0; } //写文件 fputc(b…

Odoo17免费开源ERP开发技巧:如何在表单视图中调用JS类

文/Odoo亚太金牌服务开源智造 老杨 在Odoo最新V17新版中&#xff0c;其突出功能之一是能够构建个性化视图&#xff0c;允许用户以独特的方式与数据互动。本文深入探讨了如何使用 JavaScript 类来呈现表单视图来创建自定义视图。通过学习本教程&#xff0c;你将获得关于开发Odo…

xiaohongshu Shield 8.27

支持自己传输 xy-ter-str, 进行设备绑定计算 也支持自动请求初始化设备&#xff0c;无需 xy-ter-str 传输参数&#xff1a;url , xy-platform-info, xy-common-params,device_id 以及 xy-ter-str 精准计算&#xff0c;纯算法源码还原魔改算法&#xff0c;非jar 非unidbg 非调…

hash+前缀和:和可被k整除的子数组

题目 给定一个整数数组 nums 和一个整数 k &#xff0c;返回其中元素之和可被 k 整除的&#xff08;连续、非空&#xff09; 子数组 的数目。 子数组 是数组的 连续 部分。 示例 1&#xff1a; 输入&#xff1a;nums [4,5,0,-2,-3,1], k 5 输出&#xff1a;7 解释&#x…

VBA技术资料MF131:代码执行过程中实现毫秒等待

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…