鸿蒙应用开发培训笔记02:应用开发入门

Posted howard2005

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鸿蒙应用开发培训笔记02:应用开发入门相关的知识,希望对你有一定的参考价值。

文章目录

零、本讲学习目标

  1. 了解HarmonyOS应用开发学习路线
  2. 掌握HarmonyOS应用开发环境搭建方式
  3. 掌握HarmonyOS应用开发基础知识框架

一、应用开发概述

(一)鸿蒙应用开发定位

对应用开发者而言,HarmonyOS采用了一次开发,多端部署的技术,使得应用程序的开发实现与不同终端设备的形态差异无关。手机应用开发,是整个分布式能力的核心。

(二)应用开发学习路线

(三)应用开发实例 - 小鸿网课

很多家长反馈,孩子上网课将家里的手机、电脑、iPad、投影仪全都用上了,电脑用来上课,iPad用来回答问题,手机用来拍照上传作业,多个设备使用起来常常会手忙脚乱。“小鸿网课”应用致力于解决这一痛点。
主要特性:

  • 单设备播放教学视频并能答题,案例如下图所示。
  • 多设备协同时,使用大屏设备播放教学视频,使用手持设备答题。
  • 在手机上保留答题功能
  • 大屏幕设备播放教学视频

二、搭建鸿蒙集成开发环境

开始开发HarmonyOS应用前,应首先搭建开发环境。HarmonyOS应用开发环境搭建主要包含以下步骤:

  • 安装DevEco Studio。
  • 配置代理(可选)。
  • 下载HarmonyOS SDK。
    应用开发使用DevEco Studio作为集成开发环境 (IDE),并需要安装指定版本的SDK。

(一)下载鸿蒙开发安装包

(二)安装鸿蒙集成开发工具 - DevEco Studio

(三)启动鸿蒙集成开发环境

  • 安装HarmonyOS SDK
  • 设置确认
  • 协议许可


三、创建鸿蒙应用程序

(一)创建鸿蒙项目

  • 单击【Create HarmonyOS Project】
  • 选择ability模板 - Empty Ability
  • HarmonyOS项目的项目模板:Empty Feature Ability(JS)、Empty Feature Ability(Java)、List Feature Ability(JS)…
  • 配置项目信息(项目名 - HelloWorld、项目类型 - Application、包名 - net.hw.helloworld、保存位置、设备类型 - Phone)
  • HarmonyOS项目的设备模板:Phone、Tablet、Car、TV、Wearable、Lite Wearable、Smart Vision……
  • 单击【Finish】按钮

问题研讨:模板Empty Ability(JS)、Empty Ability(Java)的区别是什么?

  • Empty Ability(JS):表示UI界面主要用JS去实现
  • Empty Ability(Java):表示UI界面主要用Java去实现

(二)使用华为远程模拟器

  • 打开华为虚拟设备管理器

  • 登录华为官网

  • 允许DevECO Studio访问华为账号(授权)
  • 单击【允许】按钮
  • 授权成功后,回到DevEco Studio界面中继续操作
  • 单击【Agree】按钮,查看远程模拟器列表
  • 在设备列表中,选择Mate X2 5G 模拟器来启动

  • 修改查看模式

问题研讨:启动远程模拟器之后,是不是程序也启动了?

  • 并没有,启动远程模拟器只是启动了程序的运行环境,需要运行程序才能在远程模拟器中运行。

(三)启动应用,查看效果

  • 点击程序上方工具栏的运行按钮,运行程序。或者默认快捷键Shift+F10(Mac为Control+R)运行工程。
  • 选择HUAWEI ANA-AN00,点击“运行”按钮,运行项目,查看结果

问题研讨:每次运行都只能依赖远程模拟器吗?

  • 远程模拟器用于没有真机的测试,如果有真机,可以直接使用手机进行USB调试。

四、构建应用的步骤

(一)项目工程结构

  • 使用DevEco Studio选择模板生成项目后,会创建基本的应用包结构,主要包括如下目录和文件,如下图所示:

(二)使用 XML 文件进行用户界面设计

使用布局和控件构建UI界面(如下方左图),并通过XML代码实现(如下方代码,部分参数省略)。最终运行结果如下图所示:

(三)从零开发一个应用 – 在代码中加载页面布局

每个页面都有生命周期,在页面的生命周期的onStart()方法中可以使用如下是所示代码加载使用XML构建的UI布局文件。

(四)监听触摸事件代码实现

  • 可以使用代码控制页面中的布局和控件,实现各种逻辑。
  • 如下代码展示了使用代码为按钮设置 Component.ClickListener(点击事件监听器),实现点击按钮后执行分布式协同逻辑代码的效果。

(五)申请分布式权限

  • 应用开发过程中需要申请权限,本案例中由于使用了分布式相关API,所以需要申请分布式权限。
  • 分布式权限是敏感权限,除了在配置文件 (config.json) 中声明,还需在代码中动态申请,相关代码如下:

(六)应用开发流程总结

  • 应用开发环境主要使用DevEco Studio作为一站式集成开发环境。
  • 使用DevEco Studio选择模板生成项目后,会创建基本的应用包结构。
  • 本案例中开发UI界面主要使用XML构建布局,并在Java类中加载。
  • 使用Java代码构建业务逻辑。HarmonyOS SDK提供了种类和数量丰富的API协助开发者构建业务代码。
  • 应用开发过程中还涉及权限与隐私管理,以及数据管理。

五、开发基础知识框架

(一)应用包结构

一个HarmonyOS应用包结构主要包含APP (Application Package)和HAP (HarmonyOS Ability Package)。如下图所示:

(二)配置文件

  • 应用的每个HAP的根目录下都存在一个 “config.json” 配置文件
  • 配置文件内容主要涵盖三个方面

(三)资源文件目录

(四)使用资源文件

1、base目录与限定词目录中的资源文件

  • 通过指定资源类型 (type) 和资源名称 (name) 来引用。

(1)Java文件引用资源文件的格式:ResourceTable.type_name

ohos.global.resource.ResourceManager resManager = getAbilityContext().getResourceManager();
String result = resManager.getElement(ResourceTable.String_app_name).getString();

(2)XML文件引用资源文件的格式:$type:name

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout xmlns:ohos="http://schemas.huawei.com/res/ohos"
        ohos:width="match_parent"
        ohos:height="match_parent"
        ohos:orientation="vertical">
        
    <Text ohos:text="$string:app_name"
          ohos:height="match_parent"
          ohos:width="match_parent"/>
</DirectionalLayout>

2、rawfile目录中的资源文件

  • 通过指定文件路径和文件名称来引用。
ohos.global.resource.ResourceManager resManager = getAbilityContext().getResourceManager();
ohos.global.resource.RawFileEntry rawFileEntry = resManager.getRawFileEntry("resources/rawfile/example.js"); 

(五)数据管理

1、本地数据管理

  • 使用SQLite作为持久化存储引擎,提供了关系型数据库和对象关系映射数据库。
  • 此外还提供轻量级偏好数据库,一种支持轻量级Key-Value操作的非关系型数据库。

2、分布式数据服务

  • 通过调用分布式数据接口,应用可以将数据保存到分布式数据库中。
  • 通过结合帐号、应用唯一标识和数据库三元组,对属于不同应用的数据进行隔离。

(六)权限管理

1、权限声明

  • 应用需要在config.json中使用 “reqPermissions” 属性对需要的权限逐个进行声明;
  • 若使用到的三方库也涉及权限使用,也需统一在应用的config.json中逐个声明;
  • 没有在config.json中声明的权限,应用无法获得此权限的授权。

2、动态申请敏感权限

敏感权限基于用户可知可控的原则,需要应用在运行时主动调用系统动态申请权限的接口,系统弹框由用户授权。

 if (canRequestPermission("ohos.permission.LOCATION"))   
       // 是否可以申请弹框授权(首次申请或者用户未选择禁止且不再提示)  
       requestPermissionsFromUser(new String[]"ohos.permission.LOCATION", 666);  
 else   
       // 显示应用需要权限的理由,提示用户进入设置授权  
       HiLog.info(LABEL_LOG, "显示应用需要权限的理由,提示用户进入设置授权");  
  

3、自定义权限

(七)权限使用原则

(八)隐私管理

六、思考题

  1. (判断题) 一个APP中,只可以有一个entry类型的HAP。( )
  2. (单选题) 一个APP中通常需要包括应用的全局配置信息、应用在具体设备上的配置信息等信息,这些信息通常在( )文件中。
    A. Manifest.xml
    B. build.gradle
    C. config.json
    D. local.properties
  3. (单选题) 应用需要在config.json中使用( )属性对需要的权限逐个进行声明。
    A. uses-permission
    B. reqPermissions
    C. distro
    D. abilities

七、本讲总结

  • 通过一个应用开发案例,介绍了HarmonyOS应用开发的基本流程和所需基础知识,讲解了包结构、资源文件、数据管理、权限管理等内容。
  • 通过本讲学习,可以增强对HarmonyOS分布式能力的理解,进一步了解HarmonyOS的优势和特点,并且可以初步了解HarmonyOS的应用开发流程,为后续课程内容打下良好基础。

以上是关于鸿蒙应用开发培训笔记02:应用开发入门的主要内容,如果未能解决你的问题,请参考以下文章

鸿蒙应用开发培训笔记03:Ability 设计与开发

鸿蒙应用开发培训笔记04:UI页面设计与开发

HarmonyOS鸿蒙学习笔记基于eTS的入门应用结构简单梳理

HarmonyOS鸿蒙学习笔记基于eTS的入门应用结构简单梳理

鸿蒙新作《鸿蒙HarmonyOS应用开发从入门到精通》拆箱

2021-02-05鸿蒙开发(二.五)