5分钟速通鸿蒙开发第一篇:开发环境

1.前言

鸿蒙系统(HarmonyOS)是华为于2019年8月9日在东莞举行华为开发者大会发布的1.0版本操作系统,不知不觉现在已经是2023年中了,HarmonyOS的版本也更新到了3.1了,这篇文章将作为起点,一步一步入门HarmonyOS开发。(ps:文章的部分内容来自于HarmonyOS的开发指南(3.1/4.0),使用Stage模型,有兴趣可以自行参考,此外文章会尽量将HarmonyOS开发和Android的开发作比较,让读者们便于理解)

2.准备安装DevEco Studio

注册华为开发者账号并完善资料

Android开发离不开Google,HarmonyOS开发也离不开华为,来到华为开发者联盟主页 并选择注册账号,使用手机号或者邮箱注册。 在注册完成后可以去个人中心完成开发者认证解锁更多功能。在拥有一个开发者账号之后我们就可以去准备下载HarmonyOS的开发工具DevEco Studio

下载安装DevEco Studio并配置环境

DevEco Studio下载界面选择自己的操作系统下载对应的版本即可,当前Studio的最新版本为3.1.1(如下图所示) 下载完成以后安装过程和AndroidStudio安装过程是一样的

安装完成后我们启动DevEco Studio并进行基础配置,包括Node.js与Ohpm的安装路径设置、SDK下载,选择从华为镜像下载至合适的路径,下载完成后狂点Next就完事了。

3.DevEco Studio界面介绍

在这一切都完成以后我们就进入了DevEco Studio,由于DevEco Studio也是powered by the IntelliJ所以在很多地方越看越眼熟

创建项目

首先咱们先看看创建工程的界面

DevEco Studio: Android Studio:

选择项目模板:

DevEco Studio:

Android Studio:

项目内界面

现在我们创建好界面,进入到了IDE,整个界面大致可以分成4个部分,上面3部分分别是工程目录区代码编辑区预览区 ,下面一个部分就是通知栏(logcat、run、版本控制之类的),具体的就不展开说了和Android开发界面就是无缝切换的。

DevEco Studio: Android Studio:

4.工程目录介绍

接下来我们重点介绍一下IDE工程目录区中的具体内容,整个工程目录和Android中的一样可以拆分成工程级模块级

工程级目录

DevEco Studio:

Android Studio: 在DevEco Studio工程级目录中我们可以看到以下几个元素:

  • AppScope 中存放应用全局 所需要的资源文件,其中element文件夹主要存放公共的字符串、布局文件等资源 , media存放全局公共的多媒体资源文件
  • entry是应用的主模块,存放HarmonyOS应用的代码、资源等。
  • oh_modules是工程的依赖包,存放工程依赖的源文件。
  • build-profile.json5是工程级配置信息,包括签名、产品配置等。
  • hvigorfile.ts是工程级编译构建任务脚本,hvigor是基于任务管理机制实现的一款全新的自动化构建工具,主要提供任务注册编排,工程模型管理、配置管理等核心能力。
  • oh-package.json5是工程级依赖配置文件,用于记录引入包的配置信息。

模块级目录

DevEco Studio:

Android Studio: 在DevEco Studio模块级目录中我们可以看到以下几个元素:

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

重点文件介绍

build-profile.json5

工程级build-profile.json5
json 复制代码
{
  "app": {
 
    "signingConfigs": [], //工程的签名信息,可包含多个签名信息
    "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中
         ]
        }
      ]
    }
  ]
}
模块级build-profile.json5
arduino 复制代码
{
  "apiType": 'stageMode',//API类型,使用FA或者Stage模型
  "buildOption": { //配置筛选har依赖.so资源文件的过滤规则
  },
  "targets": [ //定义的Target,开发者可以定制不同的Target
    {
      "name": "default",
      "runtimeOS": "HarmonyOS"
    },
    {
      "name": "ohosTest",
    }
  ]
}

app.json5

kotlin 复制代码
{
  "app": {
    "bundleName": "com.example.myapplication", //标识应用的Bundle名称,用于标识应用的唯一性。该标签不可缺省。
    "vendor": "example", //标识对应用开发厂商的描述。
    "versionCode": 1000000, //标识应用的版本号,该标签值为32位非负整数。
    "versionName": "1.0.0", //标识应用版本号的文字描述,用于向用户展示。
    "icon": "$media:app_icon", //应用的图标,标签值为图标资源文件的索引。
    "label": "$string:app_name", //应用的名称,标签值为字符串资源的索引
    /*
    标识应用运行需要的API目标版本的类型,采用字符串类型表示
    Canary:受限发布的版本。
    Beta:公开发布的Beta版本。
    Release:公开发布的正式版本。
    */
    "apiReleaseType": "Release", 
    "debug": false //标识应用是否可调试,该标签由IDE编译构建时生成。
  }
}

module.json5

kotlin 复制代码
{
  "module": {
    "name": "entry", //当前Module的名称
    "type": "entry", //当前Module的类型
    "description": "$string:module_desc", //描述
    "mainElement": "EntryAbility", //当前Module的入口UIAbility名称或者ExtensionAbility名称
    //当前Module可运行设备类型
    "deviceTypes": [
      "phone",
      "tablet"
    ],
    "deliveryWithInstall": true, //当前Module是否在用户主动安装的时候安装
    "installationFree": false, //当前Module是否支持免安装特性
    "pages": "$profile:main_pages", //当前Module的profile资源
    //当前Module中UIAbility的配置信息
    "abilities": [
      {
        "name": "EntryAbility", //当前UIAbility组件的名称
        "srcEntry": "./ets/entryability/EntryAbility.ts", //入口UIAbility的代码路径
        "description": "$string:EntryAbility_desc", //描述
        "icon": "$media:icon", //当前UIAbility组件的图标
        "label": "$string:EntryAbility_label", //当前UIAbility组件对用户显示的名称
        "startWindowIcon": "$media:icon", //UIAbility组件启动页面图标资源文件的索引
        "startWindowBackground": "$color:start_window_background", //当前UIAbility组件启动页面背景颜色资源文件的索引
        "exported": true, //当前ExtensionAbility组件是否可以被其他应用调用
        //当前UIAbility组件或ExtensionAbility组件能够接收的的特征集,为数组格式。
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ]
  }
}

5.总结

Ok,本篇文章带你大致浏览了HarmonyOS开发入门所要准备的环境以及熟悉了DevEco Studio的开发界面,了解了项目工程目录下的配置文件内容,希望对你有帮助,如果你们有疑问或者想说的也欢迎在论区或私信留言捏❤️❤️。

6.参考链接

本文的参考链接:

想要了解更多关于HarmonyOS开发可访问:

相关推荐
sun0077001 天前
android ndk编译valgrind
android
AI视觉网奇1 天前
android studio 断点无效
android·ide·android studio
jiaxi的天空1 天前
android studio gradle 访问不了
android·ide·android studio
No Silver Bullet1 天前
android组包时会把从maven私服获取的包下载到本地吗
android
catchadmin1 天前
PHP serialize 序列化完全指南
android·开发语言·php
tangweiguo030519871 天前
Kable使用指南:Android BLE开发的现代化解决方案
android·kotlin
爱笑的眼睛111 天前
HarmonyOS 应用开发深度解析:基于声明式UI的现代化状态管理实践
华为·harmonyos
前端世界1 天前
HarmonyOS 实战:如何用数据压缩和解压让应用更快更省
华为·harmonyos
00后程序员张1 天前
iOS App 混淆与资源保护:iOS配置文件加密、ipa文件安全、代码与多媒体资源防护全流程指南
android·安全·ios·小程序·uni-app·cocoa·iphone
安卓开发者1 天前
鸿蒙Next Web组件详解:属性设置与事件处理实战
前端·华为·harmonyos