Harmony开发工具(2)——Hvigor
概述
基于TS实现的构建任务编排工具
主要提供任务管理机制,基于任务对项目进行自动化构建的
自动执行和管理构建流程,实现应用/服务构建任务流的执行,完成HAP/APP的构建打包
可独立于DevEco Studio运行
工程结构
hvigor将工程解析为一个如下所示的两层树形结构,项目为根,模块为叶,都称为Node
flowchart LR
A[Project] --> B[Module_A]
A--> C[Module_B]
A --> D[Module_C]
最开始的初始化阶段,通过hvigorconfig.ts及工程级build-profile.json5文件(均可以配置多模块)中的配置构造出一个树形结构存储项目工程结构
配置文件说明
hvigor-config.json5文件,以指定hvigor的版本、构建依赖以及构建行为的配置参数
build-profile.json5文件分为工程级与模块级,其中buildOption在工程级文件和模块级文件均可配置(相同字段以模块级的字段为准,不同字段模块级会继承工 ...
Harmony开发工具(1)——DevEco
目录结构
生成文档
ToolS -> Generate ArkTsDoc
查看构建历史
Build -> Build Analysis
Harmony主题设置
主题色
创建自定义主题色
//EntryAbility.etsclass myTheme implements CustomTheme{ colors?: CustomColors constructor(color: CustomColors) { this.colors = color }}onWindowStageCreate(windowStage: window.WindowStage): void { // Main window is created, set main page for this ability hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); const theme = new myTheme() ThemeControl.setDefaultTheme(theme) //··· ...
Harmony安全区设置
设置安全区
//方法1async aboutToAppear():Promise<void>{ const win = await window.getLastWindow(getContext(this)) win.setWindowLayoutFullScreen(true)}//方法2//底部若指定高度(如.height(100))会失效Image('https://pic3.zhimg.com/v2-37617ef484856928d1db445d493a62f7_r.jpg?source=1940ef5c') .height('100%') .width('100%') .expandSafeArea([SafeAreaType.SYSTEM],[SafeAreaEdge.TOP,SafeAreaEdge.BOTTOM])
获取安全区高度、宽度
async aboutToAppear():Promise<void> ...
Harmony小技巧(3)——快捷键
生成代码
功能
快捷键
根据父类模板快速生成子类(extends继承) 方法
Ctrl+O
为类快速生成一个对应的构造函数
Alt+Insert
阅读代码
功能
快捷键
快速生成注释信息
“/**”+回车键
搜索工程里的所有内容
连击2次shift
查看变量赋值、引用情况
点击对象+Alt+F7
清除未使用的import
Ctrl+Alt+O
查看接口/类的继承关系结构
Ctrl+H
代码结构树
Alt+7或Ctrl+F12
快速导入包
Alt+Shift+Enter
取消缩进
Shift+Tab
注释
Ctrl+/
代码格式化
Ctrl+Alt+L 代码块前增加“//@formatter:off”,并在该代码块的最后增加“//@formatter:on”,即表示对该范围的代码块不需要进行格式化操作
跳转查看类型详情
Ctrl+B
Harmony权限
应用权限保护的对象
权限使用基本原则
应用(包括应用引用的三方库)所需权限必须在应用的配置文件中严格按照权限开发指导逐个声明
权限申请满足最小化原则,禁止申请非必要的、已废弃的权限
应用申请敏感权限时,必须填写权限使用理由字段
应用敏感权限须在对应业务功能执行前动态申请,满足隐私最小化要求
用户拒绝授予某个权限后,应用与此权限无关的其他业务功能应允许正常使用
授权方式
系统授权
在应用中申请system_grant权限。被允许访问的数据不会涉及到用户或设备的敏感信息,应用被允许执行的操作对系统或者其他应用产生的影响可控
用户授权
授权示例
定位授权
在src/main/resources/module.json5中配置申请
"requestPermissions": [{ "name": "ohos.permission.INTERNET"}, { "name": "ohos.permission.LOCATION", //模式串需在reso ...
文学批评理论(1)——自由人文主义
历史
年代
人物
主要思想
公元前4世纪
亚里士多德
1. 《诗学》中的“悲剧”定义:文学关乎人物,人物体现于行动2. 划分了情节发展的阶段3. “读者中心”批评法,试图描述戏剧对观众的影响
19世纪
莫里斯(F.D. Maurice)
文学是中产阶级特有的财富与观念表达,使人感到自己属于自己的国家
19世纪
马修·阿诺德(Matthew Arnold)
用世俗、语言文化代替宗教
19世纪
弗里曼(Edward Freeman)
文学研究必须和语言研究一起,否则不是学术
20世纪
理查兹(Ivor Armstrong Richards)
1. 语义分析+心理研究->新批评体系2. 严格区分文学与语言3. 实用批评:将文本从历史、语境中剥离
20世纪
燕卜荪(William Empson),理查兹的学生
《含混七型》,通过词语分析确定诗歌的七个含混
20世纪
艾略特(T.S. Eliot)
20世纪
利维斯()
利维斯主义
派系
自由人文主义准则
看待文学的态度。优秀的文学超越时间、历史局限性,与永恒人性对话
on-sight c ...
Harmony案例分析(2)——开眼App
任务背景
任务描述
根据所给接口,仿照“开眼”APP开发UI界面,并实现页面路由、发帖、评论等APP基础功能
训练目标
对接口的使用
各种组件的综合运用
布局
性能优化
实现思路
布局
对于首页,用Tabs开发下方导航栏
路由
使用router或者CustomDialog完成页面跳转
接口数据获取
根据接口格式,通过相关工具、开眼App具体布局,分析接口数据应用方式
通过http包的Get方法请求数据
问题与解决方案
问题
解决方案
接口数据庞大,难以下手
写一个DataAnalysis组件去分析Json里的重要数据,比如type根据type分析该type下的数据用于何处
如何申请模拟器网络权限
src/main/resources/module.json5中的module添加"requestPermissions": [{“name”: “ohos.permission.INTERNET”
}],
优化
待优化方向
使用Navigation组件开发首页
尽量不用Flex
使用LazyForEach
用泛型等面向 ...