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开发可访问:

相关推荐
_一条咸鱼_1 小时前
揭秘 Android View 位移原理:源码级深度剖析
android·面试·android jetpack
_一条咸鱼_1 小时前
深度剖析:Android View 滑动原理大揭秘
android·面试·android jetpack
_一条咸鱼_1 小时前
深度揭秘:Android View 滑动冲突原理全解析
android·面试·android jetpack
_一条咸鱼_1 小时前
揭秘 Android View 惯性滑动原理:从源码到实战
android·面试·android jetpack
ansondroider2 小时前
Android adb 安装应用失败(安装次数限制)
android·adb·install
云和数据.ChenGuang3 小时前
鸿蒙版电影app设计开发
华为·harmonyos·鸿蒙·鸿蒙系统
艾小逗4 小时前
uniapp中检查版本,提示升级app,安卓下载apk,ios跳转应用商店
android·ios·uni-app·app升级
Bruce_Liuxiaowei4 小时前
HarmonyOS Next~鸿蒙系统UI创新实践:原生精致理念下的设计革命
ui·华为·harmonyos
tangweiguo030519876 小时前
Android Kotlin ViewModel 错误处理:最佳 Toast 提示方案详解
android·kotlin