【HarmonyOS】应用开发第三章-HarmonyOS开发基础_第1页
【HarmonyOS】应用开发第三章-HarmonyOS开发基础_第2页
【HarmonyOS】应用开发第三章-HarmonyOS开发基础_第3页
【HarmonyOS】应用开发第三章-HarmonyOS开发基础_第4页
【HarmonyOS】应用开发第三章-HarmonyOS开发基础_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章HarmonyOS开发基础

武汉大学计算机学院赵小刚大纲APPAbility库文件资源文件配置文件HAR创建第一个程序APPHarmonyOS的应用软件包以APPPack(ApplicationPackage)形式发布,它是由一个或多个HAP(HarmonyOSAbilityPackage)以及描述每个HAP属性的组成。HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开。一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包,可分为entry和feature两种模块类型。entry:应用的主模块。一个APP中,对于同一设备类型必须有且只有一个entry类型的HAP,可独立安装运行。feature:应用的动态特性模块。一个APP可以包含一个或多个feature类型的HAP,也可以不含。只有包含Ability的HAP才能够独立运行。HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开,它是由一个或多个Ability组成。HAP结构AbilityAbility是应用所具备的能力的抽象,一个应用可以包含一个或多个Ability。Ability分为两种类型:FA(FeatureAbility)和PA(ParticleAbility)。FA/PA是应用的基本组成单元,能够实现特定的业务功能。FA有UI界面,而PA无UI界面。库文件是应用依赖的第三方代码(例如so、jar、bin、har等二进制文件),存放在libs目录。配置文件(config.json)是应用的Ability信息,用于声明应用的Ability,以及应用所需权限等信息。描述应用软件包中每个HAP的属性,由IDE编译生成,应用市场根据该文件进行拆包和HAP的分类存储。HAP的具体属性包括:delivery-with-install:表示该HAP是否支持随应用安装。“true”表示支持随应用安装;“false”表示不支持随应用安装。name:HAP文件名。module-type:模块类型,entry或feature。device-type:表示支持该HAP运行的设备类型。HARHAR(HarmonyOSAbilityResources)可以提供构建应用所需的所有内容,包括源代码、资源文件和config.json文件。HAR不同于HAP,HAR不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。资源文件应用的资源文件(字符串、图片、音频等)统一存放于resources目录下,便于开发者使用和维护。resources目录包括两大类目录,一类为base目录与限定词目录,另一类为rawfile目录。resources目录结构resources|---base//默认存在的目录||---element|||---string.json||---media|||---icon.png|---en_GB-vertical-car-mdpi//限定词目录示例,需要开发者自行创建||---element|||---string.json||---media|||---icon.png|---rawfile//默认存在的目录限定词目录限定词目录可以由一个或多个表征应用场景或设备特征的限定词组合而成,包括语言、文字、国家或地区、横竖屏、设备类型和屏幕密度等六个维度,限定词之间通过下划线(_)或者中划线(-)连接。开发者在创建限定词目录时,需要掌握限定词目录的命名要求以及与限定词目录与设备状态的匹配规则。限定词类型资源组目录base目录与限定词目录下面可以创建资源组目录(包括element、media、animation、layout、graphic、profile),用于存放特定类型的资源文件资源文件的引用方法base目录与限定词目录中的资源文件:通过指定资源类型(type)和资源名称(name)来引用。Java文件引用资源文件的格式:ResourceTable.type_name。特别地,如果引用的是系统资源,则采用:ohos.global.systemres.ResourceTable.type_name。base目录文件引用示例:在Java文件中,引用string.json文件中类型为“String”、名称为“app_name”的资源。ohos.global.resource.ResourceManagerresManager=getAbilityContext().getResourceManager();Stringresult=resManager.getElement(ResourceTable.String_app_name).getString();XML文件引用资源文件的格式:$type:name。特别地,如果引用的是系统资源,则采用:$ohos:type:name。示例:在XML文件中,引用string.json文件中类型为“String”、名称为“app_name”的资源。<?xmlversion="1.0"encoding="utf-8"?><DirectionalLayoutxmlns:ohos="/res/ohos"ohos:width="match_parent"ohos:height="match_parent"ohos:orientation="vertical"><Textohos:text="$string:app_name"/></DirectionalLayout>rawfile目录文件引用rawfile目录中的资源文件:通过指定文件路径和文件名称来引用。在Java文件中,引用一个路径为“resources/rawfile/”、名称为“example.js”的资源文件,示例如下:ohos.global.resource.ResourceManagerresManager=getAbilityContext().getResourceManager();ohos.global.resource.RawFileEntryrawFileEntry=resManager.getRawFileEntry("resources/rawfile/example.js");系统资源文件目前支持的系统资源文件配置文件应用的每个HAP的根目录下都存在一个“config.json”配置文件,文件内容主要涵盖以下三个方面:应用的全局配置信息,包含应用的包名、生产厂商、版本号等基本信息。应用在具体设备上的配置信息,包含应用的备份恢复、网络安全等能力。HAP包的配置信息,包含每个Ability必须定义的基本属性(如包名、类名、类型以及Ability提供的能力),以及应用访问系统或其他应用受保护部分所需的权限等。配置文件的元素配置文件的内部结构app对象的内部结构deviceConfig对象的内部结构module对象的内部结构HAP与HAR的配置文件的合并配置文件的内部结构应用的配置文件“config.json”中由“app”、“deviceConfig”和“module”三个部分组成,缺一不可。app对象的内部结构app对象包含应用的全局配置信息deviceConfig对象的内部结构deviceConfig包含在具体设备上的应用配置信息,可以包含default、phone、tablet、tv、car、wearable、liteWearable和smartVision等属性。default标签内的配置是适用于所有设备通用。module对象的内部结构module对象包含HAP包的配置信息abilities对象的内部结构说明skills对象的内部结构说明js对象的内部结构说明HAP与HAR的配置文件的合并如果应用模块中调用了HAR,在编译构建HAP时,需要将HAP的“config.json”文件与一个或多个HAR的“config.json”文件,合并为一个“config.json”文件。在合并过程中,不同文件的同一个标签的取值可能发生冲突,此时,需要通过配置mergeRule来解决冲突。配置文件合并规则HAP与HAR的“config.json”文件合并时,需要将HAR的配置信息全部合并到HAP的配置文件。系统定义了详细的合并规则。HAP的优先级总是高于HAR。当HAP依赖于多个HAR时,先加载的HAR的优先级高于后加载的HAR,按照HAR的加载顺序依次合并到HAP文件。创建第一个程序在JavaUI框架中,提供了两种编写布局的方式:在XML中声明UI布局和在代码中创建布局。这两种方式创建出的布局没有本质差别,为了熟悉两种方式,这里将通过XML的方式编写第一个页面。XML创建页面在“Project”窗口,点击“entry>src>main>resources>base>layout”,打开“ability_main.xml”文件。在“ability_main.xml”文件中创建一个文本和一个按钮,示例代码如下:<?xmlversion="1.0"encoding="utf-8"?><DependentLayoutxmlns:ohos="/res/ohos"ohos:width="match_parent"ohos:height="match_parent"ohos:background_element="#FFFFFF"><Textohos:id="$+id:text"ohos:width="match_content"ohos:height="match_content"ohos:text="HelloWorld"ohos:text_color="#000000"ohos:text_size="32fp"ohos:center_in_parent="true"/>

<Buttonohos:id="$+id:button"ohos:width="match_content"ohos:height="match_content"ohos:text="Next"ohos:text_size="19fp"ohos:text_color="#FFFFFF"ohos:top_padding="8vp"ohos:bottom_padding="8vp"ohos:right_padding="70vp"ohos:left_padding="70vp"ohos:background_element="$graphic:background_button"ohos:center_in_parent="true"ohos:align_parent_bottom="true"ohos:bottom_margin="40vp"/></DependentLayout>在“Project”窗口,选择“entry>src>main>java>com.example.myapplication>slice”,打开“MainAbilitySlice.java”文件,使用setUIContent方法加载XML布局,示例代码如下:packagecom.example.myapplication.slice;importcom.example.myapplication.ResourceTable;importohos.aafwk.ability.AbilitySlice;importohos.aafwk.content.Intent;publicclassMainAbilitySliceextendsAbilitySlice{@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);//加载XML布局}

@OverridepublicvoidonActive(){super.onActive();}@OverridepublicvoidonForeground(Intentintent){super.onForeground(intent);}}代码编写页面创建FeatureAbility在“Project”窗口,打开“entry>src>main>java”,右键点击“com.example.myapplication”文件夹,选择“New

>

JavaClass”,命名为“SecondAbilitySlice”,单击回车键。打开“SecondAbilitySlice.java”文件,添加一个文本publicclassSecondAbilitySliceextendsAbilitySlice{@OverridepublicvoidonStart(Intentintent){super.onStart(intent);//声明布局DependentLayoutmyLayout=newDependentLayout(this);//设置布局大小myLayout.setWidth(MATCH_PARENT);myLayout.setHeight(MATCH_PARENT);//设置布局背景为白色ShapeElementelement=newShapeElement();element.setRgbColor(newRgbColor(255,255,255));myLayout.setBackground(element);//创建一个文本Texttext=newText(this);text.setText("Hithere");text.setWidth(MATCH_PARENT);text.setTextSize(100);text.setTextColor(Color.BLACK);//设置文本的布局DependentLayout.LayoutConfigtextConfig=newDependentLayout.LayoutConfig(MATCH_CONTENT,MATCH_CONTENT);textConfig.addRule(DependentLayout.LayoutConfig.CENTER_IN_PARENT);text.setLayoutConfig(textConfig);myLayout.addComponent(text);super.setUIContent(myLayout);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论