【每日学点鸿蒙知识】私仓搭建、resources创建文件夹、hvigor如何动态设置版本、SM3摘要算法、SP存储报错等

【每日学点鸿蒙知识】私仓搭建、resources创建文件夹、hvigor如何动态设置版本、SM3摘要算法、SP存储报错等

1、OH私仓如何创建?

可以参照以下文档来搭建OH私仓:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-ohpm-repo-quickstart-V5

2、resources->base->media中不可以新建文件夹?

项目图片路径resources->base->media中不可以新建文件夹,图片全平级放里面,查找图片不方便,有没有什么其他的办法解决这个难点?

resources目录下可用于存放图片的目录有resources/*/media 以及 resources/rawfile

可以使用rawfile来创建文件夹放置图片。

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

需要注意:

  1. rawfile不会根据设备所处的环境去匹配不同的资源
  2. rawfile 中源文件会被直接打包进应用,不经过编译,也不会被赋予资源文件ID,通过指定文件路径和文件名引用
3、hvigor如何动态设置versionName和VersionCode?

参考我们之前的版本定义,VersionName分4段,前3段是人为配置到的,第4段是通过执行'git rev-list --count HEAD'得到的,而VersionCode也是通过VersionName所配置的前3段动态生成的。

在HarmonyOS原生,或者说在hvigor中如何实现这样的VersionName、VersionCode的动态生成?

请参考版本归一指令(versionNormalize),文档链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/packing-tool-V5#版本归一指令versionnormalize

4、HarmonyOS的SM3摘要算法结果转字符串乱码?
复制代码
// SM3Hash
export async function SM3Hash(plainText: string): Promise<string> {
  let mdAlgName = 'SM3'; // 摘要算法名
  let md = cryptoFramework.createMd(mdAlgName);
  // 数据量较少时,可以只做一次update,将数据全部传入,接口未对入参长度做限制
  await md.update({ data: new Uint8Array(buffer.from(plainText, 'utf-8').buffer) });
  let mdResult = await md.digest();
  console.info('Md result:' + mdResult.data);
  return uint8ArrayToString(mdResult.data);
}

使用的uint8ArrayToString方法为解密中解码的方法,在此应该用转base64或在十六进制数据base64格式字符串:new util.Base64Helper().encodeToStringSync(str)

十六进制字符串:buffer.from(data).toString('hex')

5、Preferences存储json格式字符串时报错?

Preferences存储json格式字符串时报错 ,

无论是转成

let uInt8Array = new util.TextEncoder().encodeInto(value);

this.preferences.putSync("asd" , uInt8Array)

还是直接

this.preferences.putSync("asd" ,value)

都会报错 Parameter error. The type of 'value' must be ValueType.

value值过长导致的,首选项value的最大长度限制为8192个字节。可考虑使用kv数据库或者rdb进行储存。

相关推荐
anyup18 小时前
🔥2026最推荐的跨平台方案:H5/小程序/App/鸿蒙,一套代码搞定
前端·uni-app·harmonyos
Ranger09291 天前
鸿蒙开发新范式:Gpui
rust·harmonyos
Huang兄1 天前
鸿蒙-深色模式适配
harmonyos·arkts·arkui
SummerKaze3 天前
为鸿蒙开发者写一个 nvm:hmvm 的设计与实现
harmonyos
在人间耕耘5 天前
HarmonyOS Vision Kit 视觉AI实战:把官方 Demo 改造成一套能长期复用的组件库
人工智能·深度学习·harmonyos
王码码20355 天前
Flutter for OpenHarmony:socket_io_client 实时通信的事实标准(Node.js 后端的最佳拍档) 深度解析与鸿蒙适配指南
android·flutter·ui·华为·node.js·harmonyos
HarmonyOS_SDK5 天前
【FAQ】HarmonyOS SDK 闭源开放能力 — Ads Kit
harmonyos
Swift社区5 天前
如何利用 ArkUI 框架优化鸿蒙应用的渲染性能
华为·harmonyos
特立独行的猫a5 天前
uni-app x跨平台开发实战:开发鸿蒙HarmonyOS影视票房榜组件完整实现过程
华为·uni-app·harmonyos·轮播图·uniapp-x
盐焗西兰花5 天前
鸿蒙学习实战之路-STG系列(5/11)-守护策略管理-添加与修改策略
服务器·学习·harmonyos