Daily Stock Analysis macOS 启动故障 SOP
Daily Stock Analysis macOS 启动故障 SOP
适用场景:
macOS 上 Daily Stock Analysis.app 无法启动,出现:
RBSRequestErrorDomain Code=5 "Launch failed."
NSPOSIXErrorDomain Code=163
"Launchd job spawn failed"
或者 App 内提示:
Health check aborted: backend exited with code 255
一、第一步:去除 macOS 隔离属性
打开终端执行:
APP="/Applications/Daily Stock Analysis.app"
xattr -dr com.apple.quarantine "$APP"
然后尝试:
open "$APP"
如果正常启动
处理结束。
如果仍然无法启动
继续第二步。
二、确认是 Backend 启动失败
执行:
find "$APP/Contents" -type f -perm -111 -print
对于 Daily Stock Analysis,Backend 通常位于:
$APP/Contents/Resources/backend/stock_analysis/stock_analysis
直接运行:
"$APP/Contents/Resources/backend/stock_analysis/stock_analysis"
这是整个 SOP 最关键的一步。
不要继续反复执行 xattr,直接运行 backend 可以看到真正的底层错误。
三、判断是否为 Code Signature 问题
如果看到类似:
[PYI-xxxxx:ERROR] Failed to load Python shared library
并且进一步出现:
missing code signature
例如:
missing code signature in
.../_internal/Python.framework/Versions/3.12/Python
则确认:
PyInstaller 内置 Python.framework 的 Code Signature 缺失或失效。
四、修复 Python.framework 签名
执行以下命令
codesign --force --deep --sign - \
"$APP/Contents/Resources/backend/stock_analysis/_internal/Python.framework"
其中:
--force
强制重新签名。
--deep
递归处理 Framework 内部组件。
--sign -
使用 macOS ad-hoc signature,不需要 Apple Developer 证书。
五、重新启动 App
签名完成后:
open "$APP"
如果 App 正常打开:
SOP 执行结束。
本次实际验证就是在这一步解决的。
六、如果仍然无法启动
只有在第四步无效时,才继续扩大签名范围。
1. 给整个 backend 签名
codesign --force --deep --sign - \
"$APP/Contents/Resources/backend/stock_analysis"
然后测试:
"$APP/Contents/Resources/backend/stock_analysis/stock_analysis"
如果 backend 正常,再:
open "$APP"
2. 最后才考虑给整个 App 签名
codesign --force --deep --sign - "$APP"
然后:
xattr -dr com.apple.quarantine "$APP"
open "$APP"
注意:不要一开始就给整个 App 重新签名。
本次实际情况证明,只签 Python.framework 就已经足够。
七、故障判断速查表
| 现象 | 判断 | 处理 |
|---|---|---|
App cannot be opened |
可能是 Gatekeeper | xattr |
Launch failed |
App 内部启动失败 | 运行 backend |
Code=163 |
launchd 无法正常 spawn | 检查 backend |
backend exited with code 255 |
Backend 自身启动失败 | 直接运行 backend |
Failed to load Python shared library |
PyInstaller Python 加载失败 | 检查 Python.framework |
missing code signature |
Python.framework 签名缺失/失效 | 给 Python.framework codesign |
bad CPU type in executable |
ARM/x86 架构不匹配 | 检查 arm64/x64 |
Library not loaded |
动态库依赖问题 | 检查 dylib |
Permission denied |
执行权限问题 | chmod +x |
八、最终精简版 SOP
以后遇到同样问题,实际上记住下面这套就够了:
APP="/Applications/Daily Stock Analysis.app"
# ① 去除隔离属性
xattr -dr com.apple.quarantine "$APP"
# ② 尝试启动
open "$APP"
如果出现:
backend exited with code 255
就:
# ③ 直接运行 Backend
"$APP/Contents/Resources/backend/stock_analysis/stock_analysis"
如果出现:
Failed to load Python shared library
missing code signature
就:
# ④ 修复内置 Python.framework 签名
codesign --force --deep --sign - \
"$APP/Contents/Resources/backend/stock_analysis/_internal/Python.framework"
最后:
# ⑤ 启动
open "$APP"
核心口诀
Launch failed → 找 Backend → 直接运行 → 看到 missing code signature → 签 Python.framework → 启动。
这次故障的最小有效修复就是第四步,不需要重装 App,也不需要重新签整个 App。
你要保守你心,胜过保守一切。
本文来自博客园,作者:刘俊涛的博客,转载请注明原文链接:https://www.cnblogs.com/lovebing/p/23285193

浙公网安备 33010602011771号