【每日学点鸿蒙知识】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

相关推荐
别说我什么都不会4 小时前
鸿蒙(HarmonyOS)性能优化实战-页面布局检查器ArkUI Inspector
性能优化·harmonyos·arkui
小小工匠4 小时前
架构思维:高性能架构_01基础概念
架构·基础概念·高性能架构
二流小码农6 小时前
鸿蒙开发:wrapBuilder传递参数
android·ios·harmonyos
桂月二二7 小时前
基于WebAssembly的云原生运行时:重新定义轻量化微服务架构
云原生·架构·wasm
别说我什么都不会7 小时前
鸿蒙(HarmonyOS)性能优化实战-应用性能分析工具CPU Profiler使用指南
性能优化·harmonyos
png7 小时前
从零开始纯血鸿蒙天气预报-主界面(1)
harmonyos·arkui
城中的雾7 小时前
鸿蒙开发者必看:如何用一行命令搞定HSP/HAP文件安装?
harmonyos
卑微小文8 小时前
2025国内网络反爬新高度:代理IP智能轮换算法揭秘
后端·算法·架构
qxlxi8 小时前
【分布式】聊聊分布式id实现方案和生产经验
分布式·架构
Georgewu9 小时前
【HarmonyOS Next】鸿蒙应用弹框和提示气泡详解(一)
前端·华为·harmonyos