【每日学点鸿蒙知识】Charles抓包、lock文件处理、WebView组件、NFC相关、CallMethod失败等
1、HarmonyOS系统中如何使用Charles抓包?
在HarmonyOS操作系统中,使用Charles进行抓包的步骤如下:
在Charles中设置代理。
- 首先,在Charles的菜单栏上选择“Proxy”→“Proxy Settings”,然后填入代理端口(例如8888,也可以使用其他端口),并勾选“Enable transparent HTTP proxying”。这样便完成了在Charles上的设置。
- 可以在“Help”→“Local IP Address”中查看本机的IP地址,或者使用cmd中的ipconfig命令来查看。设置手机代理。
- 选择连接的Wi-Fi网络,右击选择“修改网络”,然后勾选“显示高级选项”,输入服务器主机名和服务器端口,点击保存。
- 安装SSL证书。在电脑上选择“Help”→“SSL Proxying”→“Install Charles Root Certificate”。如果系统有安全防护设置,可能需要输入账号密码。按照提示安装Charles证书。
- 配置SSL抓取域名。在Charles中,找到“Proxy”→“SSL Proxying Settings…”,并启用SSL代理(Enable SSL Proxying)。
- 在Host字段设置通配符
"*"
(如果要抓取特定域名,则在此处填写特定域名),通常端口为4431。
完成以上步骤后,就可以开始抓取手机系统上的数据包了。
请确保在进行这些设置时,手机和电脑都连接到同一网络,并且手机的开发者选项已启用,以便安装和信任Charles证书。
2、项目在不同电脑上,有些文件会修改或者增加一些配置,这种情况怎么处理?
build-profile.json5、harmony/oh-package-lock.json5、harmony/entry/oh-package-lock.json5
以上3个文件会自动修改或增加配置
还有yarn.lock文件也是,不删除直接yarn install就报错,删除后install就没问题,并且文件有修改,主要是路径、版本的改变
这种情况是因为每个人的项目所在的路径不一样吗,或者是Windows、Mac的原因?有没有什么影响呢,我不提交git可以吗
解答:
- 以上3个文件每台电脑编译后会有区别,但对整个项目没有影响,可以直接在git忽略掉不提交。
- yarn.lock是lock当前项目所依赖的各个包的版本。
yarn install报错是因为lock的版本和本地项目中依赖包的版本不一样。(你更新了别人上传的lock,你本地是你自己的依赖包)
yarn文件中的未指定具体版本(默认获取最新),那么两个开发者之间就有可能会下载到不同版本的依赖包,两个开发者所对应的本地包和yarn.lock文件就会不同,install的时候就会报错。
将yarn.lock删掉重新install,会重新install并生成新的yarn.lock文件,是一种临时的解决方式,yarn.lock这个文件创造出来的初衷就是为了让多端的开发者都能保持统一的依赖包版本(避免因为依赖包不同导致发生问题)。
所以要么yarn中指定依赖包具体版本号并定期维护更新版本。么每次git更新的时候对比本地包和yarn.lock中的版本那里不同进行调整。
3、Web组件怎么判断当前url已经成功加载?
Web({ src: this.url, controller: this.controller })
Web组件怎么判断当前url已经成功加载?
.onErrorReceive((event) =\>
是失败的情况,成功加载的情况是在哪判断?
Web在网页加载完成时触发该回调onPageEnd方法,具体文档可以参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5
4、HarmonyOS @ohos.nfc.controller模块不存在,无法引用?
APP需要调用NFC功能,按照官方文档import controller from '@ohos.nfc.controller’
报错The default system capabilities of devices phone, tablet, 2in1 do not include SystemCapability.Communication.NFC.Core. Configure the capabilities in syscap.json. <ArkTSCheck>
在某具体的设备型号上,能力可能超出工程默认设备定义的能力集范围,如果需要使用此部分能力,需要额外配置自定义的syscap。具体配置请参考SysCap开发指导:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/syscap-0000001774120846#ZH-CN_TOPIC_0000001813657848__syscap%E5%BC%80%E5%8F%91%E6%8C%87%E5%AF%BC
注意,配置完成之后,需要重启一下DevEco Studio,引用即可生效。
系统能力和API:
设备与支持能力集:
设备与SDK能力的对应:
5、HarmonyOS aki::Value::CallMethod失败?
TS定义如下类:
export class XavAudioOutputConfig {
bitrate: EXavAudioBitrate = EXavAudioBitrate.kbps128;
}
export class XavCompileConfig {
audioConfig: XavAudioOutputConfig;
metadata: string = '';
constructor() {
this.audioConfig = new XavAudioOutputConfig();
}
}
在TS层创建XavCompileConfig对象,然后通过aki传递到C++层,调用如下方法时发生crash。
static void LogCompileInfo(napi\_value config)
{
auto compileConfig = aki::Value(config);
auto audioConfig = compileConfig.CallMethod(“audioConfig”);
}
Value Value::CallMethod方法中的jsCallback.CallMethod(env, recv, std::forward<Args>(args)…)返回值为空,但实际上audioConfig不为空。
compileConfig.CallMethod(“audioConfig”); 这个audioConfig不是方法,在JS层是个对象,callmethod函数是调用JS方法的,而audioConfig并不是类成员函数