鸿蒙-项目创建及了解

目录

项目创建

 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.mfbz.cn/a/468134.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

信息系统项目管理师015:元宇宙(1信息化发展—1.5数字化转型与元宇宙—1.5.2元宇宙)

文章目录 1.5.2 元宇宙1.主要特征2.发展演进 记忆要点总结 1.5.2 元宇宙 元宇宙(Metaverse)是一个新兴概念,是一大批技术的集成。北京大学陈刚教授对元宇宙的定义是:元宇宙是利用科技手段进行链接与创造的,与现实世界映射与交互的虚拟世界&am…

Linux 文件系统:C语言接口、系统接口

目录 一、文件接口 二、感性理解Linux系统下“一切皆文件” 三、C语言文件接口 1、fopen 2、当前路径 3、fwrite、fprintf、fputs 4、fgets 模拟实现cat命令 五、系统接口 1、open系统调用 2、write系统调用 例:O_WRONLY 例:O_WRONLY|O_CREAT…

jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合

jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合 文章目录 jeecg启动Sentinel 一直是空白页面 解决办法用 外部 Sentinel SpringCloud之Sentinel概述和安装及简单整合 Sentinel概述基本介绍 Sentinel安装下载地址: http…

旅行社旅游线路预定管理系统asp.net

旅行社旅游线路预定管理系统 首页 国内游 境外游 旅游景点 新闻资讯 酒店信息―留言板 后台管理 后台管理导航菜单系统管理修改密码留言管理注册会员管理基础数据设置国别设置有份设地区设置 旅行社管理友情链接管理添加友情链接友情链接管理新闻资讯管理添加新闻资讯新闻资讯管…

【计算机网络篇】物理层(2)传输方式

文章目录 🍔传输方式⭐串行传输和并行传输⭐同步传输和异步传输🎈同步传输🎈异步传输 ⭐单向通信,双向交替通信和双向同时通信 🍔传输方式 在物理层中,传输方式是指数据在传输介质中传输的方式和方法。常见…

Springboot整合支付宝沙箱支付

2.配置说明 要记住这几个重要的配置 appId 这个是appIdprivateKey 商户私钥publicKey 支付宝公钥, 即对应APPID下的支付宝公钥notifyUrl 支付成功后异步回调地址(注意是必须是公网地址)returnUrl #支付后回调地址signType 签名类型 一般写 RSA2charset utf-8format json #网关…

基于消失点的相机自标定

基于消失点的相机自标定 附赠最强自动驾驶学习资料:直达链接 相机是通过透视投影变换来将3D场景转换为2D图像。在射影变换中,平行线相交于一点称之为消失点。本文详细介绍了两种利用消失点特性的标定方法。目的是为根据实际应用和初始条件选择合适的标…

深度学习实战模拟——softmax回归(图像识别并分类)

目录 1、数据集: 2、完整代码 1、数据集: 1.1 Fashion-MNIST是一个服装分类数据集,由10个类别的图像组成,分别为t-shirt(T恤)、trouser(裤子)、pullover(套衫&#xf…

PSCA系统控制集成之复位层次结构

PPU 提供以下对复位控制的支持。 • 复位信号Reset signals:PPU 提供冷复位和热复位输出信号。PPU 还为实现部分保留的电源域管理提供了额外的热复位输出信号。 • 电源模式控制Power mode control:PPU 硬件适当地管理每个支持的电源模式转换的复位信号…

高端资源素材源码图库下载平台整站系统,附带整站源码

推荐高端图库素材下载站的响应式模板和完整的整站源码,适用于娱乐网资源网。 该模板支持移动端,并集成了支付宝接口。 页面设计精美,不亚于大型网站的美工水准,并且用户体验也非常人性化。主要用户分为两类:下载用户…

Python大数据实践:selenium爬取京东评论数据

准备工作 selenium安装 Selenium是广泛使用的模拟浏览器运行的库,用于Web应用程序测试。 Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,并且支持大多数现代 Web 浏览器。 #终端pip安装 pip install selenium #清华镜像安装 p…

探索编程迷宫:选择你的职业赛道

在现代科技的浪潮中,程序员的职业赛道就像是一座迷宫,充满着前端的美丽花园,后端的黑暗洞穴,以及数据科学的神秘密室。这个迷宫中,每一条通道都充满了挑战和机遇,而每一个行走其中的人都在寻找着属于自己的…

<商务世界>《第15课 投标文件一般包含的子文件》

1 响应文件封面 招标文件中的响应文件封面是投标人或参与者在提交响应文件时所使用的封面设计。这个封面不仅仅是文件的外包装,更是投标人形象和专业素质的直观展示,对于给招标方留下良好的第一印象至关重要。 首先,响应文件封面通常会包含…

Linux---基本操作命令之用户管理命令

1.1useradd 添加新用户 root用户:/root 普通用户:/home/ 创建的用户还是david,只是在dave文件夹下 1.2 passwd 设置密码 给用户tony设置密码: 123456 1.3 id 查看用户是否存在 查看有没有这个用户:id 名字 gid:用…

Css提高——Css3的新增选择器

目录 1、Css3新增选择器列举 2、属性选择器 2.1、语法 2.2、代码: 2.3、效果图 3、结构伪类选择器 3.1、语法 3.2、代码 3.3、效果图 3.4、nth:child(n)的用法拓展 nth-child(n)与nth-of-type&#x…

mac os 配置两个github账号

1. 清空git全局配置的username和email git config --global --unset user.name git config --global --unset user.emailgit config --list 可以查看是否清空了 2. 定义两个标识符,这两个标识符以后会被用来代替“github.com”来使用。 假设两个账号的邮箱地址分别是a@gmai…

docker init 生成Dockerfile和docker-compose.yml —— 筑梦之路

官网:https://docs.docker.com/engine/reference/commandline/init/ 简介 docker init是一个命令行实用程序,可帮助初始化项目中的 Docker 资源。.dockerignore它根据项目的要求创建 Dockerfile、Compose 文件。这简化了为项目配置 Docker 的过程&#…

关于前端的学习

目录 前言: 1.初识HTML: 1.1超文本: 1.2标记语言: 2.关于html的基本框架: 3.HTML基本文字标签: 3.1.h标题标签: 3.3 文本内容: 3.4换行的和分割的: 3.5 特殊文字标签: 3.5.1表面上看着三对的结果呈现都是一样的: 3.5.2但是其背后的效果其实是不一样的: 3.6转义字符:…

CentOS 7 编译安装 Nginx

CentOS 7 编译安装 Nginx 背景下载 Nginx 源码包安装依赖包编译添加环境变量添加守护查考文献 背景 一开始使用 docker 搭建了一个 web 服务器,但是由于 docker 不太方便的部署 TLS 证书,故使用 Nginx 做反向代理,实现 https 连接。 下载 N…

MySQL—数据库导入篇

什么是数据库? 数据库是干啥的? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 MySQL属于哪一类数据库? MySQL是一种关系型数据库。所谓的关系型数据库,是建立在关系模型基础上的数据库&a…
最新文章