HarmonyOS hsp依赖了har包,那么在hsp中如何引用har包下的raw资源。

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
shlp

目前模块为单位的context有两种:

第一种是entry下的context,默认会读取entry下的资源,在找不到资源后会加载其依赖的har资源文件;

第二种是hsp下的context,默认会读取hsp下的资源,在找不到资源后会加载其依赖的har资源文件;

两种context独立,即对于entry下的har包资源读取使用方式伪代码是:getContext().resourceManager.getRawFileContent('harRawFile');

对于hsp下的har包资源读取使用方式伪代码是:getContext().createModuleContext('moduleName').resourceManager.getRawFileContent('harRawFile');

依赖关系
// entry::oh-package.json5
"dependencies": { "harLib": "file:../harlibrary" }

// 代码实现 entry::index.ets
HarLibRes.printHarLibRaw(getContext(this));

// har包的实现 HarLibRes.ets
export class HarLibRes {
  public static async printHarLibRaw(context: Context) {
    let rawFileRes: Uint8Array = await context.resourceManager.getRawFileContent('har_config.txt');
    let bufferLike: ArrayBufferLike = rawFileRes.buffer;
    let rawFileBuffer: ArrayBuffer = bufferLike.slice(0, bufferLike.byteLength);
    console.info('loadFromRawFile: ' + rawFileBuffer.byteLength);
    const decoder = util.TextDecoder.create('"utf-8"');
    const str = decoder.decodeWithStream(new Uint8Array(rawFileBuffer));
    console.info('printRawFile: ' + str);
  }
}
// 最后在entry下可以加载出har包下的raw文件,并输入文件内容。
依赖关系
// sharelibrary::oh-package.json5
"dependencies": { "harLib": "file:../harlibrary" }

// 代码实现 sharelibrary::index.ets
HarLibRes.printHarLibRaw(getContext().createModuleContext('sharelibrary'));

// har包的实现 HarLibRes.ets
export class HarLibRes {
  public static async printHarLibRaw(context: Context) {
    let rawFileRes: Uint8Array = await context.resourceManager.getRawFileContent('har_config.txt');
    let bufferLike: ArrayBufferLike = rawFileRes.buffer;
    let rawFileBuffer: ArrayBuffer = bufferLike.slice(0, bufferLike.byteLength);
    console.info('loadFromRawFile: ' + rawFileBuffer.byteLength);
    const decoder = util.TextDecoder.create('"utf-8"');
    const str = decoder.decodeWithStream(new Uint8Array(rawFileBuffer));
    console.info('printRawFile: ' + str);
  }
}
// 最后在sharelibrary下可以加载出har包下的raw文件,并输入文件内容。

综上,对于hsp要获取har包下的rawFile以及相关资源,需要先创建对于hsp moduleName对于的context才可以读取到。对于context指南:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/application-context-stage-V5#获取本应用中其他module的context

分享
微博
QQ
微信
回复
1天前
相关问题
HAR 是否可以依赖 HSP?
356浏览 • 1回复 待解决
hsphar互相转换方案
1243浏览 • 1回复 待解决
HarmonyOS harhsp
37浏览 • 1回复 待解决
从HAP如何区分是HARHSP
2104浏览 • 1回复 待解决
HarmonyOS harhsp选择
18浏览 • 1回复 待解决
HarmonyOS hsp调用har代码
334浏览 • 1回复 待解决
HARHSP,分别是如何引入
1539浏览 • 1回复 待解决
求告知HAR如何转换为HSP
446浏览 • 1回复 待解决
如何依赖已经打好HSP
1021浏览 • 1回复 待解决
HarmonyOS har动态依赖
39浏览 • 1回复 待解决