|
【技术支持咨询】aTrust HarmonyOS SDK 在鸿蒙模拟器上 initSDK 后卡死 ArkWeb WebView 渲染进程(真机正常)一、问题概述 集成 aTrust HarmonyOS App SDK 的应用,在 HarmonyOS Next 模拟器上启动时,initSDK 之后 ArkWeb WebView 的渲染子进程(:render)主线程被完全卡死,页面永久白屏;同一应用在真机上完全正常。已定位到卡死由 SDK 初始化触发(不集成/不初始化 SDK 则一切正常),怀疑与模拟器缺硬件安全能力(Huks CryptoExtension)有关,特此咨询确认与解决方案。 二、环境信息项值
SDKaTrust HarmonyOS App SDK(SangforSDK.har,含 libaTrustSDK.so / libsdklibrary.so,compatibleSdkVersion 12)
SDK 版本2.5.16.3 与 2.6.10.1 均复现(升级到最新版问题不变)
触发调用App 启动期 initSDK(此时尚未做任何 VPN 认证 / 未建隧道 / 未配置任何 VPN 环境,仅初始化 SDK)
应用形态APICloud 型 WebView 容器应用;主界面是单个 ArkWeb WebView(加载本地 file:// 单页应用)
WebView 内核ArkWeb 6.0(Chrome/132.0.6834.89),多进程模型(独立 :render 渲染子进程)
出问题环境DevEco Studio 的 HarmonyOS Next 模拟器
正常环境真机(同一 App 同一 SDK,真机不复现,一切正常)
CPU 架构应用 nativeLibraryPath 为 arm64,宿主为 Apple Silicon Mac、模拟器为 arm64 —— SDK 的 .so 架构与运行环境一致,非架构/翻译问题三、现象App 启动,SDK 正常 initSDK(日志见 register AKI addon: aTrustSDK、app启动时初始化深信服VPN的SDK)。 随后 ArkWeb 渲染子进程(:render)主线程被完全卡死:页面 JS 从未执行,WebView 永久白屏。 进程 CPU 占用≈0、状态为可中断睡眠(非死循环),长时间(10 分钟以上)不恢复 —— 表现为一个永不返回的同步调用。
四、已确认的定位(均为实测)就是 SDK 初始化触发:把 SDK 从模块注册中移除(不 initSDK)后重新构建 → WebView 立即正常渲染(进入登录页)。带上 SDK 则必现白屏。 升级 SDK 无效:2.5.16.3 与最新 2.6.10.1 表现逐字一致,排除"版本过旧"。 与网络/代理无关:宿主机上的 TUN 代理(fake-ip)无论开或关均复现;一个零网络的空白页面(about:blank)的新渲染子进程同样卡死。且卡死是同步阻塞(连 1+1 这种纯 JS 都无法执行)——不是"等待网络返回"(等网络是异步、不会卡住 JS 主线程)。 卡死在渲染子进程主线程:用 DevTools Protocol 诊断,除 Inspector 域(IO 线程)能响应外,Runtime/DOM/Network/Page/Log 域全部超时 —— 即渲染进程主线程被同步阻塞。 模拟器缺硬件安全能力:启动日志出现 canIUse SystemCapability.Security.Huks.CryptoExtension supported is **false**(模拟器不支持 Huks 硬件加密扩展),真机支持。我们怀疑 SDK 初始化中存在一个依赖硬件级安全能力(Huks / TEE)的同步调用,在缺该能力的模拟器上阻塞而非优雅失败。 SDK changelog 标注"VPN 支持多进程",而 ArkWeb 会派生独立 :render 子进程;我们怀疑 SDK 的逐进程初始化注入到了渲染子进程并在其中同步阻塞。
五、已排除的方向❌ 网络/隧道/代理问题(TUN 代理开关无差别;未做任何 VPN 认证) ❌ SDK 版本过旧(最新 2.6.10.1 同样复现) ❌ .so 架构不匹配(arm64 对 arm64) ❌ 前端页面/JS 问题(页面 JS 根本没执行;不初始化 SDK 则同一页面正常)
六、希望贵司确认的问题aTrust HarmonyOS SDK 的 initSDK(或其多进程初始化)是否包含依赖硬件安全能力(Huks CryptoExtension / TEE / 硬件密钥库)的同步调用? 在缺该能力的 HarmonyOS Next 模拟器上,该调用是否会阻塞/挂起而不是返回失败? 能否让 SDK 在硬件安全能力不可用时优雅降级(软件回退,或提供一个初始化开关/参数),使应用在模拟器上也能正常运行、不卡死渲染进程? 能否将 SDK 的逐进程初始化限定为仅主进程、排除 ArkWeb 的 :render 渲染子进程? 我们应用的业务请求全部走主进程的原生 HTTP,渲染子进程本身不需要 VPN 能力。是否有按进程名(如 *:render)跳过初始化的配置? 贵司是否官方支持在 HarmonyOS Next 模拟器上运行 aTrust SDK? 是否有已知问题或推荐的模拟器开发绕行方案? 为便于定位:能否提供 sangforsdklogs/*.xlog(mars xlog 加密格式)的解码方式,或直接告知 SDK 在模拟器上 initSDK 卡在哪一步?
七、我们可提供的材料完整 hilog 启动日志(含 aTrustSDK 初始化轨迹与卡死时间线) DevTools Protocol 诊断记录(证明渲染进程主线程被同步阻塞) 设备端 sangforsdklogs/*.xlog(需贵司解码)
八、影响与紧急度真机不受影响,不阻塞生产/客户;但阻塞研发同学在鸿蒙模拟器上的日常开发调试(目前临时以"不初始化 SDK 的开发包"绕行)。希望能得到官方结论与在模拟器上可用的方案。
集成方:友空间私有版鸿蒙客户端(com.yongyou.youpuhos.exclusive) |