HarmonyOS 鸿蒙Next是否存在类似于Android asset的机制

HarmonyOS 鸿蒙Next是否存在类似于Android asset的机制 目前是需要把资源文件放在安装包中,然后通过代码可以把资源文件拷贝到文件沙箱中

3 回复

1、如果是想拷贝resource文件夹中的资源到沙箱路径,可以使用resourceManage.getRawFileContent获取资源文件,然后用fs模块来操作文件

getContext(this).resourceManager.getRawFileContent('666.png', (_err, value) => {
let myBuffer: ArrayBufferLike = value.buffer

let context = getContext(this);

//沙箱路径
let filePath = context.filesDir + "/66.png";

console.log("testTag-filePath:" + filePath);

let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);

let writeLen = fs.writeSync(file.fd, myBuffer);

console.info("testTag-write data to file succeed and size is:" + writeLen);

fs.closeSync(file);
});

参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V14/js-apis-resource-manager-V14#getrawfilecontent9

参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V14/js-apis-file-fs-V14

2、如果是想在应用安装时拷贝指定资源文件到沙箱,目前并没有这种能力,可以把资源文件放在resfile目录

该目录支持创建多层子目录,子目录名称可以自定义,文件夹内可以自由放置各类资源文件。

目录中的资源文件会被直接打包进应用,不经过编译,也不会被赋予资源文件ID。应用安装后,resfile资源会被解压到应用沙箱路径,通过Context属性resourceDir获取到resfile资源目录后,可通过文件路径访问

参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V14/resource-categories-and-access-V14

更多关于HarmonyOS 鸿蒙Next是否存在类似于Android asset的机制的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


多谢大佬,

基本信息

  • 项目名称: 示例项目
  • 项目状态: 进行中
  • 开始日期: 2023-01-01
  • 结束日期: 2023-12-31

HarmonyOS 鸿蒙Next中存在类似于Android asset的机制,称为“资源管理机制”。在鸿蒙系统中,开发者可以通过资源管理模块(Resource Manager)来访问和管理应用中的非代码资源,如图片、音频、字符串等。这些资源通常存储在应用的resources目录下,类似于Android中的assets目录。开发者可以通过资源ID或资源名称来访问这些资源,鸿蒙系统会根据设备的配置(如语言、屏幕密度等)自动选择合适的资源版本。资源管理机制还支持动态加载和卸载资源,以便在不同的应用场景下优化性能和内存使用。

回到顶部