【HarmonyOS Next】共享HSP和应用内HSP,useNormalizedOHMUrl详解一、useNormalizedOHMUrl是什么? 使用集成态HSP和字节码HAR需使用标准化的OHMUrl格式。 存在bundleName和签名的一致性要求,而且在调试阶段需要先安装HSP包,导致多模块集成开发存在很多集成的问题。 例如笔者开发了一个日志HSP,需要给其他公司使用,不可能别的公司应用包名和我的日志HSP包名一致吧?但是前期HSP是要求bundleName和签名的一致的。 官方为了解决该问题,提供了集成态HSP的方案。集成态HSP是应用内HSP的一种中间编译产物,目的就是解决使用方的bundleName和签名之间的强耦合问题。
项目中,建立一个HAR模块的示例如下: HSP HSP(Harmony Shared Package)是动态共享包,可以包含代码、C++库、资源和配置文件,通过HSP可以实现应用内的代码和资源的共享。 HSP往往是和 HAP做为对比区分了解。 HSP 是动态共享包 HAR 是静态共享包 项目中,如果其他模块引入了 HAR,那么其他模块中都会存在 一份HAR的拷贝,此时会存在资源冗余。 而HSP则是通过多个模块共享一个引用,资源空间得到利用。 举个例子 项目是个多模块结构,多处地方都存在 显示用户头像+用户姓名等需求。此时可以考虑采用 HSP 实现该功能。 - 多包(HAP/HSP)引用相同的HAR时,会造成多包间代码和资源的重复拷贝,从而导致应用包膨大。 Shared Library HSP 动态共享包,运行时复用。 - 当前仅支持应用内共享。 - 当多包(HAP/HSP)同时引用同一个共享包时,采用HSP替代HAR,可以避免HAR造成的多包间代码和资源的重复拷贝,从而减小应用包大小。
应用间HSP用于不同应用间的代码、资源共享。 应用间HSP的宿主应用是一种特殊状态的应用,只能由一个HSP组成,不会独立运行在设备上,而是被普通应用模块的依赖项引用。 应用间HSP的代码会运行在开发者应用的进程中,调用相关代码时,需要做好异常捕获与容错处理,防止由于应用间HSP功能异常导致的稳定性问题。2. 一个应用可以同时依赖多个应用间HSP。3. 的bundle名称,moduleName为应用间HSP的模块名称,versionCode为应用间HSP的版本号。 随应用发布,即用户在应用市场下载应用时,如果应用依赖了一个或者多个应用间HSP,同时设备上没有安装这个其依赖的应用间HSP时,应用市场会为用户同时下载普通应用以及其依赖的应用间HSP。 应用间HSP的调试方式开发者本地调试应用间HSP相关的功能时,可能并不具备上述分发的条件,此时可以通过bm相关指令本地完成应用间HSP的分发,主要步骤如下:1. 获取到应用间HSP的安装包。2.
【HarmonyOS Next】鸿蒙中App、HAP、HAR、HSP概念详解(图1-1)一、鸿蒙中App、HAP、HAR、HSP是什么? 说人话,HAR可以理解为SDK依赖,与HSP的区别在加载机制上。多包(HAP/HSP)引用相同的HAR时,会造成多包间代码和资源的重复拷贝,从而导致应用包膨大。 并且如果我的HAR包并不会在很多HAP中引用,那做成HAR包的加载效率是比做成HSP包高很多。 (4)HSP(Harmony Shared Package) 是动态共享包,分为应用内HSP和集成态HSP。 模块中的一个页面,如何实现:因为HSP中不能创建 UIAbility,那主模块entry下跳转到HSP模块中的页面需求实现如下:import { router } from '@kit.ArkUI';
HSP 概述 HSP(Harmony Shared Package)是动态共享包,可以包含代码、C++库、资源和配置文件,通过 HSP 可以实现代码和资源的共享。 使用场景 多个 HAP/HSP 共用的代码和资源放在同一个 HSP 中,可以提高代码、资源的可重用性和可维护性,同时编译打包时也只保留一份 HSP 代码和资源,能够有效控制应用包大小。 HSP 在运行时按需加载,有助于提升应用性能。 同一个组织内部的多个应用之间,可以使用集成态 HSP 实现代码和资源的共享。 约束限制 HSP 不支持在设备上单独安装/运行,需要与依赖该 HSP 的 HAP 一起安装/运行。HSP 的版本号必须与 HAP 版本号一致。 HSP 不支持在配置文件中声明UIAbility[7]组件与ExtensionAbility[8]组件。 HSP 可以依赖其他 HAR 或 HSP,但不支持循环依赖,也不支持依赖传递。
【HarmonyOS Next】鸿蒙中App、HAP、HAR、HSP概念详解**(图1-1)**一、鸿蒙中App、HAP、HAR、HSP是什么? 说人话,HAR可以理解为SDK依赖,与HSP的区别在加载机制上。多包(HAP/HSP)引用相同的HAR时,会造成多包间代码和资源的重复拷贝,从而导致应用包膨大。 **(4)HSP(Harmony Shared Package)** 是动态共享包,分为应用内HSP和集成态HSP。 模块中的一个页面,如何实现:**因为HSP中不能创建 UIAbility,那主模块entry下跳转到HSP模块中的页面需求实现如下:import { router } from '@kit.ArkUI' 二、鸿蒙中App、HAP、HAR、HSP的关系三、如何创建App、HAP、HAR、HSP**App**Build - Build Hap/APP - Build APP**HAP:**1、在工程目录上单击右键
三、HSP不支持依赖传递,也不支持循环依赖与HAR一致,HSP也不支持依赖传递和循环依赖。 不支持HSP循环依赖:例如有三个HSP,HSP-A、HSP-B和HSP-C,循环依赖指HSP-A依赖HSP-B,HSP-B依赖HSP-C,HSP-C又依赖HSP-A。不支持循环依赖会报错。 不支持HSP依赖传递:例如有三个HSP,HSP-A、HSP-B和HSP-C,依赖关系是HSP-A依赖HSP-B,HSP-B依赖HSP-C。 不支持传递依赖指HSP-A可以使用HSP-B的方法和组件,但是HSP-A不能直接使用HSP-C的方法和组件。并且HSP不支持转移依赖。 即:HAP->HSP1->HSP2->HSP3,这里的HSP2和HSP3不能转移到HAP上面。如果两个HSP相互依赖,使用对方的组件。可修改为将需要共用的组件抽离出来,然后放到一个共享包中使用。
1.hsp.type.name获取资源。其中,hsp为hsp模块名,type为资源类型,name为资源名称。 Text($r('[hsp].string.test_string')) .fontSize($r('[hsp].float.font_size')) .fontColor($r('[hsp]. Index { text: string = '[hsp].string.test_string'; fontSize: string = '[hsp].float.font_size'; fontColor: string = '[hsp].color.font_color'; image: string = '[hsp].media.string'; rawfile: string 场景三、HSP包的资源导出引用1.创建HSP,新建模块,选择shared library。2. 导出需要使用的资源导出ResManager1,以便其他模块获取到hsp中的resource资源。
集成态HSP:构建、发布过程中,不与特定的应用包名耦合;使用时,工具链支持自动将集成态HSP的包名替换成宿主应用包名。 2.1 -> 使用约束 HSP及其使用方都必须是API 10及以上版本Stage模型。 HSP及其使用方都必须使用模块化编译模式。 2.2.2 -> 编译HSP模块 说明 如果HSP未开启混淆,则后续HSP被集成使用时,将不会再对HSP包进行混淆。 打包HSP时,会同时默认打包出HAR,在模块下build目录下可以看到*.har和*.hsp。 如需在应用内共享HSP,请将HSP共享包上传至私仓,请先按以下操作编译生成*.tgz包。 1. 说明 OpenHarmony三方库中心仓仅支持HAR共享包发布,不支持HSP共享包发布。如需在应用内共享HSP,可将HSP共享包发布至私仓使用。 1.
实现真·动态下发 HSP(Harmony Shared Package):OpenHarmony 支持的动态特性包,可独立更新。 // apps/main_app/module.json5 { "dynamicFeatures": [ "health_analysis.hsp", // 健康分析引擎 "car_voice_control.hsp " // 车机语音控制 ] } 用户首次使用“健康报告”时,自动从 AppGallery 下载 health_analysis.hsp 修复车机语音 Bug,仅需更新 HSP,无需主应用审核 3.3 : - cd packages/features/health_analysis - flutter build hsp --release - agc-cli upload-hsp health_analysis.hsp 六、架构治理:让规范可执行 6.1 自动化架构检查 // tools/arch_lint/bin/check.dart void main() { final
分析应用包体积大的原因1.app-check-tool app-check-tool 应用包扫描工具,可以扫描指定路径的HAP、HSP、App包内容并输出检测结果报告,为开发者优化包结构或排查问题提供数据支撑 ,HAP包可以独立安装和运行,是应用安装的基本单位,一个应用中可以包含一个或多个HAP包HSP(Harmony Archive)动态共享库,用于实现代码和资源的共享, HSP中的代码和资源可以独立编译, HAR和HSP在APP包中的形态示意图:从上图可以看到如果应用中的某个HAR包被多个HAP/HSP引用,那么HAR包会存在多分拷贝,会存在冗余代码和资源,而使用HSP来替换HAR可以共享一份代码和资源, 如果通过扫描发现是包中的so文件较大,可以在HAP/HSP(HAR中不需要配置)模块的module.json5中配置compressNativeLibs字段为true来压缩HAP/HSP包中的so的体积 可通过在HAP/HSP(HAR中不需要配置)模块的build-profile.json5中开启strip,来移除.so文件中的符号表、debug信息,从而可以大大降低so的体积。
下面是对这三个基因的具体解读: HSP90AA1: 也被称为HSP90α(alpha),是HSP90家族中的一种主要亚型。 在细胞质中表达,参与广泛的细胞内蛋白质折叠和稳定。 HSP90AB1: 也被称为HSP90β(beta),与HSP90α共同存在于细胞质中。 在结构和功能上与HSP90α相似,但表达水平通常较低。 与HSP90AA1和HSP90AB1相比,HSP90B1在进化上更为古老,具有不同的调控机制。 总的来说,HSP90家族蛋白在细胞内发挥着关键的分子伴侣功能,对于维持蛋白质稳态和细胞功能至关重要。 ": "HSP90AA1" "HSP90AB1" "HSP90B1" housekeeper_genes <- c("ACTB", "GAPDH", "HSP90AA1", "HSP90AB1", "HSP90B1 ": "HSP90AA1" "HSP90AB1" "HSP90B1" housekeeper_genes <- c("ACTB", "GAPDH", "HSP90AA1", "HSP90AB1", "HSP90B1
应用程序包简介HAR和HSP两种共享包得主要区别共享包类型编译和运行方式发布和引用方式HARHAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝。 HSP一般随应用进行打包,当前支持应用内和集成态HSP。应用内HSP只支持应用内引用,集成态HSP支持发布到ohpm私仓和跨应用引用。 开发和编译后得文件视图发布状态的包结构 一个应用中的所有.hap与.hsp文件合在一起称为Bundle,其对应的bundleName是应用的唯一标识 当应用发布上架到应用市场时,需要将Bundle打包为一个 pack.info文件描述了App Pack中每个HAP和HSP的属性,包含APP中的bundleName和versionCode信息、以及Module中的name、type和abilities等信息。
第一篇-Hsp20家族识别 Genome-wide analysis of the potato Hsp20 gene family: identification, genomicorganization and expression profiles in response to heat stress 1、数据下载:PGSC数据库下载potato所有的蛋白序列,Pfam数据库下载Hsp20基因家族 2、使用hmmsearch 阈值 e-value <=0.001 来搜索Hsp20 家族基因。 3、使用拟南芥Hsp20蛋白作为队列与potato所有的蛋白库进行比对,阈值e-value <=0.001。 4、“Hsp20” and “small heat shock protein”关键字 在PGSC中搜索。 5、Hsp20不完整domain或分子量在15-42之外的蛋白过滤掉。
以HSP90候选抑制剂设计为例,本文成功设计出许多全新的潜在HSP90候选抑制剂,与已知性能优异的HSP90抑制剂相比,潜在HSP90候选抑制剂的驻留时间(τ = 1/koff)最多提高了45.7%。 4.2 数学规划法为HSP90蛋白设计定制虚拟抑制剂库 针对HSP90靶标,本文集成深度学习模型与数学规划法设计慢解离HSP90候选抑制剂,设计流程如图5所示。 图 5. 慢解离HSP90候选抑制剂设计流程 首先,收集具有慢解离动力学的HSP90抑制剂及其koff实验值,并将其视为参考化合物。 HSP90候选抑制剂的设计结果。(a)使用ECFP描述符和t-SNE方法设计的HSP90候选抑制剂的化学空间。(b)参考化合物的二维分子结构。(c)潜在HSP90抑制剂的二维分子结构。 显然,潜在HSP90候选抑制剂的R1取代基大于参考化合物,因而提高了τ值。 图 7. HSP90结合位点的两种主要构象 图 8.
应用存在多包(HAP、HSP)的场景时,可以使用 HSP(Harmony Shared Package) 动态共享包在应用的多个包(HAP、HSP)之间共享代码和资源,消除使用 HAR(Harmony 在多包场景下,如果应用的多个HAP或HSP包使用HAR包实现代码和资源的共享,那么打包后的每个HAP或HSP包中都会存在一份共享HAR包的拷贝,导致App包中存在冗余代码和资源。 这种场景下,推荐开发者使用HSP代替HAR实现代码和资源共享。 如下图示例,使用HSP2对原应用进行升级改造,打包后,App包中HAR2和HAR3只存在一份拷贝,HAR2、HAR3总大小大于HSP(11k)时,可以减小应用包大小。 多包(HAP、HSP)间重复资源,可以使用HSP实现资源的复用。较大文件确认是否为应用必需,是否可删除。JPG、PNG、GIF等文件,可以考虑压缩。
HSP动态共享包:干掉多包重复资源****问题**:多个HAP/HSP包引用相同HAR静态包时,每个包都重复打包资源(如图片、代码)。 **优化**:用 **HSP动态共享包** 替代HAR,实现资源复用:```// 在HSP的module.json5中声明共享资源{ "module": { "type": "shared", - ✅ **HSP动态包**:所有HAP共享同一份HSP代码,物理存储仅1份。 **效果**:资源越多,节省越显著(尤其图片、公共组件库)。* * *### **3. /app.hap```**报告重点看**:- **重复文件**:删除包内重复资源,或多包间改用HSP共享。- **大文件**:<!
// ✅ 正确方案:封装共享HSP // 创建common.hsp(动态共享包) // 工具类:CommonUtils.ets export class Logger { static C -->|是| D(HSP动态包) C -->|否| E{跨应用共享?} **按需加载**:月活<5%的功能强烈建议用`HSP` * * * 四、福利:官方隐藏案例入口 在HarmonyOS文档搜索这些关键词,解锁更多案例: 1. **“动态共享库”** → 获取HSP性能优化Demo 1. 电商级应用:HSP按需加载 + 共享HSP基础库 遇到坑了?**随时去华为开发者社区吼我**(搜索“模块化”问题区有官方大佬驻场)! **Keep coding, 咱们下期见!**
rflag = random.randint(2, 6) pflag = random.randint(0, rflag) wsp = 0 hsp sw = w // rflag wsp = sw * pflag; else: sh = h // rflag hsp sh = int(max((h / 2 * hflag / 100), 5)) wsp = random.randint(0, w - sw - 1) hsp nidx2 = np.concatenate([idxs2, idxs1]) img_np = img.cpu().data.numpy() img_np[nidx1, :, hsp :hsp + sh, wsp: wsp + sw] = img_np[nidx2, :, hsp:hsp + sh, wsp: wsp + sw] img = torch.from_numpy(
} }123456789101112131415161718192021222324252627 6).在service包中建立一个RedisService.java类 package com.hsp.sercice Object value); public Object get(String key); }123456789 7).RedisServiceImpl.java package com.hsp.service.impl ;import com.hsp.sercice.RedisService;@Servicepublic class RedisServiceImpl implements RedisService { return vo.get(key); } }12345678910111213141516171819202122232425 8).UserController.java package com.hsp.controller ;import com.hsp.sercice.RedisService;import com.hsp.sercice.UserService;@Controller @RequestMapping(path