HarmonyOS鸿蒙Next中用模拟器运行tcpchat的app时加载不出来就闪退了,以下是部分日志

HarmonyOS鸿蒙Next中用模拟器运行tcpchat的app时加载不出来就闪退了,以下是部分日志

2026-05-13 16:38:34.228; CJUIAbility::OnSceneCreated; the OnSceneCreated begin

client app:

2026-05-13 16:38:34.153; ScheduleForegroundApplication
2026-05-13 16:38:34.153; HandleForegroundApplication

mainHandler dump is:

EventHandler dump begin curTime: 2026-05-13 04:38:36.655
Event runner (Thread name = , Thread ID = 12668) is running
Current Running: start at 2026-05-13 04:38:34.154, Event { send thread = 12670, send time = 2026-05-13 04:38:34.154, handle time = 2026-05-13 04:38:34.154, trigger time = 2026-05-13 04:38:34.154, task name = UIAbilityThread:AbilityTransaction, caller = [ui_ability_thread.cpp(ScheduleAbilityTransaction:345)] }
History event queue information:
No. 0 : Event { send thread = 12668, send time = 2026-05-13 04:38:33.879, handle time = 2026-05-13 04:38:33.879, trigger time = 2026-05-13 04:38:33.880, completeTime time = 2026-05-13 04:38:33.881, priority = High, id = 1 }
No. 1 : Event { send thread = 12668, send time = 2026-05-13 04:38:33.879, handle time = 2026-05-13 04:38:33.879, trigger time = 2026-05-13 04:38:33.881, completeTime time = 2026-05-13 04:38:33.881, priority = Low, task name = MainThread:SetRunnerStarted }
No. 2 : Event { send thread = 12670, send time = 2026-05-13 04:38:33.886, handle time = 2026-05-13 04:38:33.886, trigger time = 2026-05-13 04:38:33.886, completeTime time = 2026-05-13 04:38:34.147, priority = Low, task name = MainThread:LaunchApplication }
No. 3 : Event { send thread = 12670, send time = 2026-05-13 04:38:33.910, handle time = 2026-05-13 04:38:33.910, trigger time = 2026-05-13 04:38:34.147, completeTime time = 2026-05-13 04:38:34.153, priority = Low, task name = MainThread:LaunchAbility }
No. 4 : Event { send thread = 12670, send time = 2026-05-13 04:38:34.153, handle time = 2026-05-13 04:38:34.153, trigger time = 2026-05-13 04:38:34.153, completeTime time = 2026-05-13 04:38:34.153, priority = Low, task name = MainThread:ForegroundApplication }
No. 5 : Event { send thread = 12670, send time = 2026-05-13 04:38:34.154, handle time = 2026-05-13 04:38:34.154, trigger time = 2026-05-13 04:38:34.154, completeTime time = , priority = Low, task name = UIAbilityThread:AbilityTransaction }
VIP priority event queue information:
Total size of VIP events : 0
Immediate priority event queue information:
Total size of Immediate events : 0
High priority event queue information:
Total size of High events : 0
Low priority event queue information:
No.1 : Event { send thread = 12670, send time = 2026-05-13 04:38:34.195, handle time = 2026-05-13 04:38:34.195, task name = WMS_WindowSessionImpl_UpdateRectForOtherReason, caller = [window_session_impl.cpp(UpdateRectForOtherReason:882)] }
No.2 : Event { send thread = 12668, send time = 2026-05-13 04:38:34.287, handle time = 2026-05-13 04:38:34.287, task name = ArkUISetThreadPriority, caller = [task_runner_adapter_impl.cpp(PostTask:33)] }
No.3 : Event { send thread = 12668, send time = 2026-05-13 04:38:34.287, handle time = 2026-05-13 04:38:34.287, task name = ArkUISetThreadPriority, caller = [task_runner_adapter_impl.cpp(PostTask:33)] }
No.4 : Event { send thread = 12668, send time = 2026-05-13 04:38:34.287, handle time = 2026-05-13 04:38:34.287, task name = ArkUIFillTaskTypeTable, caller = [task_runner_adapter_impl.cpp(PostTask:33)] }
No.5 : Event { send thread = 12668, send time = 2026-05-13 04:38:34.287, handle time = 2026-05-13 04:38:34.287, task name = ArkUIFillTaskTypeTable, caller = [task_runner_adapter_impl.cpp(PostTask:33)] }
No.6 : Event { send thread = 12668, send time = 2026-05-13 04:38:34.287, handle time = 2026-05-13 04:38:34.287, task name = ArkUIFillTaskTypeTable, caller = [task_runner_adapter_impl.cpp(PostTask:33)] }
No.7 : Event { send thread = 12668, send time = 2026-05-13 04:38:34.152, handle time = 2026-05-13 04:38:35.152, task name = AppRecovery:AddAbility, caller = [app_recovery.cpp(AddAbility:138)] }
No.8 : Event { send thread = 12668, send time = 2026-05-13 04:38:34.267, handle time = 2026-05-13 04:38:35.267, task name = HaAce, caller = [ha_ace_engine_event_api.cpp(Post:72)] }
No.9 : Event { send thread = 12670, send time = 2026-05-13 04:38:35.913, handle time = 2026-05-13 04:38:35.913, task name = MainThread:ChangeAppGcState, caller = [main_thread.cpp(ScheduleChangeAppGcState:3325)] }
Total size of Low events : 9
Idle priority event queue information:
Total size of Idle events : 0
Total event size : 9

Result: 0 ( no error )
Timestamp:2026-05-13 16:38:36.000
Pid:12668
Uid:20020044
Process name:com.liuzian.tcpchat
Tid:12668, Name:liuzian.tcpchat

#00 pc 0000000000117c99 /system/lib/ld-musl-x86_64.so.1(1d116f5d6c6d03865783eefe85d70c2b)
#01 pc 000000000011ea1a /system/lib/ld-musl-x86_64.so.1(sem_timedwait+298)(1d116f5d6c6d03865783eefe85d70c2b)
#02 pc 000000000011e62d /data/storage/el1/bundle/libs/x86_64/runtime/libcangjie-runtime.so(CJThreadParkInForeignThread+173)
#03 pc 000000000011e824 /data/storage/el1/bundle/libs/x86_64/runtime/libcangjie-runtime.so(CJ_CJThreadPark+244)
#04 pc 0000000000122ecc /data/storage/el1/bundle/libs/x86_64/runtime/libcangjie-runtime.so(CJ_SchdpollWait+124)
#05 pc 00000000000c314d /data/storage/el1/bundle/libs/x86_64/libohos_app_cangjie_entry.utils.so(CJ_SchdfdWait+173)

Tid:12669, Name:OS_IPC_0_12669
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
     65       0.00%       0.00%      0.00%         0             0         kworker/u9:0  
     64       0.00%       0.00%      0.00%         0             0         rpciod     
     61       0.00%       0.00%      0.00%         0             0         ata_sff    
     60       0.00%       0.00%      0.00%         0             0         kblockd    
     34       0.00%       0.00%      0.00%         0             0         writeback  
     33       0.00%       0.00%      0.00%         0             0         oom_reaper 
     29       0.00%       0.00%      0.00%         0             0         netns      
     28       0.00%       0.00%      0.00%         0             0         kdevtmpfs  
     27       0.00%       0.00%      0.00%         0             0         kworker/3:0H-events_highpri
     24       0.00%       0.00%      0.00%         0             0         migration/3
     23       0.00%       0.00%      0.00%         0             0         cpuhp/3    
     22       0.00%       0.00%      0.00%         0             0         kworker/2:0H-kblockd
     20       0.00%       0.00%      0.00%         0             0         ksoftirqd/2
     19       0.00%       0.00%      0.00%         0             0         migration/2
     18       0.00%       0.00%      0.00%         0             0         cpuhp/2    
     17       0.00%       0.00%      0.00%         0             0         kworker/1:0H-kblockd
     15       0.00%       0.00%      0.00%         0             0         ksoftirqd/1
     14       0.00%       0.00%      0.00%         0             0         migration/1
     13       0.00%       0.00%      0.00%         0             0         cpuhp/1    
     12       0.00%       0.00%      0.00%         0             0         cpuhp/0    
     11       0.00%       0.00%      0.00%         0             0         migration/0
      8       0.00%       0.00%      0.00%         0             0         mm_percpu_wq
      6       0.00%       0.00%      0.00%         0             0         kworker/0:0H-events_highpri
      4       0.00%       0.00%      0.00%         0             0         rcu_par_gp
      3       0.00%       0.00%      0.00%         0             0         rcu_gp    
      2       0.00%       0.00%      0.00%         0             0         kthreadd  

end time: 2026/05/13-16:38:41
---------------------------------------------------
---------------------------------------------------
start time: 2026/05/13-16:38:41
catcher cmd: hidumper -s 1910 -a DumpAppMap 
end time: 2026/05/13-16:38:41
---------------------------------------------------
---------------------------------------------------
start time: 2026/05/13-16:38:41
end time: 2026/05/13-16:38:42
---------------------------------------------------
---------------------------------------------------
start collect hotInfo: 2026/05/13-16:38:42
 ThermalMgrClient info: 0
end collect hotInfo: 2026/05/13-16:38:42
---------------------------------------------------
  
Catcher log total time is 2713ms

ffrt dump info:
-------------------------------[ability]-------------------------------
  
----------------------------------ApplicationManagerService----------------------------------
|-> Launcher proc ffrt, now:2026-05-13 16:38:39.530324 pid:12668
    |-> key status
no key status info
    |-> worker count
       qos 2: worker num:1 tid:12686
    |-> worker status
       qos 2: worker tid 12686 is running nothing

更多关于HarmonyOS鸿蒙Next中用模拟器运行tcpchat的app时加载不出来就闪退了,以下是部分日志的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

你这配的啥?

cke_452.png

另外看看这个《【HarmonyOS 仓颉开发者体验版招募】支持机型清单》,用这里面机型跑下。

更多关于HarmonyOS鸿蒙Next中用模拟器运行tcpchat的app时加载不出来就闪退了,以下是部分日志的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这是 仓颉(Cangjie)应用在鸿蒙模拟器上的已知兼容性问题,崩溃根因是 CJUIAbility::OnSceneCreated 阶段仓颉运行时初始化卡死,触发系统 LIFECYCLE_TIMEOUT 后强制退出。

我这边建议:首要排查:abiFilters 配置,仓颉工程默认只编译 arm64-v8a,而模拟器是 x86_64 架构。如果未配置 x86_64,运行时加载的 SO 库架构不匹配,会导致解析失败或运行时异常。

如果 abiFilters 已配置仍崩溃的话,那解决步骤(按优先级):

升级模拟器版本

仓颉对系统镜像版本要求严格。进入 DevEco Studio → Tools → Device Manager,删除旧模拟器,重新下载最新镜像(建议 API 12+ 或官方推荐的仓颉适配版本)。

升级 DevEco Studio + 仓颉插件

仓颉处于快速迭代期,旧版 IDE/插件存在大量模拟器兼容 Bug。确保:

DevEco Studio 为最新 Release 或 Beta 版

仓颉插件(Cangjie Plugin)与 IDE 版本匹配

清理重建项目

# 删除构建缓存
rm -rf entry/build entry/.cxx
# 在 DevEco 中执行 Build → Clean Project → Rebuild Project

检查模拟器架构

确认模拟器是 x86_64 而非 ARM。部分旧版模拟器镜像可能默认 ARM,即使宿主机是 x86_64。

根本建议:改用真机调试

仓颉语言目前在模拟器上的支持处于尝鲜/不稳定阶段,华为官方文档和社区反馈均表明:

“仓颉工程默认编译架构为 arm64-v8a,因此在使用 x86 模拟器时…需要编译出 x86_64 版本的 so”

“如果你遇到了运行失败的问题,可以尝试更新真机设备或者模拟器的版本”

如果模拟器持续无法运行,强烈建议:

使用 真机(HarmonyOS NEXT 设备) 调试仓颉应用

真机需开启开发者模式,并在 DevEco 中配置自动签名

真机运行仓颉应用的稳定性远高于模拟器

如果项目允许,降级到 ArkTS

如果这不是一个必须使用仓颉的硬性需求,社区普遍反馈:

“仓颉项目目前还不完整,处于尝鲜阶段,建议使用 arkts 语言进行开发看下。切换成 arkts,预览器可以正常使用了,果然是仓颉的问题”

ArkTS 在模拟器上的成熟度远高于仓颉,如果项目时间紧,这是最务实的选择。
你的崩溃日志与社区大量 “仓颉模拟器 LIFECYCLE_TIMEOUT” 案例高度一致,属于运行时初始化层面的已知问题,调整业务代码无法解决,需要从工具链版本和运行环境入手。

从日志分析,这是 OpenHarmony/HarmonyOS 仓颉(Cangjie)语言应用在模拟器中闪退的问题。

可能原因与排查方向

原因一:模拟器不支持仓颉运行时某些特性

仓颉(Cangjie)语言对底层线程模型、内存管理有特定要求,模拟器(尤其是 x86 转译层)可能未完全实现。 排查:检查 DevEco Studio 模拟器版本是否支持 Cangjie 应用,尝试更新到最新版模拟器。

原因二:Ability 初始化阶段阻塞

UIAbilityThread:AbilityTransaction 未完成,可能:

  • onCreate/onWindowStageCreate 中有同步网络请求或耗时操作
  • 资源加载死锁(如同时请求 GPU/图形资源与仓颉运行时初始化冲突) 排查:检查 EntryAbility 中是否有以下代码:
// 避免在 Ability 生命周期中执行:
// - 同步 socket 连接
// - 死锁的锁操作
// - 未初始化的全局变量阻塞

原因三:x86_64 兼容库问题

libcangjie-runtime.so 在 x86_64 模拟器上可能存在 ABI 兼容性问题。 排查:

  1. 确认 build-profile.json5 中是否配置了 x86_64 架构:
"buildOption": {
  "arkOptions": {
    "compatibleSdkVersion": "..."
  }
}
  1. 尝试在真机(arm64)上运行,看是否复现

原因四:模拟器资源不足

日志中 CPU 占用率几乎为 0%,但线程卡在 sem_timedwait,可能是:

  • 模拟器分配的内存/CPU 不足
  • GPU 加速未开启导致图形初始化超时

建议的排查步骤

优先级 操作 目的
1 真机运行测试 确认是模拟器特有问题还是代码问题
2 检查 EntryAbility 的 onCreate/onWindowStageCreate 移除所有网络/耗时操作,看是否还闪退
3 更新 DevEco Studio 和模拟器到最新版 修复已知的 Cangjie x86 兼容问题
4 查看完整崩溃日志(crash log) 搜索 FaultLog 或 AppFreeze 相关日志
5 尝试在模拟器设置中开启 “Cold Boot” 或增加内存 排除模拟器状态污染

需要补充的信息

为了更精准定位,请提供:

  1. 完整的崩溃日志(特别是 FaultLog 或 HiLog 中 FATAL/ERROR 级别日志)
  2. EntryAbility 的代码(特别是 onCreate 和 onWindowStageCreate 方法)
  3. DevEco Studio 版本 和 模拟器镜像版本
  4. 该应用是否在真机上能正常运行?

目前最可能的原因是:仓颉应用在 x86_64 模拟器上的运行时兼容性问题,或 Ability 初始化阶段存在阻塞主线程的操作。建议优先在真机上验证。

开发者您好,建议您分析下错误日志,可以参考我的这篇实战文章(把Debug改为Error):

使用DevEco Studio的HiLog功能

UIAbility 一直卡在 AbilityTransaction:日志里 Current Running 一直是 UIAbilityThread:AbilityTransaction,说明页面创建流程没走完就崩溃了。

可能的问题:

  1. 启动页或 OnSceneCreated 里做了阻塞操作:比如同步等网络连接、同步读文件、等待子线程结果、死循环、锁没释放。
  2. 模拟器环境不满足启动依赖:如果 tcpchat 启动时就连 socket、读本地库、调用只支持真机的能力,模拟器上可能一直等,表现成“打开就闪退”。
  3. x86_64 模拟器兼容性问题:日志里加载的是 x86_64 下的仓颉运行时。如果项目里有 native so、三方库,或者某些能力只在 arm/真机上验证过,也可能导致模拟器启动异常。

建议按照以下方案进行排查看看:

  1. 启动阶段先注释掉网络连接、TCP 初始化、数据库初始化、三方库初始化,逐个恢复排查。
  2. 如果项目用了 native 库,确认有 x86_64 版本,不是只有 arm64。
  3. 用真机再跑一次。如果真机正常、只有模拟器闪退,基本就不是页面语法问题,而是模拟器兼容性或启动依赖问题。
  4. 补看应用崩溃前最后一条业务日志。现在这份日志只有系统调度信息,缺少你自己代码里的报错点。

该闪退通常因模拟器网络限制或ohos.net.socket API调用与鸿蒙Next兼容性问题引起。请确认已正确添加ohos.permission.INTERNET权限,并检查TCP连接代码是否使用了废弃或模拟器不支持的接口(如直接操作FD)。若问题持续,真机运行可验证。

根据日志,主线程在 CJThreadParkInForeignThread 中因 sem_timedwait 阻塞,当前正在执行的 UIAbilityThread:AbilityTransaction 事件未完成(completeTime 为空),导致后续UI任务无法调度,最终闪退。该阻塞源自仓颉运行时的 CJ_SchdpollWait,说明应用可能在UI线程中执行了同步阻塞的网络操作(如TCP connect/recv),使主线程陷入等待,触发系统无响应保护而退出。解决方向:将TCP连接与数据收发移至子线程或异步任务,避免阻塞UI线程,并检查模拟器网络权限配置。

回到顶部