「Mac畅玩鸿蒙与硬件8」鸿蒙开发环境配置篇8 - 应用依赖与资源管理

本篇将介绍如何在 HarmonyOS 项目中高效管理资源文件和依赖,以确保代码结构清晰并提升应用性能。资源管理涉及图片、字符串、多语言文件等,通过优化文件加载和依赖管理,可以显著提升项目的加载速度和运行效率。

关键词
  • 资源管理
  • 应用依赖优化
  • 屏幕适配
  • 多语言支持
  • 增量编译
  • 文件压缩

一、资源文件管理

在 HarmonyOS 项目中,资源文件通常存放在 resources/base 目录。根据资源的用途,可以将图片、音频等资源文件直接放入该目录,并通过清晰的命名方式便于区分用途。例如,将界面图片命名为 ui_logo.png,提示音频命名为 alert_sound.mp3,便于管理和后期维护。

1.1 多语言支持

HarmonyOS 支持通过多语言文件实现语言适配,以满足不同地区和语言的用户需求。系统会根据用户设备的语言设置自动加载相应语言的文件,示例路径如下:

  • 默认语言src/main/resources/base/element/string.json
  • 英文(美国)src/main/resources/en_US/element/string.json
  • 中文(中国)src/main/resources/zh_CN/element/string.json
1.2 资源引用示例

在代码中,可以通过 $r$rawfile 引用资源文件,以简化资源的调用方式:

  • 图片资源

    • 使用 $r 引用资源目录中的图片:

      Image($r('app.media.startIcon'))
      

      其中,app.media.startIcon 指向的是 resources/base/media 目录下的 startIcon.png

    • 使用 $rawfile 引用原始文件:

      Image($rawfile('startIcon.png'))
      

      此方式直接引用文件名,适用于未打包的原始文件引用。

  • 字符串资源

    • 使用 $r 引用字符串资源:
      Text($r('app.string.app_name'))
      
      这里 app.string.app_name 指的是 string.json 文件中定义的字符串键 app_name。系统会根据用户设备的语言环境自动加载对应语言的字符串内容。

二、资源优化方法

优化资源文件可以减少应用体积并提升加载速度。以下是几种常见的优化方法:

2.1 启用增量编译

增量编译通过缓存中间文件缩短编译时间,尤其适用于开发过程中频繁改动的场景。可以在 hvigor 工具中配置启用增量编译。

2.2 压缩资源文件
  • 图片压缩:使用 TinyPNG 或 Photoshop 等工具对 PNG、JPEG 图片进行无损压缩,以减少文件大小。
  • 音频压缩:使用 Audacity 等工具压缩音频文件,选择合适的音频格式(如 OGG 或 AAC),进一步减小文件体积。
2.3 启用矢量图形

在合适的场景下,使用矢量图形(如 SVG)代替位图,避免分辨率差异导致的图片模糊。矢量图的体积较小、适配性强,适合多种分辨率设备。


三、定期清理未使用资源与依赖

开发过程中可能产生未使用的资源和冗余依赖,建议定期手动检查和清理,以避免应用体积增大并优化项目性能。


四、应用依赖管理

HarmonyOS 项目通常依赖内部库和第三方库。合理管理依赖不仅能简化项目结构,还能减少潜在的冲突问题。

4.1 版本管理与一致性
  • 指定依赖版本:在添加依赖库时指定版本号,确保不同环境下一致,避免不兼容问题。
  • 升级依赖库:及时关注第三方库的更新,避免使用已过时的库,降低漏洞风险。
4.2 本地与远程依赖

开发阶段优先使用本地缓存依赖以加快构建速度,项目发布阶段则使用远程依赖以确保使用最新版本。


小结

本篇内容讲解了 HarmonyOS 项目中资源和依赖的管理优化方法。通过合理的资源管理和依赖控制,可以有效提升应用的加载速度和运行效率,为用户提供更流畅的体验。


下一篇预告

下一篇将介绍如何在 HarmonyOS 项目中使用 Git 进行版本控制。通过 Git 的分支管理、合并冲突处理等功能,开发者可以更好地协作并管理项目的历史版本,确保代码变更安全可靠。


上一篇「Mac畅玩鸿蒙与硬件7」鸿蒙开发环境配置篇7 - 使用命令行工具和本地模拟器管理项目
下一篇「Mac畅玩鸿蒙与硬件9」鸿蒙开发环境配置篇9 - 使用 Git 进行版本控制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/58613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

15分钟学 Go 小项目:Web API

Web API 在现代应用开发中,Web API(应用程序编程接口)是实现系统间交互的关键。通过理解HTTP协议、路由、RESTful设计原则,我们可以设计出高效、可维护的API。接下来,我们将深入探讨这些主题,并以一个简单…

Android SDK Version 33: ActivityCompat.requestPermissions不弹框

文章目录 异常现象原因 异常现象 使用Android进行权限判断时,ActivityCompat.requestPermissions不弹框。API为33 原因 从API33开始,为了优化用户体验,只有App全部加载完成并可用后,才会弹授权框。也就说,不能在onC…

软件评测第二期

《遥远的救世主》,自己得想办法,不断地救赎自己了,同时开源竞争,开源竞争(自己没有办法完全掌握技术的时候就开源掉,培养出更多的技术依赖,让更多人完善你的技术,那么这不就是在砸罐…

查找算法简记

一、简单查找(顺序查找) 最基本的查找,相当于遍历,从头到尾一个一个找。 二、二分查找 1、简述 二分查找的输入是一个有序的元素列表。 如果要查找的元素包含在列表中,二分查找返回其位置; 否则返回null。…

开发流程初学者指南——需求分析

目录 从零开始理解需求分析什么是需求分析?需求分析的目标需求分析的基本原则需求分析的各个阶段需求分析的常用方法和工具编写需求文档总结 从零开始理解需求分析 需求分析是软件开发过程中不可或缺的一环,它帮助我们明确用户的需求,确保最…

大模型,多模态大模型面试【LoRA,分类,动静态数据类型,DDPM,ControlNet,IP-Adapter, Stable Diffusion】

大模型,多模态大模型面试【LoRA,分类,动静态数据类型,DDPM,ControlNet,IP-Adapter, Stable Diffusion】 问题一:LoRA是用在节省资源的场景下,那么LoRA具体是节省了内存带宽还是显存呢…

数据结构之链式结构二叉树的实现(进阶版)

本篇文章主要讲解链式二叉树的层序遍历以及判断是否为一棵完全二叉树 二者将会用到之前学过的队列知识,是将队列和二叉树的整合 一、如何将之前已经写好的文件加入当前的编译界面 如图所示,打开我们需要加入文件所在的文件夹,找到我们要加…

StructRAG简介

StructRAG是一种新型的框架,旨在提升大型语言模型(LLMs)在知识密集型推理任务中的性能。它通过推理时的混合信息结构化机制,根据任务需求以最合适的格式构建和利用结构化知识。 以下是StructRAG的核心组成部分和工作流程&#xff…

Windows Server NTFS磁盘变RAM的处理过程

问题描述 客户服务器的磁盘数据爆满,需要将磁盘进行扩容,因为是虚拟机所以先在虚拟化平台上将原来的磁盘空间改大,再进入系统,在磁盘管理器上将需要扩容的磁盘进行扩展。扩展完后系统报文件系统有问题,扩容的磁盘容量…

LLaMA Factory 核心原理讲解

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…

如何让反向代购客户享受丝滑般的下单之旅?

想象一下,一键下单,轻松购物,仿佛穿越时空的魔法,让中国好货瞬间触手可及!从made in china的美妆神器到潮流服饰,从尖端数码产品到温馨家居用品,从令人垂涎的美食到贴心的母婴用品,这…

解决Selenium的3大痛点!这款工具让你的自动化测试效率翻倍!

相信使用过Selenium WebDriver的小伙伴对其最大的诟病有3点,一是浏览器的driver和版本对应问题,第二是Selenium的执行速度,最后一个槽点是对页面元素文本值的断言非常不便。 在我们长期维护大量UI自动化测试用例的过程中这些痛点会让我们耗费…

UI设计公司—兰亭妙微—提供优秀的医疗行业UI设计

医疗行业界面解决方案以医患使用者为中心,遵循行业使用习惯和表达方式,优化使用流程、设计简洁、人性化的操作界面,采用插画、三维动画、微动效的创作方法,让用户感受到愉悦易用美观的使用体验。蓝蓝设计与知名企业合作项目有&…

5G基础知识

什么是 FDD 频分双工(Frequency Division Duplexing),理解起来很简单,就是把上行和下行业务隔离在两个频段,互不干扰。 而 TDD 时分双工(Time-Division Duplexing),是指上行下业务完…

使用 Elastic Observability 监控 dbt 管道

作者:来自 Elastic Almudena Sanz Oliv•Tamara Dancheva 了解如何使用 Elastic 设置 dbt 监控系统,该系统可主动发出数据处理成本峰值、每张表的行数异常以及数据质量测试失败的警报。 在 Elastic 可观察性组织内的数据分析团队中,我们使用 …

网站攻击,XSS攻击的类型

XSS(跨站脚本)攻击是一种网络安全攻击方式,攻击者通过在网站页面中注入恶意脚本,使脚本在其他用户的浏览器中执行,从而窃取用户信息、篡改页面内容或操控用户账户。这类攻击通常利用网站对输入数据的过滤不严格&#x…

数据库 示例解析

描述: 找出顾客订单中所花运费比他所下订单平均运费的两倍都还贵的订单号,列出cOrderNo。运费属性名为mShippingCost,顾客号属性为cCustomerID。 代码示例: SELECT o.cOrderNo FROM orders o WHERE o.mShippingCost > (SELE…

2023年信息安全工程师摸底测试卷

目录 1.密码算法 2.等级保护 3.密码学 4.安全评估 5.网络安全控制技术 6.恶意代码 7.身份认证 8.资产管理 9.密码分类 10.被动攻击 11.商用密码服务​编辑 12.超文本传输协议 13.数字水印技术 14.信息系统安全设计 15.重放攻击 16.信息资产保护 17.身份认证 …

大数据治理:确保数据价值与合规性的战略框架

大数据治理:确保数据价值与合规性的战略框架 引言 在信息技术迅猛发展的今天,数据已成为推动企业增长和创新的关键资源。根据统计,全球数据的生成量在每两年内翻一番,预计到2025年,全球数据总量将达到175ZB&#xff…

linux驱动—在自己的总线目录下创建属性文件

在总线目录下创建属性文件以扩展其功能。 通过创建属性文件, 我们可以为总线添加额外的信息和控制选项, 以便与设备和驱动进行交互。 简单就是,属性文件,可以完成用户空间和内核空间的数据交互, 比如在应用层快速修改g…