文章摘要
这篇文章介绍了一种方法,可以检测Mac上尚未更新修复系统卡顿问题的Electron应用。
文章总结
检测Mac上未修复系统卡顿问题的Electron应用
问题背景
Electron应用在Tahoe系统上会导致全局性能卡顿。该问题已在以下版本中修复: - 36.9.2 - 37.6.0 - 38.2.0 - 39.0.0 - 所有高于39的版本
临时解决方案
在系统启动时运行:
shell
launchctl setenv CHROME_HEADLESS 1
这会禁用Electron应用的窗口阴影(影响美观),但能解决问题。
持久化解决方案
创建启动代理文件:
xml
<!-- ~/Library/LaunchAgents/environment.fix-electron-resource-hog-bug.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>environment.fix-electron-resource-hog-bug</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>setenv</string>
<string>CHROME_HEADLESS</string>
<string>1</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
然后加载:
shell
launchctl load ~/Library/LaunchAgents/environment.fix-electron-resource-hog-bug.plist
检测脚本
使用以下命令检测问题应用:
shell
mdfind "kMDItemContentType == 'com.apple.application-bundle'" | while read app; do
electronFiles=$(find "$app" -name "Electron Framework" -type f 2>/dev/null)
...
done
更可靠的检测方法
检查二进制文件中是否包含"_cornerMask"字符串:
shell
for f in /Applications/*/Contents/Frameworks/Electron\ Framework.framework/Versions/A/Electron\ Framework; do
...
if rg -a -q -F "_cornerMask" -- "$f"; then
echo "❌ 存在问题"
else
echo "✅ 已修复"
fi
done
已知问题应用示例
(截至2025年10月1日)
❌ OpenMTP.app: Electron 18.3.15
❌ DaVinci Resolve.app: Electron 36.3.2
❌ Visual Studio Code.app: Electron 37.3.1
❌ Slack.app: Electron 38.1.2
...
注:部分应用可能使用自定义Electron分支,版本号不能完全说明问题。
评论总结
这篇评论主要围绕Electron框架在macOS应用中的使用和更新问题展开讨论,主要观点如下:
- 对Electron应用普遍存在的担忧
- 用户对许多流行应用使用Electron表示惊讶和失望(评论3:"It's surprising and disappointing...")
- 有用户直接列出多个使用Electron的知名应用(评论2:"Msty.app, LM Studio.app...")
- 更新滞后问题
- 用户发现Ollama GUI的Electron版本落后15个版本(评论5:"Ollama GUI is about 15 versions out of date")
- Docker Desktop更新前后的Electron版本对比(评论8显示从34.5.4更新到37.2.6)
- 解决方案讨论
- 开发者提供检测Electron版本的NPM工具(评论10:"I wrote a NPM package called which-electron")
- 建议通过监控Chromium漏洞来发现Electron安全问题(评论11:"Monitoring Chromium CVE patches is a good way...")
- 对苹果QA的批评
- 用户质疑苹果为何没在QA中发现这个影响广泛的bug(评论3:"surprising and disappointing that Apple didn't catch a bug like this")
- 用户态度分歧
- 消极态度:有用户想卸载所有Electron应用(评论7:"I'd settle for 'Detect Electron apps on Mac' so I can uninstall them")
- 积极态度:有用户庆幸自己尚未更新系统(评论9:"So happy I haven't updated yet")
关键引用保留: - 评论3:"This affects popular apps, and many people will have at least one of these apps with outdated Electron frameworks." - 评论5:"I'm not sure how often you are supposed to update your Electron package, but seems like it should be more often than that." - 评论10:"I wrote a NPM package called which-electron... I've been meaning to improve the detector"