DevEco Studio打包后云真机测试发现团结引擎导出项目中libil2cpp.so 符号il2cpp_memory_pool_*缺失导致Cpp crash,这个问题应该怎么排查

DevEco Studio打包后云真机测试发现团结引擎导出项目中libil2cpp.so 符号il2cpp_memory_pool_*缺失导致Cpp crash,这个问题应该怎么排查 团结引擎导出项目,DevEco打包后云真机测试发现libil2cpp.so 符号il2cpp_memory_pool_*缺失,导致Cpp crash,这个问题应该怎么排查

2025-09-09 01:55:05 55601-56353/hdc E/A00001/com.maoyugame.zlgm/Tuanjie: Could not load symbol il2cpp_memory_pool_set_region_size : do_dlsym failed: Symbol not found: il2cpp_memory_pool_set_region_size, version: null so=/data/storage/el1/bundle/libs/arm64/libil2cpp.so

2025-09-09 01:55:05 55601-56353/hdc E/A00001/com.maoyugame.zlgm/Tuanjie: Could not load symbol il2cpp_memory_pool_get_region_size : do_dlsym failed: Symbol not found: il2cpp_memory_pool_get_region_size, version: null so=/data/storage/el1/bundle/libs/arm64/libil2cpp.so

2025-09-09 01:55:05 55601-56353/hdc E/A00001/com.maoyugame.zlgm/Tuanjie: Failed to load Il2CPP=libil2cpp.so.

2025-09-09 01:55:05 55601-56353/hdc I/C02D11/DfxSignalHandler: DFX_SigchainHandler :: sig(6), pid(55601), processName(com.maoyugame.zlgm), threadName(TuanjieMain).

2025-09-09 01:55:05 3617-3617/hdc W/A01B01/com.ohos.sceneboard/HOME: PageDesktopModel --> findAppInCurrentPage bundleName: com.maoyugame.zlgmabilityName: TuanjiePlayerAbility, moduleName: entry;startAppType: 0; cardId: undefined appIndex: 0, shortcutId:

2025-09-09 01:55:05 3617-3617/hdc W/A01B01/com.ohos.sceneboard/HOME: PageDesktopModel --> searchInFolderComponent 16777230; com.maoyugame.zlgm, not found, return null

2025-09-09 01:55:05 3617-3617/hdc W/A01B01/com.ohos.sceneboard/HOME: PageDesktopModel --> isFoundApp bundleName: com.maoyugame.zlgm abilityName: TuanjiePlayerAbility, moduleName: entry; appIconId: 16777230; cardId: undefined appIndex: 0, shortcutId:

2025-09-09 01:55:05 3617-3617/hdc W/A01B01/com.ohos.sceneboard/HOME: PageDesktopModel --> searchInCurrentDeskTopPage icon 16777230, 16777230,undefined, com.maoyugame.zlgm

2025-09-09 01:55:05 3617-3617/hdc W/A01B01/com.ohos.sceneboard/HOME: PageDesktopModel --> searchInCurrentDeskTopPage 16777230, {“bundleName”:“com.maoyugame.zlgm”,“oldBundleNames”:[],“abilityName”:“TuanjiePlayerAbility”,“isSelect”:false,“isTransparent”:false,“downloadProgress”:0,“appStatus”:0,“shortcutId”:"",“appIndex”:0,“intent”:"",“size”:0,“ctime”:0,“mtime”:0,“themeId”:"",“themeFormId”:"",“typeId”:0,“moduleName”:“entry”,“keyName”:“com.maoyugame.zlgmTuanjiePlayerAbilityentry0”,“badgeNumber”:0,“area”:[1,1],“appName”:“zlgm”,“appIconId”:16777230,“appLabelId”:16777222,“kindId”:-1,“bundleType”:0,“applicationName”:“zlgm”,“installTime”:“Tue Sep 09 2025 01:54:34 GMT+0800”,“page”:1,“column”:2,“row”:0,“isUninstallAble”:true,“isSystemApp”:false,“applicationIconId”:16777230,“applicationLabelId”:16777222,“enableNewAppInstance”:false,“infoId”:“670100f0-8484-4f94-9d9b-8dfabd304535”,“areaType”:0,“x”:0}, true, null

2025-09-09 01:55:05 3617-3617/hdc W/A04200/com.ohos.sceneboard/WINDOW: bottomLeft: 31, bottomRight: 31 to 0. reason: transitionInFinish, extra info: TuanjiePlayerAbility/com.maoyugame.zlgm/entry/0(persistentId: 817)(containerId: 813)

2025-09-09 01:55:05 3617-3617/hdc W/A01C06/com.ohos.sceneboard/ICON: AppIconEvent --> onInactive bundleName:com.maoyugame.zlgm, [SCBSceneContainerSession] set icon from hidden to [show], caller: transitionInFinish, extra info: undefined

2025-09-09 01:55:05 1125-56354/hdc E/C01712/bgtaskmgr_service/WORK_SCHEDULER: [OnAppGroupChanged:47]OnAppGroupChanged no work found, bundleName = com.maoyugame.zlgm

2025-09-09 01:55:05 56388-56388/hdc I/C02D11/DfxFaultLogger: Process name:com.maoyugame.zlgm

2025-09-09 01:55:05 56388-56388/hdc I/C02D11/DfxProcessDump: Finish dump stacktrace for com.maoyugame.zlgm(55601:56353).

2025-09-09 01:55:05 56388-56388/hdc I/C02D11/DfxFaultLogger: Finish report fault to FaultLogger com.maoyugame.zlgm(55601,20020036)

2025-09-09 01:55:05 56388-56388/hdc W/C02D11/DfxFaultLogger: hisysevent write result=0, send event [FRAMEWORK,PROCESS_KILL], pid=55601, processName=com.maoyugame.zlgm, msg=Kill Reason:Cpp Crash


4 回复
  1. DevEco 打包出来的 libil2cpp.so 缺少了 Unity 团结引擎的 il2cpp_memory_pool_* 系列符号,导致运行时 dlsym 失败,引发 Cpp Crash。
do_dlsym failed: Symbol not found: il2cpp_memory_pool_set_region_size
do_dlsym failed: Symbol not found: il2cpp_memory_pool_get_region_size
Failed to load Il2CPP=libil2cpp.so.
  1. 排查思路: 确认符号是否存在,如果原始 Unity 导出的 so 有,但 DevEco 打包后的没有 → 打包过程裁剪问题,如果导出的时候就没有 → Unity 导出配置或版本不支持。

关闭裁剪/混淆:将混淆关闭后尝试运行

增加调试日志


il2cpp_memory_pool_* 符号缺失,表明 SO 文件在编译过程中被错误剥离符号

解决方案: 在 build-profile.json5 中检查 nativelib 模块配置,确保 debugSymbol 开启且 strip 设为 false,防止 Release 模式自动剥离符号:

"nativelib": {
  "debugSymbol": {
    "strip": false  // 关闭符号剥离
  }
}

检查libil2cpp.so是否包含il2cpp_memory_pool_符号:使用readelf或nm工具分析so文件符号表。确认编译配置中是否启用了内存池功能,检查Unity版本与鸿蒙SDK的兼容性。验证构建脚本是否正确导出所有必要符号,确保没有链接器优化导致的符号剥离。

从错误日志看,libil2cpp.so缺少il2cpp_memory_pool_set_region_size和il2cpp_memory_pool_get_region_size符号导致加载失败。建议按以下步骤排查:

  1. 检查团结引擎版本是否与DevEco Studio兼容,确保使用的是支持HarmonyOS Next的最新版本
  2. 确认libil2cpp.so的编译配置,检查是否启用了内存池相关功能选项
  3. 验证NDK工具链版本,确保与团结引擎的编译要求匹配
  4. 检查打包过程中是否有符号剥离或优化操作,尝试关闭LTO等优化选项重新编译
  5. 使用readelf或nm工具分析生成的libil2cpp.so,确认符号是否确实缺失

建议重新导出项目并完整编译,确保所有依赖项正确链接。

回到顶部