​🌈个人主页:前端青山
🔥系列专栏:鸿蒙开发篇
🔖人终将被年少不可得之物困其一生

依旧青山,本期给大家带来鸿蒙开发篇专栏内容:鸿蒙开发-DevEco Studio安装+基本使用

安装失败正常的,并且对电脑配置有要求 一般内存小于8G 非常卡或者用不了。

image.png

image.png

1.进入DevEco Studio下载官网,单击“立即下载”进入下载页面

DevEco Studio提供了Windows版本和Mac版本选择,可以根据操作系统选择对应的版本进行下载。

image.png

Mac(ARM)是指搭载苹果自研的ARM架构处理器的Mac电脑,比如搭载M1芯片的MacBook Air和MacBook Pro。这些处理器是由苹果自行设计的,与之前使用的英特尔x86架构处理器不同。 Mac(X86)是指搭载英特尔x86架构处理器的Mac电脑,比如之前的MacBook、iMac和Mac Pro等。这些处理器是由英特尔生产的,是传统的计算机处理器架构。

2.安装

双击程序包安装

image.png

选择安装路径 可以默认 也可以指定都行 d:\huawei\DevEco

image.png

image.png

安装中

image.png

image.png

3.配置环境

电脑 左下角 菜单 输入 deveco 切记右击管理员身份运行。 70% 不用,30% 电脑权限

image.png

双击已安装的DevEco Studio快捷方式进入配置页面,IDE会进入配置向导,选择Agree,同意相应的条款,进入配置页

image.png

进入DevEco Studio配置页面,首先需要进行基础配置,包括Node.js与Ohpm(鸿蒙的包管理工具)的安装路径设置,选择从华为镜像下载至合适的路径。

推荐安装目录 d:\huawei\nodejs d:\huawei\ohpm

image.png

单击'Next'进入SDK配置,设置为合适的路径, d:\huawei\sdk

image.png

点击'Next'后会显示'SDK License Agreement',阅读相关协议后,勾选'Accept'。

image.png

单击‘Next’进入配置预览页,在这里进行配置项的确认。

image.png

确认完成后,单击'Next',进入下一步。(非常慢)

image.png

等待配置自动下载完成,完成后,单击'Finish',IDE会进入欢迎页,我们也就成功配置好了开发环境。

image.png

!!! 校验配置环境是否成功 点击Create Project 创建项目,出现项目创建页面,则为配置成功,否则根据提示,进一步继续配置(注意编辑器的红色提示点击后面的蓝色设置字样继续配置) !!! 有20%小伙伴出现不了配置ohpm、和sdk的界面那么你直接检查环境是否成功去安装

4.调整编译语言 1.点击右下角configure

image.png

2.点击Preferences/Settings

image.png

3.点击左边Plugins,并在搜索框输入chinese

切记点击Installed 勾选就可以

image.png

4.输入中文插件并点击右下角OK

image.png

5.点击Restart重启后切换完成

image.png

5.创建项目

如果你是首次打开DevEco Studio,那么首先会进入欢迎页。如果已经使用过那么会有之前项目的选项

1.新建项目

欢迎使用DEVECO STUDIO

最近工程

DEVECO STUDIO

新建项目

打开项目

image.png

2.选择空白模板

image.png

3.项目配置

●Project name是开发者可以自行设置的项目名称,这里根据自己选择修改为自己项目名称。

●Bundle name是包名称,默认情况下应用ID也会使用该名称,应用发布时对应的ID需要保持一致。

a.b.c a 国家 cn 其他 com b 公司名字 c 项目名字

●Save location为工程保存路径,建议用户自行设置相应位置。

●Compile SDK是编译的API版本,这里默认选择API9。

●Model选择Stage模型,其他保持默认即可。

点击Finish 等待 项目创建完成

image.png

项目创建完成后会自动下载依赖

image.png

image.png

4.运行项目

咱们可以通过预览器运行,也可以通过模拟器、或者真机测试 考虑到咱们普遍0基础 所以呢 后续讲解 今天先体验

5.修改编辑器配置

把当前运行运行到模拟器是会把ets代码进行打包,最后会打包出.js文件和.map文件这些都是打包源码,一般来说不需要进行额外处理,所以在编辑器中进行忽略

image.png

添加.js .map

image.png

6.模拟器

预览器

1-开发的时候好好的,真机测试就各种问题、

2-预览器仅支持预览效果 例如网络请求、拍照等;

买个手机成本大 因此使用模拟器(刚好部分小伙伴用不了预览器)

image.png

初次进入点击 install 安装

C\USERS\86188VAPPDATA\LOCALHUAWEI(HARMONYOSEMULATONDEPLOYED

image.png

image.png

image.png

image.png

image.png

image.png

第一次启动一般需要一些时间

image.png

image.png

image.png

后续讲解如何修改图标以及名字

7.真机运行

后面再说 配置签名

6.目录介绍

image.png

1.文件结构 .hvigor和.idea

ide配置文件

AppScope

中存放应用全局所需要的资源文件。

鸿蒙支持单模块也支持多模块开发

多模块开发 类似于前端 多页面应用 类似于 小程序 分包机制 项目右键点击新建 模块,取名未 other 默认模块为entry,新建模块 other,二者都需要使用的资源文件则可放到 AppScope文件夹

entry

应用的主模块,存放HarmonyOS应用的代码、资源(也就是静态文件)等

oh_modules

工程的依赖包,存放工程依赖的源文件。可以理解成node_modules

build-profile.json5

工程级配置信息,包括签名、产品配置等。可以简单理解为后续打包发布需要的一些配置

hvigorfile.ts

工程级编译构建任务脚本,hvigor是基于任务管理机制实现的一款全新的自动化构建工具,主要提供任务注册编排,工程模型管理、配置管理等核心能力

oh-package.json5

工程级依赖配置文件,用于记录引入包的配置信息,类似于前端vue项目中的package.json文件。

2.entry模块目录说明

img

entry>src目录中主要包含总的main文件夹,单元测试目录ohosTest,以及模块级的配置文件

.preview和build

预览和真机模拟时生成的目录,如果没有进行预览或者真机模拟则没有,一般不需要管理

src

项目源码录了

src>main

项目入口目录

src>main>ets

ets代码或者项目代码

src>main>ets>entryability

存放ability文件,用于当前ability应用逻辑和生命周期管理

src>main>ets>pages

存放UI界面相关代码文件,初始会生成一个Index页面

src>main>resources

静态资源

entry>src>main>module.json5

文档中心参考链接

{
  "module": {
    // 该标签标识当前module的名字,module打包成hap后,表示hap的名称,标签值采用字符串表示(最大长度31个字节),该名称在整个应用要唯一
    "name": "entry",
    // 标识当前Module的类型。类型有两种,分别:- entry:应用的主模块。- feature:应用的动态特性模块。
    "type": "entry",
    // 描述
    "description": "$string:module_desc",
    // 该标签标识hap的入口ability名称或者extension名称。只有配置为mainElement的ability或者extension才允许在服务中心露出
    "mainElement": "EntryAbility",
    // 该标签标识hap可以运行在哪类设备上,标签值采用字符串数组的表示。
    "deviceTypes": [
      "phone",
      "tablet"
    ],
    // 标识当前Module是否在用户主动安装的时候安装,表示该Module对应的HAP是否跟随应用一起安装。- true:主动安装时安装。- false:主动安装时不安装
    "deliveryWithInstall": true,
    // 标识当前Module是否支持免安装特性。- true:表示支持免安装特性,且符合免安装约束。- false:表示不支持免安装特性
    "installationFree": false,
    // 对应的是main_pages.json文件,用于配置ability中用到的page信息。 可以理解为路由表,按住command点击可以进入
    "pages": "$profile:main_pages",
    // 存放当前模块中所有的ability元能力的配置信息,其中可以有多个ability
    "abilities": [
      {
        // 该标签标识当前ability的逻辑名,该名称在整个应用要唯一,标签值采用字符串表示(最大长度127个字节)
        "srcEntry": "./ets/entryability/EntryAbility.ts",
        // 描述,
        // ability的入口代码路径。,
        "name": "EntryAbility",
        "description": "$string:EntryAbility_desc",
        // ability的图标。该标签标识ability图标,标签值为资源文件的索引。该标签可缺省,缺省值为空。如果ability被配置为MainElement,该标签必须配置
        "icon": "$media:icon",
        // ability的标签名。
        "label": "$string:EntryAbility_label",
        // 启动页面的图标。
        "startWindowIcon": "$media:icon",
        // 启动页面的背景色。
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        // 标识能够接收的意图的action值的集合,取值通常为系统预定义的action值,也允许自定义。
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ]
  }
}

修改实际项目的图标和文字

deepcode_logo.png

将此logo复制到项目目录 entry/src/main/resources/base/media/deepcode_logo.png

打开entry/src/main/resources/zh_CN/string.json,替换如下字段

image.png

image.png

build-profile.json5

模块级配置信息,包括编译构建配置项

hvigorfile.ts

文件是模块级构建脚本

oh-package.json5

模块级依赖配置信息文件

onosTest

单元测试目录,用来对代码进行单元测试。新手可以直接删除,降低理解难度

7.ArkUI组件

也就是之前html里面的标签 + css样式 二次封装的产物

粗略讲 第一天快速入个门 后面还会有很多很多细节

内置组件

1.Column、Row

// 鸿蒙 组件化开发思想
// ets页面 可以写多个组件
// 页面执行渲染结果 看哪个组件包含 @Entry 这个装饰器 - 一个页面有且只有一个Entry
// 每一个组件都需要通过 @Component 装饰器来装饰
// 每一个组件都用struct关键字。可以理解为es6中的class,不可以继承
// 每一个组件都必须得实现build函数,build函数内部放置 ArkUI
// 组件的首字母一定要大写,且使用大驼峰式命名 ChildCom
// ArkUI组件调用均使用的是函数的形式(html中标签形式)
// build函数内部只能有一个顶级组件
@Entry
@Component
struct Index {
  build() {
    Column() { // 顶级组件
      // Column 列布局 在垂直的方向上布局
      Column() { // 列组件内的元素将以上下的形式呈现
        Text('您好')
        Text('hello')
      }
      .width('100%') // 列方向元素指定宽度后 默认为水平方向居中
      .backgroundColor(Color.Yellow) // 枚举Color
​
      // Row 行布局 在水平方向上布局
      Row() {// 行组件内的元素将以左右的形式呈现
        Text('您好')
        Text('hello')
      }
      .width('100%')
      .height(60)  // 行方向元素指定高度后 默认为垂直方向居中
      .backgroundColor('#f00')
    }
  }
}

image.png

2.Image

html 写标签/写属性

<img src=""  width="" height="" />

arkts 写组件/写属性

Image(src: string|Resource)
    .width(100)
    .height(100)
    .broderRadius(10)
@Entry
@Component
struct Index {
  build() {
    Column() {
      // Image 图片一般需要指定宽高
      // Image(str: string | Resource)
      Text('远程图片地址') // string
      Image('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png')
        .width(100)
​
      Text('本地资源')
      // 可以将图片直接放在 src/main/resources/base/media内
      // 后续可以通过 $r('app.media.*')访问本地图片
      Image($r('app.media.deepcode_logo')) // Resource
        .width(100)
​
      // 上述访问本地图片不合理
      // 假如项目中需要根据功能将图片放置到不同的文件夹用以区分
      // 可以在 src/main/resources/rawfile文件夹内根据业务创建不同的文件夹
      //  后续可以通过$rawfile('文件夹/图片')访问本地图片
      Text('本地资源')
      Image($rawfile('logo/deepcode_logo.png')) // Resource
        .width(100).height(100)
    }
  }
}

image.png

3.Text

html 写标签

<span>hello</span>
<div>hello</div>
<h1>hello</h1>

arkts 写组件/写属性

@Entry
@Component
struct Index {
  build() {
    Column() {
      Text('Hello world')
        .fontSize(30)
        .fontColor(Color.Red)
        // .fontWeight(FontWeight.Bold)
        .fontWeight(800)
        .fontStyle(FontStyle.Italic)
    }
    .width('100%')
  }
}

image.png

4.TextInput

html 写标签

<input typet="text" placeholder="请输入内容" value="默认数据" />

arkts 写组件/写属性

TextInput( { 名字:数据, 名字:数据 } ) 留心1:写的是花括号 留心2:名字:数据 多个之间逗号隔开 名字不是随便写的鸿蒙规定好了 具体有哪些后期带你看手册 今天快速入门

TextInput({placeholder?:"请输入内容", text?:"默认数据"})
  .width('100%')
  .height(50)
  .backgroundColor('#000')
@Entry
@Component
struct Index {
  build() {
    Column() {
      // 输入框
      TextInput({
        placeholder: '请输入需要搜索的内容',
        text: '默认值'
      })
        .width('100%')
        .height(50)
        .backgroundColor('#f66')
    }
    .width('100%')
  }
}

image.png

5.Button

html 写标签

<button>内容</button>

arkts 写组件/写属性

Button() {
    Image(图片).width()
}
​
Button(label?: ResourceStr)
 .width('100%')
 .height(50)
 .type(ButtonType.Normal)
 .onclick(() => {
 
 })

立即登录

image.png

8.实战案例:今日头条鸿蒙App密码登录页

image.png

代码

image.png

@Entry
@Component
struct TouTiao {
​
  build() {
    Column(){
      Row () {
        Image('https://p3-search.byteimg.com/img/labis/058353431f348572d9fa50b70d6a75d8~tplv-26tn0yjwph-cspd-v1:180:180.jpeg')
          .width(90)
        Text('密码登录')
          .fontSize(40)
          .fontWeight(FontWeight.Bold)
          .margin({ left: 10 })
      }.width('100%')
      Row () {
        TextInput({ placeholder: '手机号/邮箱'})
          .height(60)
          .backgroundColor('#fff')
          .fontSize(26)
          .borderRadius(0)
          .border({
            width: { bottom: 2 },
            color: '#dadada'
          })
          .placeholderColor('#acacac')
          .placeholderFont({ size: 26 })
      }.margin({ top: 40 })
      Row () {
        TextInput({ placeholder: '密码'})
          .height(60)
          .backgroundColor('#fff')
          .fontSize(26)
          .borderRadius(0)
          .border({
            width: { bottom: 2 },
            color: '#dadada'
          })
          .placeholderColor('#acacac')
          .placeholderFont({ size: 26 })
      }.margin({ top: 40 })
​
      Button('立即登录')
        .width('100%')
        .height(60)
        .fontSize(24)
        .type(ButtonType.Normal)  // 按钮类型设置简单 --- 推荐
        .backgroundColor('#ea4a45')
        .margin({ top: 30 })
    }
      // .width('100%')
      // .height('100%')
      .padding({
        top: 80,
        left: 20,
        right: 20
      })
      // .backgroundColor('#f66')
  }
}

尝试写一些其他的应用的表单页面,比如登录页面/注册页面/完善个人信息页面

京东登录注册

+86`请输入手机号

获取验证码

请输入收到的验证码

登录

账号密码登录

手机快速注册

其他登录方式

用户隐私政

我已阅读并同意京东用户服务协议

策,未注册的手机号将自动创建京东账号

image.png

若有收获,就点个赞吧

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐