当前位置: 首页 > 科技观察

HarmonyOS应用开发入门:在第一个例子中了解更多细节

时间:2023-03-12 16:28:46 科技观察

更多信息请访问:与华为共建的Harmonyos技术社区https://harmonyos.51cto.com/#zz4.1开发完成后首先是鸿蒙应用,我们先来看看完整的鸿蒙应用打包发布后应该是什么样子:一个完整的打包应用结构如下图所示。这里我们先来了解一下结构。怎么包很简单只要前提是签收!一、HAP分类HAP分为入口和特征两类模块:1)入口:应用的主要模块。在一个APP中,同一种设备类型必须有一个且只能有一个入门级HAP,可以独立安装运行。2)feature:应用的动态特征模块。APP可能包含也可能不包含一个或多个功能类型的HAP。2.HAP的组成HAP由代码(Ability)、第三方库、资源、应用配置文件组成。只有包含Ability的HAP才能独立运行。1)AbilityAbility是对应用程序能力的抽象,一个应用程序可以包含一个或多个Abilities。能力分为FA(FeatureAbility)和PA(ParticleAbility)两种。FA/PA是应用的基本单元,可以实现特定的业务功能。FA有UI界面,PA没有UI界面。2)库文件库文件是应用程序依赖的第三方代码形式,存放在libs目录下。3)资源文件应用资源文件(字符串、图片、音频等)存放在resources目录下4)配置文件配置文件(config.json)是应用的Ability信息,用于声明Ability应用程序的权限以及应用程序的要求权限等信息3.pack.info文件描述了应用程序软件包中各个HAP的属性,由IDE编译生成,应用程序市场根据其进行解包和HAP分类存储在这个文件上。HAP的具体属性包括:1)delivery-with-install:表示HAP是否支持随应用安装。2)名称:HAP文件名。3)module-type:模块类型,entry或feature。4)device-type:表示支持HAP运行的设备类型。4.2config.json详情1、应用的每个HAP的根目录下都有一个“config.json”配置文件,主要包括以下三个方面:1)应用的全局配置信息,包括应用包名称、生产厂家、版本号等基本信息。2)应用于特定设备的配置信息。3)HAP包的配置信息,包括每个Ability必须定义的基本属性(如包名、类名、类型、Ability提供的能力),以及应用需要的权限访问系统或应用程序的其他受保护部分。2、config.json配置文件的内部结构应用配置文件“config.json”由“app”、“deviceConfig”和“module”三部分组成,缺一不可。3、“config.json”文件约定配置文件“config.json”采用JSON文件格式,由属性和值两部分组成:1)属性:属性不分先后出现,每个属性只能出现一次最多。2)Value:每个属性的值是JSON的一种基本数据类型(value、string、Boolean、array、object或null类型)。学习建议:根据官方文档自己制作一个思维导图,在制作的过程中熟悉一下,用到的时候查询一下。我在学习的时候做到了。附件在后面。你需要一个叫做MindMaster的思维导图工具来打开它。在完成思维导图并系统熟悉该配置项后,在后面的练习中,注意每个配置项的含义,加深印象。练习一:识别app部分,在第一个例子的app配置后注释描述:"app":{//表示应用的全局配置信息,像这样,自己动手..."bundleName":"com.example.myapplication","vendor":"example","version":{"code":1,"name":"1.0"},"apiVersion":{"compatible":3,"target":3}},Exercise2:再读一遍deviceConfig部分,注释掉后面的描述:"deviceConfig":{//表示应用于具体设备的配置信息。"default":{"process":"com.huawei.hiworld.example","directLaunch":false,"supportBackup":false,"network":{"usesCleartext":true,"securityConfig":{"domainSettings":{"cleartextPermitted":true,"domains":[{"subDomains":true,"name":"example.ohos.com"}]}}}}}练习3:识别模块部分,并编写描述注释在后面:"module":{//表示HAP包的配置信息。该标签下的配置只对当前的HAP包生效。"package":"com.example.myapplication","name":".MyApplication","re??qCapabilities":["video_support"],"deviceType":["tv"],"distro":{"deliveryWithInstall":真,“模块名称”:“条目”,“模块类型”:“条目”},“能力”:[{“技能”:[{“实体”:[“entity.system.home”],“动作”:["action.system.home"]}],"orientation":"landscape","formEnabled":false,"name":"com.example.myapplication.MainAbility","icon":"$media:icon","description":"$string:mainability_description","label":"MyApplication","type":"page","launchType":"standard"},{"orientation":"landscape","formEnabled":false,“姓名”:"com.example.myapplication.Secondbility","icon":"$media:icon","description":"$string:secondbility_description","label":"entry","type":"page","launchType":"standard"}]}4.3详细了解资源目录1.资源文件知识点应用的资源文件都在resources目录下,resources子目录分为两类:具体的知识点,和我们做的一样创建思维导图,见附录2。资源文件的使用基目录和限定目录中的资源文件:通过指定资源类型(type)和资源名称(name)来引用。1)Java文件引用的资源文件格式:(1)普通资源:ResourceTable.type_name。(2)对于系统资源,使用:ohos.global.systemres.ResourceTable.type_name。(3)目前支持的系统资源文件:①ic_app:HarmonyOS应用默认图标,类型为media。②request_location_reminder_title:表示“请求使用设备定位功能”的提示标题,类型为字符串。③request_location_reminder_content:表示“请求使用设备定位功能”的提示内容,类型为字符串。示例1:在Java文件中,引用系统资源。ResourceManagerrsManager=this.getResourceManager();try{Stringstr=rsManager.getElement(ohos.global.systemres.ResourceTable.String_request_location_reminder_title).getString();Texttext=(Text)findComponentById(ResourceTable.Id_text);text.setText(str);}catch(Exceptione){terminateAbility();}示例2:在Java文件中,引用string.json文件中类型为“String”,名称为“app_name”的资源。string.json示例:{"color":[{"name":"red","value":"#ff0000"},{"name":"red_ref","value":"$color:red"}]}ohos.global.resource.ResourceManagerresManager=getResourceManager();intcolor=resManager.getElement(ResourceTable.Color_red).getColor();示例4:在Java文件中,获取配置文件中的文件内容。Resourceresource=null;try{Texttext=(Text)findComponentById(ResourceTable.Id_text);resource=getResourceManager().getResource(ResourceTable.Profile_test1);InputStreamReaderinputStreamReader=newInputStreamReader(resource,"utf-8");BufferedReaderbufferedReader=newBufferedReader(输入)Stream;StringlineTxt="";while((lineTxt=bufferedReader.readLine())!=null){text.append(","+lineText);}}catch(Exceptione){}2)XML文件参考资源文件格式:(1)公共资源,$type:name(2)系统资源,使用:$ohos:type:name。在XML文件中,引用string.json文件中类型为“String”、名称为“app_name”的资源。示例如下:9.通过指定文件路径和文件名来引用rawfile目录下的资源文件。在Java文件中,引用路径为“resources/rawfile/”且名称为“ttt.txt”的资源文件。示例如下:Resourceresource=null;try{Texttext=(Text)findComponentById(ResourceTable.Id_text);resource=getResourceManager().getRawFileEntry("resources/rawfile/ttt.txt").openRawFile();InputStreamReaderinputStreamReader=newInputStreamReader(资源,"utf-8");BufferedReaderbufferedReader=newBufferedReader(inputStreamReader);StringlineTxt="";while((lineT=bufferedReader.readLine())!=null){text.append(","+lineTxt);}}catch(Exceptione){}视频课程配套文章《鸿蒙手机应用开发入门》https://edu.51cto.com/course/26133.html?版权归作者和HarmonyOS技术社区共同所有。如需转载,请注明出处,否则将追究法律责任。更多信息请访问:与华为官方共建鸿蒙OS技术社区/harmonyos.51cto.com/#zz