鸿蒙应用开发培训笔记02:应用开发入门
Posted howard2005
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鸿蒙应用开发培训笔记02:应用开发入门相关的知识,希望对你有一定的参考价值。
文章目录
零、本讲学习目标
- 了解HarmonyOS应用开发学习路线
- 掌握HarmonyOS应用开发环境搭建方式
- 掌握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、自定义权限
(七)权限使用原则
(八)隐私管理
六、思考题
- (判断题) 一个APP中,只可以有一个entry类型的HAP。( )
- (单选题) 一个APP中通常需要包括应用的全局配置信息、应用在具体设备上的配置信息等信息,这些信息通常在( )文件中。
A. Manifest.xml
B. build.gradle
C. config.json
D. local.properties - (单选题) 应用需要在config.json中使用( )属性对需要的权限逐个进行声明。
A. uses-permission
B. reqPermissions
C. distro
D. abilities
七、本讲总结
- 通过一个应用开发案例,介绍了HarmonyOS应用开发的基本流程和所需基础知识,讲解了包结构、资源文件、数据管理、权限管理等内容。
- 通过本讲学习,可以增强对HarmonyOS分布式能力的理解,进一步了解HarmonyOS的优势和特点,并且可以初步了解HarmonyOS的应用开发流程,为后续课程内容打下良好基础。
以上是关于鸿蒙应用开发培训笔记02:应用开发入门的主要内容,如果未能解决你的问题,请参考以下文章
HarmonyOS鸿蒙学习笔记基于eTS的入门应用结构简单梳理