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

相关推荐
米字旗2 小时前
【疑难杂症】 HarmonyOS NEXT中Axios库的响应拦截器无法拦截424状态码怎么办?
华为·harmonyos·鸿蒙系统
轻口味5 小时前
【每日学点鸿蒙知识】PersistentStorage持久化、插槽方法、相对布局、上拉加载下拉刷新、List联动滑动
前端·华为·harmonyos
塞尔维亚大汉5 小时前
【OpenHarmony】 鸿蒙 UI开发之WheelPicker
harmonyos·arkui
星空海绵5 小时前
2024年阅读记录
前端·程序员·架构
轻口味5 小时前
【每日学点鸿蒙知识】Web嵌套滚动体验、拷贝传递 ArrayBuffer异常问题、ObjectLink 的属性传递、构建读取参数
前端·华为·harmonyos
sorryhc5 小时前
基于H5请求劫持能力如何设计一款异常监听SDK?
前端·javascript·架构
轻口味5 小时前
【每日学点鸿蒙知识】异步介绍、上传app报错、Web控件接口、应用名称自定义配置、ActionSheetOptions自定义
前端·华为·harmonyos
AI人H哥会Java6 小时前
【Spring】基于注解的Spring容器配置—— @Component及其衍生注解
java·开发语言·后端·spring·架构
二流小码农6 小时前
鸿蒙开发:了解正则表达式
harmonyos
轻口味7 小时前
【每日学点鸿蒙知识】Web高度适配、变量声明规范、动画取消、签名文件、包体积优化相关
前端·华为·harmonyos