原文:https://mp.weixin.qq.com/s/qPvHZNZuLccAsviBcXtPWw,点击链接查看更多技术内容。

动态共享包(HSP)开发是DevEco Studio 3.1 Release版本带来的新特性,基于新的编译方式,提供运行态共享能力,可以有效加快编译速度,减小HAP包的体积。

一、动态共享包引入

以往使用的JSBundle化编译方案,因每个入口page都会打包成一个bundle包,且不支持运行态共享,当修改单个模块文件,需要整包重新编译打包,会导致编译消耗的时间变长,也会导致HAP包的体积变大,从而影响了HarmonyOS应用开发效率和开发者体验。

Bundle化打包过程示意图

为了提升开发效率和开发者体验,DevEco Studio提供模块化编译方式,模块之间相互独立编译,可以加快编译速度。同时,为了减少包体积,支持将多个模块通用的能力和资源提取,作为动态共享包(HSP)供其他模块或者应用使用。

二、什么是模块化编译

模块之间相互独立编译,编译速度更快。

应用内模块化编译方式使用原生ES Module规则构建源码,解决了Bundle编译打包模式引入的问题,进而让工程中的资源文件,以独立模块的形式进行编译。当修改单个模块代码时,无需整包编译构建,编译的代码量会大大减少,从而加快增量编译速度,让编译更快。

模块独立编译示意图

三、如何开启模块化编译

API 9及以上版本的Stage工程中会默认开启模块化编译方式,开发者无需单独配置,编辑好代码后,直接点击Build Hap(s),就会以模块化的编译方式来进行打包。

新建项目,选择Stage示例图

3.1 应用内共享HSP开发,让包体积更小

基于Stage模型和模块化编译方式,如何进行动态共享包(HSP)的开发呢?一起来看以下介绍:

3.1.1 提供动态共享包模板,轻松创建动态共享包HSP

HSP是可以用来共享资源和代码的动态共享包,为了方便开发者使用,DevEco Studio提供Shared Library动态共享包模板,开发者可以直接使用该模板,轻松创建HSP。开发者选中工程目录中任意文件,右键选择New > Module,打开Shared Library模板。

Shared Library模板示意图

在HSP对应模块(如Shared_Library)中完成通用能力代码和资源的开发后,选中菜单栏的Build > Make Module‘Shared_Library’进行编译构建,即可快速生成HSP。

编译构建示例图

生成HSP

3.1.2 应用内快速引用HSP

开发者可通过字段配置,将HSP共享给应用内其他模块使用,并且支持在运行态共享HSP。在使用方entry/feature模块的oh-package.json5文件中添加HSP模块来引用,以引用名为Shared_Library的HSP为例:

HSP引用配置

在模块化编译方式的加持下,使用方的模块经过编译打包后,HAP包的体积将会明显变小,开发者就可将HAP包快速安装在设备上来调试运行,提升开发效率。

与此同时,DevEco Studio支持HSP预览,ArkTS/C++调用HSP的断点调试等功能,您可以进入HarmonyOS官网资料了解更多HSP的内容。

DevEco Studio 3.1 Release | 动态共享包开发,编译更快,包更小的更多相关文章

  1. SOLOv 2:实例分割(动态、更快、更强)

    SOLOv 2:实例分割(动态.更快.更强) SOLOv2:  Dynamic, Faster and Stronger 论文链接: https://arxiv.org/pdf/2003.10152. ...

  2. linpe包-让发送和接收数据分析更快和更容易

    1.简介 通常在R中从来进行分析和展现的数据都是以基本的格式保存的,如.csv或者.Rdata,然后使用.Rmd文件来进行分析的呈现.通过这个方式,分析师不仅可以呈现他们的统计分析的结果,还可以直接生 ...

  3. Android Studio 动态调试 apk 反编译出的 smali 代码

    在信安大赛的准备过程中,主要通过 Android Studio 动态调试 apk 反编译出来的 smali 代码的方式来对我们分析的执行流程进行验证.该技巧的主要流程在此记录.以下过程使用 Andro ...

  4. Android Studio系列教程五--Gradle命令详解与导入第三方包

    Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...

  5. Delphi中的动态包,有详细建立包的步骤(答案很简单:因为包的功能强大)

    为什么要使用包? 答案很简单:因为包的功能强大.设计期包(design-time package)简化了自定义组件的发布和安装:而运行期包(run-time package)则更是给传统的程序设计注入 ...

  6. 查收新年礼物丨DevEco Studio 3.0 Beta2发布,20个新变化详解

    HUAWEI DevEco Studio是开发HarmonyOS应用和原子化服务的一站式集成开发环境(IDE),为开发者提供工程模板创建.开发.编译.调试.发布等功能. 2021年12月31日,新版本 ...

  7. 【转载】Linux下动态共享库加载时的搜索路径详解

    转载自:http://www.eefocus.com/article/09-04/71617s.html 对动态库的实际应用还不太熟悉的读者可能曾经遇到过类似“error while loading ...

  8. Linux下动态共享库加载及使用详解【转】

    原文地址:http://blog.chinaunix.net/uid-29025972-id-3855500.html 对动态库的实际应用还不太熟悉的读者可能曾经遇到过类似“error while l ...

  9. 动态共享库(so)开发精悍教程

    动态共享库(so)开发精悍教程 翻译并根据实际情况进行了小小修改,仅关注Linux下动态共享库(Dynamic shared library .so)的开发. 1 简单的so实例 源文件 //test ...

  10. Linux动态共享库

    Linux操作系统上面的动态共享库大致分为三类:   一.操作系统级别的共享库和基础的系统工具库 libc.so, libz.so, libpthread.so等等,这些系统库会被放在/lib和/us ...

随机推荐

  1. 在CentOS上编译最新版linux内核(linux-5.19.9)

    从官网下载最新版的Linux内核源码,本教程使用linux-5.19.9进行编译. 实验环境(CentOS-Stream-8) $ uname -a Linux localhost.localdoma ...

  2. 在昇腾平台上对TensorFlow网络进行性能调优

    摘要:本文就带大家了解在昇腾平台上对TensorFlow训练网络进行性能调优的常用手段. 本文分享自华为云社区<在昇腾平台上对TensorFlow网络进行性能调优>,作者:昇腾CANN . ...

  3. day07-SpringBoot接收参数相关注解

    SpringBoot接收参数相关注解 1.基本介绍 SpringBoot接收客户端提交数据/参数会使用到相关注解 详解@PathVariable.@RequestHeader.@ModelAttrib ...

  4. java注解与反射--3

    java注解与反射--3 类的加载与ClassLoader java内存 堆 存放new的对象和数组 可以被所有的线程共享,不会存放别的对象引用 栈 存放基本变量类型 引用对象的变量 方法区 可以被所 ...

  5. 1 - Windows 10 - Python 类的常用高级系统函数(方法)通识

    @ 目录 一.系统函数__init__() 初始化类函数 二.系统函数__call__() 调用对象函数 三.系统函数__dict__类属性查询函数 四.系统函数__str__()描述类信息函数 五. ...

  6. 【LeetCode动态规划#02】图解不同路径I + II(首次涉及二维dp数组,)

    不同路径 力扣题目链接(opens new window) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 "Start" ). 机器人每次只能向下或者向右移 ...

  7. 迁移学习(SPI)《Semi-Supervised Domain Adaptation by Similarity based Pseudo-label Injection》

    论文信息 论文标题:Semi-Supervised Domain Adaptation by Similarity based Pseudo-label Injection论文作者:Abhay Raw ...

  8. java 回行矩阵的打印

    n=3 n=4 1   2   3 1    2 3   4 8   9   4 12 13      14     5 7   6   5 11 16      15     6 10 9      ...

  9. nginx 极简教程

    什么是 Nginx? Nginx (engine x) 是一款轻量级的 Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 什么是反向代理? 反向代理(Reverse Pro ...

  10. [git] 规范Commit格式

    规范Commit格式 Jenkins根据对比当次构建和上次构建的Commit信息来生成ChangeLog,但因为我们目前的提交不够规范,经常有类似"#","update& ...