不同的hap使用相同的so,在打最终包的时候可以进行合并
不同的hap使用相同的so,在打最终包的时候可以进行合并吗?包体积因为相同so的问题 减少包体积
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
多个相同BundleName的hap包,使用preference数据如何共享
2121浏览 • 1回复 待解决
由so构建的HAR包,在import的时候必须使用so库的名字吗?
732浏览 • 1回复 待解决
如何在编译打包的时候在hap包中仅编译指定的so库
378浏览 • 1回复 待解决
是否存在打app包的工具?
793浏览 • 1回复 待解决
项目c++代码依赖多种so库,如何在编译打包的时候在hap包中仅编译指定的so库
1136浏览 • 1回复 待解决
HarmonyOS 在打包阶段的HAP和HSP的签名问题
551浏览 • 1回复 待解决
希望在打包的 hap 中只带 arm64_v8a 的 .so 库,不知道在何种方法可以达到类似的效果?
65浏览 • 1回复 待解决
上架分发的时候是HAP包还是APP?
541浏览 • 1回复 待解决
如何在DevEco studio中设置不同的构建配置,以生成针对不同设备的hap包?
482浏览 • 1回复 待解决
HarmonyOS 能否为构建app包hap包以及run配置不同的签名?
219浏览 • 1回复 待解决
是否可以引用工程外的HAP包
1816浏览 • 1回复 待解决
HarmonyOS 不同的soundpool加载不同的声音,播放时只要soundid相同播放的声音也相同怎么解决?
434浏览 • 1回复 待解决
有没有配置可以是打出来的hap包只包含一种平台架构的so库
331浏览 • 0回复 待解决
应用中不同模块的UIAbility名称能否相同
1834浏览 • 1回复 待解决
多hap情况下,某个hap包JS崩溃堆栈如何关联对应hap的sourceMap进行还原
1522浏览 • 1回复 待解决
hap包-如何设置打包的时候仅打入包含arm64-v8a abi的单架构包?
147浏览 • 1回复 待解决
如何将相同的属性在各个页面进行使用啊
1446浏览 • 1回复 待解决
HarmonyOS 导入不同的包的区别
172浏览 • 1回复 待解决
har包集成怎么配置so的架构
374浏览 • 1回复 待解决
如何统一过滤hap中的so类型?
145浏览 • 1回复 待解决
HarmonyOS Navigation跳转实现,无法正常关闭具有相同实现的不同页面
537浏览 • 1回复 待解决
如何获取当前HAP的包名
2361浏览 • 1回复 待解决
hap包的用户首选项的持久化数据,在hap包升级时会被清理吗
1690浏览 • 1回复 待解决
.app包的问题和har包,hap包的问题,他们之间的联系和区别?
377浏览 • 1回复 待解决
如何查询已安装的Hap包的路径
2164浏览 • 1回复 待解决
减小应用包大小是提升应用下载、安装体验的重要方式之一。通过压缩、精简或者复用应用中的代码或资源,可以有效降低应用的大小,提升应用下载和安装速度,减少系统空间占用。
开发者可以参考下面三种方法减小应用包大小:
配置so压缩选项,通过压缩so库来减小应用包大小。应用存在多包(HAP、HSP)的场景时,可以使用HSP(Harmony Shared Package)动态共享包在应用的多个包(HAP、HSP)之间共享代码和资源,消除使用HAR(Harmony Archive)静态共享包造成的多包(HAP、HSP)间代码和资源的重复拷贝,从而减小应用包大小。使用扫描工具扫描分析App、HAP、HSP包,根据输出的检测报告,采取相应措施优化应用。减小应用包大小的方法配置so压缩选项当前DevEco Studio默认打包应用时不压缩so库文件,配置so压缩选项后,DevEco Studio会将so库文件以压缩形式打包到包中,从而减小应用包大小。
配置方法https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/module-configuration-file.md
修改应用模块配置文件module.json5中的compressNativeLibs字段,将值配置为true,重新编译、打包应用。{“module”: {// …“compressNativeLibs”: true // 标识libs库以压缩存储方式打包}}
so压缩效果
以DevEco Studio中C++默认库文件为例,压缩前后的文件大小对比如下:
文件名 原始大小 压缩后大小 压缩率armeabi-v7a/libc++_shared.so 1,108k 386k 34%
多包场景下使用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)时,可以减小应用包大小。
https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/tools/app-check-tool.md
使用扫描工具分析应用包扫描工具可用于分析检测应用包,根据不同的参数设定,扫描指定路径的App、HAP、HSP包内容并输出检测结果报告,为开发者优化包结构或排查问题提供数据支撑。目前扫描工具支持以下几种分析统计:
扫描重复文件。扫描超出指定大小的文件。统计分析各类型文件的总大小和占比。根据扫描结果按照如下方式优化应用
重复文件
同一包内有重复资源,删除重复资源。多包(HAP、HSP)间重复资源,可以使用HSP实现资源的复用。较大文件
确认是否为应用必需,是否可删除。JPG、PNG、GIF等文件,可以考虑压缩。特定类型文件
so文件,通过配置so压缩选项来实现压缩打包。JPG、PNG、GIF等文件,可以考虑压缩。