用 Sentry 接崩溃上报,勾了 IL2CPP + ARM64,构建直接失败。
报错就卡在这一行:
Path.Combine(gradleProjectPath, 'unityLibrary', 'build.gradle')
搜了一圈,官方 issue 挂着没人修。
那就自己动手。
起因:一个挂着没人修的 issue
我在使用中碰到打包报错问题,并提交了一个 issue: github.com/getsentry/s…
中国版的 Unity 有一个名为"tuanjie"的子版本,该版本源自 2022 年的 Unity 版本。如果我使用这个版本并标记 IL2CPP、ARM64,就会出现构建错误。
问题:为什么偏偏是团结引擎
团结引擎源自 2022 年的 Unity 版本,而 sentry-unity 插件的鸿蒙适配走的是更新版本的 Unity 插件体系。
两边一碰,路径就断了——报错卡在 unityLibrary/build.gradle 这个拼接上。
这里的关键不是"Sentry 坏了",而是"插件的版本假设和团结引擎的版本假设不匹配"。
解法:用 AI 辅助修报错
为了正常使用插件,使用 AI 辅助修复了报错问题,另外也补充完善了鸿蒙平台。使用分支 unity-6000。
经过适配,本地编译出包。构建日志里 Sentry.Unity.Harmony netstandard2.1 succeeded 这一行,是"鸿蒙适配真的成了"的硬证据。
测试:造一次崩溃,看符号化到哪一层
在应用中模拟一次崩溃——在 Awake 里直接写空地址,触发 SIGSEGV。
C# 崩溃,可以看到从 libtuanjie 中逐渐靠近 C# 崩溃位置以及对应行号。
欠缺:鸿蒙 native 层还拿不到符号
鸿蒙平台原生崩溃目前没有原生库,native 层面的崩溃堆栈,比如下面这类原生崩溃是找不到符号的:
UnityEngine.Diagnostics.ForceCrash(ForcedCrashCategory.FatalError);
测试设备:HUAWEI Mate 60 Pro+(ALN-AL10)/ OpenHarmony 6.1.1.120 / API-24。
所以现在的状态是:其他平台已通,鸿蒙侧的 native 崩溃符号化还没通。 这块还需要补。
开源仓库
如果你也在对接 Sentry,插件直接拿去用:
分支 unity-6000,MIT 开源。插件本身免费,Sentry 云端平台流量收费。
觉得有用就 点赞 + 在看 + 关注,点赞超过 100,我们继续把鸿蒙 native 崩溃这块的符号化搞定。
你在团结引擎打包时踩过什么坑?评论区提前告诉我,我下次一并处理。