写给初学者的 HarmonyOS 教程 -- 熟悉 DevEco Studio

一、下载与安装 DevEco Studio

要进行 HarmonyOS 开发,必须要切换开发工具了,菊花厂基于 IntelliJ IDEA Community 开源版本打造新打造了一个面向华为终端全场景多设备的一站式集成开发环境(IDE):DevEco Studio。

进入 DevEco Studio 官网下载。

在这里插入图片描述

DevEco Studio提供了 Windows 版本和 Mac 版本选择,可以根据操作系统选择对应的版本进行下载。关于安装的方法以及配套环境设置等,就不在文章里面输出了,大家去官网查看。

根据官方指导创建好第一个应用后,还是要仔细研究一下它的整个工程目录架构,有助于我们后续的开发工作。

二、基本工程目录

2.1 工程级目录

在这里插入图片描述

跟传统的 Android 项目目录对比,还是有很大区别的(起码名字上改的面目全非)。

我们详细看一下:

工程级目录作用
AppScope存放应用全局所需要的资源文件/全局配置文件
entry应用的主模块,存放 HarmonyOS 应用的代码、资源等
hvigor基于任务管理机制实现的一款全新的自动化构建工具,主要提供任务注册编排,工程模型管理、配置管理等核心能力
oh_module工程的依赖包,存放工程依赖的源文件
build-profile.json5工程级配置信息,包括签名、产品配置等
hvigorfile.ts工程级编译构建任务脚本
oh-package.json5工程级依赖配置文件,用于记录引入包的配置信息

在 AppScope,其中有 resources 文件夹和配置文件 app.json5。

在这里插入图片描述

# AppScope > resources

AppScope>resources>base中包含 elementmedia 两个文件夹。

AppScope
element主要存放公共的字符串、布局文件等资源
media存放全局公共的多媒体资源文件

在这里插入图片描述

# AppScope > app.json5

app.json5 是应用的全局的配置文件,用于存放应用公共的配置信息,你可以把它理解为类似项目级别的 build.gradle

{
  "app": {
    "bundleName": "com.example.firstharmonyproject",    // 包名
    "vendor": "example",                                // 应用程序供应商
    "versionCode": 1000000,                             // 用于区分应用版本
    "versionName": "1.0.0",                             // 版本号
    "icon": "$media:app_icon",                          // 对应于应用的显示图标
    "label": "$string:app_name"                         // 应用名
  }
}

2.2 模块级目录

在这里插入图片描述

模块级目录作用
src主要包含总的 main 文件夹,单元测试目录 ohosTest,以及模块级的配置文件
     main-
            etc用于存放ets代码
                 entryability存放ability文件,用于当前ability应用逻辑和生命周期管理
                 pages存放UI界面相关代码文件,初始会生成一个Index页面
            resources存放模块内的多媒体、字符串及布局文件等资源
            module.json5模块的配置文件
     ohosTest单元测试目录
build-profile.json5模块级配置信息,包括编译构建配置项
hvigorfile.ts模块级构建脚本
oh-package.json5是模块级依赖配置信息文件

# entry > module.json5

module.json5 是模块的配置文件,包含当前模块的配置信息,你可以把它理解为类似应用级别的 build.gradle

{
  // module对应的是模块的配置信息,一个模块对应一个打包后的 hap 包 ( HarmonyOS Ability Package ),
  // 其中包含了 ability、第三方库、资源和配置文件。
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "phone",
      "tablet"
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "abilities": [
      {
        "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": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ]
  }
}

我们看下 module.json5 的默认配置属性:

属性描述
name该标签标识当前 module 的名字,module 打包成 hap 后,表示 hap 的名称,标签值采用字符串表示(最大长度31个字节),该名称在整个应用要唯一
type表示模块的类型,类型有三种,分别是entry、feature和har
srcEntry当前模块的入口文件路径
description当前模块的描述信息
mainElement该标签标识 hap 的入口 ability 名称或者 extension 名称。只有配置为 mainElement 的 ability 或者 extension 才允许在服务中心露出
deviceTypes该标签标识 hap 可以运行在哪类设备上,标签值采用字符串数组的表示
deliveryWithInstall标识当前 Module 是否在用户主动安装的时候安装,表示该 Module 对应的 HAP 是否跟随应用一起安装
     - true:主动安装时安装
     - false:主动安装时不安装
installationFree标识当前 Module 是否支持免安装特性
     - true:表示支持免安装特性,且符合免安装约束
     - false:表示不支持免安装特性
pages对应的是 main_pages.json 文件,用于配置 ability 中用到的 page 信息
abilities是一个数组,存放当前模块中所有的 ability 元能力的配置信息,其中可以有多个 ability
    name该标签标识当前 ability 的逻辑名,该名称在整个应用要唯一,标签值采用字符串表示(最大长度127个字节)
    srcEntryability的入口代码路径
    descriptionability的描述信息
    icon该标签标识 ability 图标,标签值为资源文件的索引。该标签可缺省,缺省值为空。如果ability被配置为MainElement,该标签必须配置
    labelability的标签名
    startWindowIcon启动页面的图标
    startWindowBackground启动页面的背景色
    exportedability 是否可以被其他应用程序调用
     - true:表示可以被其它应用调用
     - false:表示不可以被其它应用调用
    skills标识能够接收的意图的 action 值的集合,取值通常为系统预定义的 action 值,也允许自定义
        entities标识能够接收的Want的Action值的集合,取值通常为系统预定义的action值,也允许自定义
        actions标识能够接收Want的Entity值的集合

# entry > main_pages.json

src/main/resources/base/profile/main_pages.json 文件保存的是页面 page 的路径配置信息,所有需要进行路由跳转的 page 页面都要在这里进行配置。

{
  "src": [
    "pages/Index",
    "pages/Second"
  ]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值