【每日学点鸿蒙知识】Json字典问题、高度变化问题、开放测试版本问题、动态库单架构选择、WebView和H5交互

1、HarmonyOS JSON.stringify一个HashMap的问题?
复制代码
let data = new HashMap<string, string>()   
data.set("action", "test") 
let text = JSON.stringify(data)

输出一个text={}

这边想添加多个并且不同的key和value,并返回json的字符串,如何实现呢?

可以参考以下代码:

复制代码
const map1: HashMap<string, string> = new HashMap();
map1.set("a", "avalue");
map1.set("b", "bValue");
const jsonObject: Record<string, Object> = {};
map1.forEach((value, key) => {
  if (key != undefined && value != undefined) {
    jsonObject[key] = value;
  }
})
const jsonString = JSON.stringify(jsonObject)
console.log('jsonString', jsonString)
2、HarmonyOS 页面高度发生变化?

在安全区域配置中,ExpandSafeArea仅针对当前组件生效,不会向父组件或子组件传递。因此使用过程中,所有相关组件必须配置该属性。

ExpandSafeArea的属性判断早于position属性生效。在使用过程中如果系统判断当前组件的位置不涉及安全区域(Position生效前),则ExpandSafeArea会失效。如Stack中放置组件,默认在居中位置,测试可能会出现ExpandSafeArea失效的情况。可以在父组件Stack配置alignContent为Alignment.Top

如果无法使能ExpandSafeArea,但是需要将组件部署在安全区内,可以通过将y坐标向上调整128px(-px2vp(128))强制将位置配置在状态栏上。

详情参见如下文档:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-expand-safe-area.md

3、HarmonyOS 开放测试版本已通过自动审核,但用户列表中邀请链接还是未发送状态?

可以在华为应用市场的分发详情页面中手动触发邮件发送。 在华为应用市场的AGC中查看当前所有用户的邀请状态。可以给未收到邀请的测试用户重新发送邀请链接,并提醒他们参与测试。

4、希望在打包的 hap 中只带 arm64_v8a 的 .so 库,不知道在何种方法可以达到类似的效果?

项目中依赖了几个 har,这些 har 里面带了 arm64-v8a 和 x86_64 两种架构的 .so 库,希望在打包的 hap 中只带 arm64_v8a 的 .so 库,不知道在何种方法可以达到类似的效果?

目前只知道 buildOption.externalNativeOptions 中能配置 CMakeLists.txt 的 abiFilter,也许需要一个打包时的 abiFilter 配置来过滤掉 har 中特定架构的 so,类似 xxxx 中的:

复制代码
xxxx {defaultConfig {ndk {abiFilters 'arm64-v8a', 'x86_64'}}}

可以参阅:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-hvigor-cpp-V5 可以在nativeLib-->filter-->excludes下配置排除某些.so例如:

复制代码
//配置筛选依赖.so资源文件的过滤规则
"nativeLib": {
	"filter": {
		//按照.so文件的优先级顺序,打包最高优先级的.so文件
		"pickFirsts": ["/1.so"],
		//按照.so文件的优先级顺序,打包最低优先级的.so文件
		"pickLasts": ["/2.so"],
		//排除的.so文件
		"excludes": [
			"/3.so", //排除所有名称为"3"的so文件"
			/x86_64/*.so //排除所有x86_64架构的so文件
		],
		//允许当.so重名冲突时,使用高优先级的.so文件覆盖低优先级的.so文件
		"enableOverride": true
	}
}
5、HarmonyOS WebView和H5交互的问题?

目前其他平台开发中与H5进行数据交互的方式为:H5那边调用window.prompt()或者window.XXXX.postMessage()方法,原生这边通过WebView代理回调的方式,拿到H5传过来的jsonString,进行数据解析,获得提前约定好的方法名和参数,然后原生再去调用对应的方法,实现js调用原生方法的功能。请问HarmonyOS原生APP能够去接收prompt()或者postMessage()的消息回调么?

可以通过runJavaScript API,在页面加载后注入代理函数,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#onloadintercept10

可使用onPrompt 拦截 window.prompt(),参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#onprompt9

相关推荐
JouYY6 分钟前
聊一下知识答疑Agent的“层次聚类”流程
架构·llm·agent
Kel12 分钟前
MCP 传输链路全链路拆解:从字节流到协议栈的四层架构之旅
人工智能·设计模式·架构
国服第二切图仔17 分钟前
HarmonyOS APP《画伴梦工厂》开发第38篇-自适应布局API实战——adaptiveLayout模块
华为·harmonyos
特立独行的猫A36 分钟前
HarmonyOS鸿蒙原生包HNP全解析:从规范到实战的完整指南
harmonyos
renhongxia11 小时前
原生多模态对应用架构的重塑
人工智能·深度学习·机器学习·自然语言处理·架构·机器人
ShiXZ2131 小时前
PDF-OCR文件识别篇(七):数据入库
java·pdf·json·ocr·springboot
terryso1 小时前
BMAD Loop:把开发循环的控制权,交还给确定性代码
架构
ASKCOS3 小时前
DeerFlow Agent 中间件架构:用插件化链彻底告别 Agent 继承式开发
中间件·架构
2601_954526753 小时前
【工控底层架构】进口阀门和国产阀门哪个性价比高?从TCO模型到边缘诊断源码的全栈解析
人工智能·架构·硬件工程
nashane4 小时前
HarmonyOS 6商城开发学习:剪贴板权限频繁弹窗的根治——从“自动嗅探“改为“用户主动触发“模型
华为·harmonyos