文章目录

  • HarmonyOS App工程结构
    • APP一些概念
      • HAP
    • 工程结(Java开发)
      • resources目录

HarmonyOS App工程结构

在创建第一个Project并且成功运行之后,了解Project的结构就很有必要了。由于暂且开始Java开发是个人的主要方式,因此这里先了解Java工程项目结构。

APP一些概念

HarmonyOS应用的发布形态叫做APP Pack即Application Package。一个APP由一个或者多个Ability Package(HarmonyOS Ability Package)及描述app属性的pack.info文件组成。

HAP

HAP全称HarmonyOS Ability Package。一个HAP就是DevEco Studio中的一个Module,即由源码,资源,第三方库等组成。HAP可以分为Entry和Feature两种类型。

  • Entry:应用/服务的主模块,可以独立运行。一个APP结构中,可以包含一个或多个Entry类型的HAP。
  • Feature:应用/服务的动态特性模块。一个APP结构中可以包含一个或多个Feature的HAP,也可以不包含。

了解以下两个概念

Ability

HAP是由若干个Ability组成。Ability是应用的重要组成部分,是应用所具备能力的抽象。Ability可以的分为两类,Feature Ability(FA,元程序)和Particle Ability(PA,元服务)。FA有UI界面,可以进行交互。PA没有UI界面。

  • FA代表了有界面的Ability,用于与用户进行交互。
  • PA表示了无界面的Ability,主要配合FA使用。可以提供后台计算服务,或者提供数据仓储保存等功能。

了解Android开发概念同学肯定就比较熟悉了。FA类似Android中的Activity,有界面,可交互。PA类似Android中的Service,没有界面。

AbilitySlice

切片,是一个可视化Ability的基本组织单元。一个FA可以包含一个或多个AbilityAlice。每个AbilityAlice可以包含自己内部的交互及业务执行逻辑。

了解Android开发概念同学肯定就比较熟悉了。AbilitySlice类似Android中的Fragment。

工程结(Java开发)

先来看下创建的工程结构。由于目前API 版本支持到7的Java工程,还不知道API 8是否会在结构上做出改变,因此这里的Java工程结构是API 4 ~ API 7 的结构。

  • .gradle 目录是有IDE生成,因此在开发过程中不需要修改。
  • .idea 是IDE项目创建的工程目录及环境配置。
  • build目录是IDE编译过程的中间产物。
  • entry 默认启动模块(主模块),保存编写源码文件以及开发资源文件的目录。
    • libs:用于存放entry模块的依赖文件。
    • src>main>Java:用于存放Java源码。
    • src>main>Java>com>sanren1024>ohos>slice>MainAbilitySlice:承载单个页面的具体逻辑实现和界面UI。
    • src>main>Java>com>sanren1024>ohos>MyApplication:应用/服务的入口。
    • src>main>resources:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。
    • src > main > config.json:模块配置文件,主要包含HAP包的配置信息、应用在具体设备上的配置信息以及应用的全局配置信息。

resources目录

resources目录结构更加复杂,,如下结构所示。

resources
|---base  // 默认存在的目录
|   |---element
|   |   |---string.json
|   |---graphic
|   |   |---background_ability_main.xml
|   |---layout
|   |   |---ability_main.xml
|   |---media
|   |   |---icon.png
|   |---profile
|---en_GB-vertical-car-mdpi // 限定词目录示例,需要开发者自行创建
|   |---element
|   |   |---string.json
|   |---graphic
|   |   |---background_ability_main.xml
|   |---layout
|   |   |---ability_main.xml
|   |---media
|   |   |---icon.png
|   |---profile
|---en  // 默认存在的目录
|   |---element
|   |   |---string.json
|---rawfile  // 默认存在的目录
|---zh  // 默认存在的目录
|   |---element
|   |   |---string.json

刚创建的Project resources目录下默认带有 baseenzhrawfile 目录。

  • base目录是项目创建就存在的目录。当app需要使用的resources资源目录中没有与之匹配的限定词目录存在时,会自动引用到该目录中的资源文件。
  • 限定词目录则需要开发者自己创建。

base目录

不论是base目录还是限定词目录,再目录下都可以创建资源目录,如 element,media,animation,layout,graphic,profile。

  • element 表示元素资源,所有数据都使用json格式。

    • boolean 布尔型,可以创建与类型一致的json文件名,可以定义在boolean.json中。
    • color 颜色,与之对应,定义在color.json文件中。
    • float 浮点型,定义在float.json文件中。
    • intarray 整型数组,定义在intarray.json文件中。
    • integer 整型,定义在integer.json文件中。
    • pattern 样式,定义在pattern.json文件中。
    • plural 复数形式,定义在plural.json文件中。
    • strarray 字符串数组,定义在strarray.json文件中。
    • string 字符串,定义在string.json文件中。
  • media 表示媒体资源,包括图片,音视频等非文本格式的文件。
  • animation 表示动画资源,采用xml文件格式。
  • layout 表示布局资源,采用xml文件格式。
  • graphic 表示可绘制资源,采用xml文件格式。
  • profile 表示其他类型文件,以原始文件形式保存。

限定词目录

限定词目录有组合的顺序:_移动国家码_移动网络码-语言_文字_国家或地区-横竖屏-设备类型-颜色模式-屏幕密度_

限定词的连接方式:语言、文字、国家或地区之间采用下划线(_)连接,移动国家码和移动网络码之间也采用下划线(_)连接,除此之外的其他限定词之间均采用中划线(-)连接。例如:zh_Hant_CNzh_CN-car-ldpi

  • 在为设备匹配对应的资源文件时,限定词目录匹配的优先级从高到低依次为:移动国家码和移动网络码 > 区域(可选组合:语言、语言_文字、语言_国家或地区、语言_文字_国家或地区)> 横竖屏 > 设备类型 > 颜色模式 > 屏幕密度。

  • 如果限定词目录中包含移动国家码和移动网络码、语言、文字、横竖屏、设备类型、颜色模式限定词,则对应限定词的取值必须与当前的设备状态完全一致,该目录才能够参与设备的资源匹配。例如,限定词目录“zh_CN-car-ldpi”不能参与“en_US”设备的资源匹配。

2. HarmonyOS工程结构相关推荐

  1. HarmonyOS之应用工程结构与设备模板

    一.HarmonyOS APP 工程结构 ① HarmonyOS 应用的逻辑结构 HarmonyOS 应用发布形态为 APP Pack(Application Package,简称APP),它是由一个 ...

  2. HarmonyOS工程【鸿蒙开发专题02】

    上一节教大家跑通了demo 这一节一起来了解HarmonyOS工程 春节不停更,此文正在参加「星光计划-春节更帖活动」 作者:坚果 公众号:"大前端之旅" 华为云享专家,InfoQ ...

  3. 鸿蒙系统(HarmonyOS)--第一章

    · 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 第1节: 鸿蒙系统(HarmonyOS)概述 第2节:鸿蒙系统核心技术特色及架构技术 第3节:鸿蒙开发环境构建及应用开发 ...

  4. 1. 创建第一个harmonyos工程

    文章目录 创建HarmonyOS第一个项目 创建第一个HarmonyOS项目 创建HarmonyOS第一个项目 环境准备: JDK安装. DevEco Studio安装. HarmonyOS SDK安 ...

  5. 【鸿蒙】HarMonyOS的自定义组件之抽奖大转盘

    1. 介绍 当系统提供的组件无法满足设计需求时,您可以创建自定义组件,根据设计需求自定义组件的属性及响应事件,并绘制组件.自定义组件是在组件预留的两个自定义图层中实现绘制,通过addDrawTask方 ...

  6. android和harmonyos对比,HarmonyOS和Android深度对比

    HarmonyOS APP 工程结构 HarmonyOS应用发布形态为APP Pack(Application Package,简称APP),它是由一个或多个HAP(HarmonyOS Ability ...

  7. 优酷鸿蒙开发实践|优酷 Android 与HarmonyOS Hap 混合打包

    在<优酷鸿蒙开发实践|鸿蒙卡片开发>一文中已经提到,要实现"在优酷主客ICON向上滑动,呼出优酷鸿蒙卡片",需要卡片的实现代码与优酷主客做混合打包.下面的小节简单介绍了 ...

  8. HarmonyOS技术特性

    HarmonyOS技术特性 硬件互助,资源共享 多种设备之间能够实现硬件互助.资源共享,依赖的关键技术包括分布式软总线.分布式设备虚拟化.分布式数据管理.分布式任务调度等. 分布式软总线 分布式软总线 ...

  9. HarmonyOS系统概述

    HarmonyOS系统概述 系统定位 HarmonyOS是一款"面向未来".面向全场景(移动办公.运动健康.社交通信.媒体娱乐等)的分布式操作系统.在传统的单设备系统能力的基础上, ...

最新文章

  1. Mysql当前的根密码核查_在MySQL数据库中复位根用户的密码的方法
  2. 2-4+并发的优势与风险
  3. 机器学习方法三要素-阿里云大学
  4. Ubuntu16.04 安装配置Caffe
  5. CRM下午茶(22)-客户关系管理应用现状
  6. C语言学习趣事_你不知道的C语言应用
  7. js获取字符串的字节数
  8. 优先队列之Leetcode 23合并K个有序链表
  9. 3.性能测试通过标准
  10. JavaWeb项目服务端获取客户端的IP地址
  11. radius服务器连接无线网络,验证RADIUS服务器连接用测验AAA RADIUS命令
  12. Windows7下完美绿色版无损分区软件Paragon Partition Manager
  13. NLP-语料库:英文语料库【Brown Corpus(有词性标注)、LOB(Lancaster-Oslo/Bergen,英国英文)...】
  14. Lucene+Pangu分词
  15. Regular Expression简介
  16. 你知道几种编程思想?
  17. Photoshop入门学习
  18. #如何理解使用for循环遍历lst与lst[:],如果使用remove更改列表结果会不同
  19. 三种Lp范数距离定义
  20. python基础读后感_Python基础教程【读书笔记】 - 2016/6/26

热门文章

  1. Framework7 页面 路由
  2. Python爬虫实战之哔哩哔哩二维码登录申请
  3. matlab轴的优化设计,基于MATLAB优化工具箱的机床主轴优化设计
  4. 【项目二、蜂巢检测项目】一、串讲各类经典的卷积网络:InceptionV1-V4、ResNetV1-V2、MobileNetV1-V3、ShuffleNetV1-V2、ResNeXt、Xception
  5. Java实现 LeetCode 537 复数乘法(关于数学唯一的水题)
  6. AndroidStudio快捷键中文版
  7. 【新】斯凯平台的搭建
  8. Endnote 参考文献输出格式GB/T 7714的Style定义写法
  9. 豆瓣自动登陆发广播(python), 豆瓣圣经Bot
  10. 解决mathtype微分点不显示