OpenHarmony实战开发-减小应用包大小。

简介

减小应用包大小是提升应用下载、安装体验的重要方式之一。通过压缩、精简或者复用应用中的代码或资源,可以有效降低应用的大小,提升应用下载和安装速度,减少系统空间占用。

开发者可以参考下面三种方法减小应用包大小:

  • 配置so压缩选项,通过压缩so库来减小应用包大小。
  • 应用存在多包(HAP、HSP)的场景时,可以使用HSP(Harmony SharedPackage)动态共享包在应用的多个包(HAP、HSP)之间共享代码和资源,消除使用HAR(HarmonyArchive)静态共享包造成的多包(HAP、HSP)间代码和资源的重复拷贝,从而减小应用包大小。
  • 使用扫描工具扫描分析App、HAP、HSP包,根据输出的检测报告,采取相应措施优化应用。

减小应用包大小的方法

配置so压缩选项

当前DevEco Studio默认打包应用时不压缩so库文件,配置so压缩选项后,DevEco Studio会将so库文件以压缩形式打包到包中,从而减小应用包大小。

配置方法

修改应用模块配置文件module.json5中的compressNativeLibs字段,将值配置为true,重新编译、打包应用。

c 复制代码
{
  "module": { 
    // ...
    "compressNativeLibs": true // 标识libs库以压缩存储方式打包
  }
}

so压缩效果

以DevEco Studio中C++默认库文件为例,压缩前后的文件大小对比如下:

多包场景下使用HSP共享代码和资源

当前系统提供了两种共享包,HAR(Harmony Archive)静态共享包和HSP(Harmony Shared Package)动态共享包。

HAR与HSP都是为了实现代码和资源的共享,都可以包含代码、C++库、资源和配置文件,最大的不同之处在于:HAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝;而HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。

在多包场景下,如果应用的多个HAP或HSP包使用HAR包实现代码和资源的共享,那么打包后的每个HAP或HSP包中都会存在一份共享HAR包的拷贝,导致App包中存在冗余代码和资源。如下图示例,应用模块HAP1和HAP2/HSP1都引用了HAR2和HAR3,打包后,App包中HAR2和HAR3存在多份重复拷贝,体积较大。

这种场景下,推荐开发者使用HSP代替HAR实现代码和资源共享。如下图示例,使用HSP2对原应用进行升级改造,打包后,App包中HAR2和HAR3只存在一份拷贝,HAR2、HAR3总大小大于HSP(11k)时,可以减小应用包大小。

使用扫描工具分析应用包

扫描工具可用于分析检测应用包,根据不同的参数设定,扫描指定路径的App、HAP、HSP包内容并输出检测结果报告,为开发者优化包结构或排查问题提供数据支撑。目前扫描工具支持以下几种分析统计:

  • 扫描重复文件。
  • 扫描超出指定大小的文件。
  • 统计分析各类型文件的总大小和占比。

根据扫描结果按照如下方式优化应用

  1. 重复文件
  2. 同一包内有重复资源,删除重复资源。
  3. 多包(HAP、HSP)间重复资源,可以使用HSP实现资源的复用。
  4. 较大文件
  5. 确认是否为应用必需,是否可删除。
  6. JPG、PNG、GIF等文件,可以考虑压缩。
  7. 特定类型文件
  8. so文件,通过配置so压缩选项来实现压缩打包。
  9. JPG、PNG、GIF等文件,可以考虑压缩。

如果大家还没有掌握鸿蒙,现在想要在最短的时间里吃透它,我这边特意整理了《鸿蒙语法ArkTS、TypeScript、ArkUI等...视频教程》以及《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

鸿蒙语法ArkTS、TypeScript、ArkUI等...视频教程:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

OpenHarmony APP开发教程步骤:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

《鸿蒙开发学习手册》:

如何快速入门:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.基本概念
2.构建第一个ArkTS应用
3.......

开发基础知识:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.......

基于ArkTS 开发:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.......

鸿蒙生态应用开发白皮书V2.0PDF:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

相关推荐
努力变厉害的小超超几秒前
ArkTS中的组件基础、状态管理、样式处理、class语法以及界面渲染
笔记·鸿蒙
sanzk6 分钟前
华为鸿蒙应用开发
华为·harmonyos
SoraLuna4 小时前
「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现
macos·ui·harmonyos
ClkLog-开源埋点用户分析6 小时前
ClkLog企业版(CDP)预售开启,更有鸿蒙SDK前来助力
华为·开源·开源软件·harmonyos
mg6686 小时前
鸿蒙系统的优势 开发 环境搭建 开发小示例
华为·harmonyos
模拟IC攻城狮6 小时前
华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)
嵌入式硬件·华为·硬件架构·芯片
lqj_本人6 小时前
鸿蒙next选择 Flutter 开发跨平台应用的原因
flutter·华为·harmonyos
lqj_本人6 小时前
使用 Flutter 绘制一个棋盘
harmonyos
TangKenny6 小时前
计算网络信号
java·算法·华为
23zhgjx-NanKon7 小时前
华为eNSP:QinQ
网络·安全·华为