ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

开发工具选型与排错指南:覆盖Excel、Hermes、鸿蒙及老项目

开发工具选型与排错指南:覆盖Excel、Hermes、鸿蒙及老项目 做开发这些年我越来越觉得“开发使用工具”这句话的份量不亚于代码质量。工具选得好、用得顺一天能省下两三个小时工具选错或者用不明白光环境排查就能把人逼疯。这不这个月我就连着处理了五个和工具相关的糟心事——Excel 开发工具里插入对象一直报错、网页开发工具调试控制台一片红、Hermes 引擎不知道配合什么工具才能看到日志、翻老项目时遇到 SWF 和 EXE 的历史遗留工具链、还有一台鸿蒙手机始终连不上 DevEco Studio。把这些踩坑过程整理一下对正在和开发工具搏斗的朋友应该有点参考价值。1. 开发工具选型先想清楚你要解决什么1.1 开发工具不是单点是整条链路很多人挑工具的习惯是“听说哪个火就用哪个”但实际开发里工具的价值取决于它是不是匹配你的开发场景。比如你用 Excel 做数据处理那么 Excel 的“开发工具”选项卡和 VBA 就是生产力工具你在写网页Chrome DevTools 和 VS Code 就是日常主力你在做鸿蒙应用DevEco Studio 就是绕不开的入口。工具之间还要能衔接。这些年我经历过最痛苦的项目不是代码难写而是“写完代码不知道怎么跑、跑起来不知道怎么看日志、出了日志不知道用什么分析”。所以选工具的第一步不是比较哪个更好而是把整条链路列出来写代码用什么、构建用什么、调试用什么、发布用什么。那怎么列你就问自己三个问题我的核心工作发生在哪个环境这个环境官方推荐的调试入口是什么我需要和现有工具链里的哪些环节对接这三个问题能回答清楚工具选型基本不会跑偏。比如做 React Native 开发核心环境是移动端和 Metro那么调试入口就有 Chrome DevTools 和 React Native DevTools还需要配合 Flipper 看网络和存储。如果你非要拿老式桌面编辑器去调 Hermes 引擎效果自然大打折扣。工具不是越多越好而是链条越顺越好。1.2 我在几个典型场景下的工具组合下面是我在实际项目里用过的几套组合完全可以作为你选型的起点。第一个场景是前端网页开发。我的主力是 VS Code配一个内置终端和几个轻量插件调试永远打开 Chrome DevTools也就是常说的 F12。遇到布局渲染问题优先看 Elements 和 Computed遇到网络请求问题看 Network 面板里的时间线和响应体遇到控制台报错切到 Sources 打断点。这套组合最稳不用额外装太多东西。第二个场景是移动端和鸿蒙应用。做安卓或者鸿蒙Android Studio 或 DevEco Studio 是绕不开的真机调试时需要把手机连接起来。这里面最容易出问题的不是代码而是设备驱动和开发者模式的开关。后面 2.5 小节我会专门讲鸿蒙手机怎么连。第三个场景是办公自动化和数据分析。很多非软件行业的朋友也用“开发”这个词他们的开发工具其实就在桌面软件里。比如 Excel 的“开发工具”选项卡可以录制宏、写 VBA、插入 ActiveX 控件。这个组合的好处是零成本、随开随用坏处是一旦控件插入报错排查起来也相当隐蔽。第四个场景是老项目维护。如果你还在维护 2015 年以前的 Flash 项目或者需要把脚本打包成 Windows 可执行文件那么 SWF 开发工具比如 JPEXS 反编译器、Adobe Animate和 EXE 打包工具Inno Setup、NSIS就得长期留在硬盘里。这部分我会在 2.4 小节单独展开。这四个场景并不互斥但每套工具链的调试方式、报错日志、常见坑都不一样。先把场景定住再到具体工具里找答案效率会高很多。2. 高频开发工具的实操细节与排错2.1 Excel 开发工具报错“不能插入对象”怎么办Excel 的“开发工具”选项卡里有两个高频操作一个是录制宏一个是插入 ActiveX 控件比如按钮、复选框、文本框。很多人第一次用兴冲冲点“插入”里的表单控件按钮结果弹出“不能插入对象”的报错整个人就懵了。我试过很多次这个报错其实不怪 Excel “不会用”而是下面几个原因在捣鬼。第一个原因是工作簿格式不支持。如果你打开的是 .xlsx而且是通过“另存为”转出来的老格式文件某些控件会直接无法插入。更常见的是你在一个兼容模式Compatibility Mode的文档里操作Excel 会自动限制 ActiveX 功能。解决办法很简单把文件另存为“Excel 启用宏的工作簿.xlsm”再重新打开或者干脆新建一个 .xlsm 再测试控件。第二个原因是受保护视图。从网上下载的文件、从聊天工具接收的文件、放在共享盘里的文件经常会被 Excel 自动标记为“受保护视图”。在受保护视图下ActiveX 控件是默认禁用的你想插入对象就会报错。处理方法是找到“文件 - 信息 - 保护工作簿”或者点右上角提示条里的“启用编辑”把文件变为可编辑状态然后关闭再打开再试一次。第三个原因是 Excel 版本和控件位数不匹配。64 位 Office 对某些第三方 ActiveX 控件支持得比较差尤其是一些老控件。如果换到 32 位 Office 就好了但有些公司强制 64 位那你可以改用表单控件替代 ActiveX 控件因为表单控件不受这个限制功能也够用。还有一个隐患是系统缺少运行库比如 Visual Basic for ApplicationsVBA相关组件不全也会引发这类报错。这时候可以到“控制面板 - 程序和功能 - Office 更改 - 修改”里检查是否安装完整的 VBA 组件修复一下。另外有个细节在“开发工具 - 宏安全性”里如果禁用了所有宏ActiveX 的初始化也会受影响。建议先设为“禁用宏并发出通知”或者临时启用“启用所有宏”来做排查。如果你只在工作的时候用排完报错记得把宏安全性调回保守状态。这个顺手操作很多人会忽略。2.2 网页开发工具浏览器开发者模式里的隐藏效率网页开发工具最常用的就是 Chrome DevTools打开方式不多说了F12 或者右键“检查”。这里挑几个实战里提升效率的点。一是 Network 面板里的“筛选”和“持久化”技巧。很多人看接口请求刷新页面以后日志就没了这是因为勾选了 Preserve log 和设置禁用缓存。排查线上问题时这两个开关能救大命。另外Network 面板支持按发起者排序可以快速找到是哪个脚本发起的请求。二是 Sources 面板的断点调试。Console 里输出一大堆对象不如直接在关键的代码行打断点。Chrome DevTools 里的断点可以设置条件比如“只在值等于 xxx 的时候停下”。这样一来循环几百次的场景就不用一次一次点“继续”了。这个功能很多人没用过但真的很实用。三是元素面板的“强制状态”选项。调试 CSS 的 :hover、:focus 状态时不需要真的去触发鼠标直接在元素上右键选择“强制状态”就能模拟状态。配合样式面板里的“颜色调色板”很快就能定位视觉问题。四是移动端模拟器。在 DevTools 里按 CtrlShiftMWindows或 CmdShiftMMac可以快速切换设备模拟。这些技巧不改变开发工具的生态但能让你每天省下大量“手动重复操作”的时间。我的习惯是每次调试前先把这几样默认设置调好再开始干活比临时翻设置高效很多。2.3 Hermes 引擎配合什么开发工具才能顺畅调试先解释一下 Hermes 是什么它是 React Native 常用的 JavaScript 引擎由 Meta 开源专门针对移动端优化了启动时间和内存占用。它和 V8、JSC 这类引擎类似都负责跑 JS 代码但 Hermes 有自己的字节码格式和调试协议。所以问题就来了以前你用 Chrome DevTools 调 JS 时是直接通过 WebSocket 连 JSC 或 V8到了 Hermes你得用支持 Hermes 的调试工具。那么 Hermes 配合什么开发工具使用我实测下来有三个组合比较靠谱。第一个是 Chrome DevTools 的 chrome://inspect 页面。打开 React Native 项目启用 Hermes 后在终端启动 Metronpm start 或 npx react-native start然后运行 app再在 Chrome 里打开 chrome://inspect点选对应的 Hermes 页面就能看到 JS 的 Console 日志和断点调试。这个方案最大的优点是免安装缺点是连接有时不稳定需要在手机或模拟器上打开开发者菜单再操作。第二个是 React Native DevTools。新一代 RN 调试工具很多命令会自动切换。你只需要在项目里装好相关依赖启动后选择 Hermes 模式它会把调试界面和 React DevTools 整合在一起。这个工具更适合看组件树和 props 变化纯 JS 变量调试和 Console 日志也不差。第三个是 Flipper。Flipper 是 Meta 出的移动端调试平台对 RN、安卓都很友好。它在 Hermes debugger 插件里集成了 Hermes 的调试能力还能同时看网络、数据库、SharedPreferences 等。对于团队协作或复杂 bug 排查Flipper 的信息密度更高。不过 Flipper 的配置略重新手容易在安装插件这一步卡住。建议先跑通 chrome://inspect再决定要不要上 Flipper。我想强调一个点启用 Hermes 后JS 代码在发布版里是预编译成字节码的所以调试时要把 Hermes 的调试开关开启一般是在 metro.config.js 或 app 的启动参数里设置。如果发现“点了调试没反应”大概率不是工具没选对而是 Hermes 没有进入调试模式。我这个项目里就遇到过chrome://inspect 能看到设备但 Console 不输出日志最后发现是 dev 模式被关掉了。这个坑非常典型。2.4 SWF 和 EXE 开发工具老项目的“急救包”先说 SWF。Flash 时代的技术退了大潮但很多公司内部培训课件、旧版活动页面里的 SWF 文件还躺在服务器上。要改里面一句 ActionScript或者换一张图片你不可能再全量重装老版 Flash 开发环境。我推荐先用 JPEXS Free Flash Decompiler这个工具免费开源支持反编译 SWF 的动作脚本、提取素材、甚至替换内部资源。它不需要安装 Air直接打开 swf 就能预览。它的原理是把 SWF 的 tags 解析出来你可以把编辑后的文件重新保存成 swf。当然涉及复杂逻辑修改时还是建议用 Adobe Animate 重新导出JPEXS 适合小修小补。再说 EXE 开发工具。这里不指编程语言里的编译器而是将脚本或源码打包成 Windows 可执行文件的工具。我常用的是 Inno Setup 和 NSIS。Inno Setup 更看重安装界面和卸载功能配置脚本接近自然语言中文支持也好NSIS 则更灵活可以写很复杂的安装逻辑还支持调用 DLL。还有一个场景是把 Python 脚本打包成 exe这时候 PyInstaller 是首选。你会看到热词把 SWF 和 EXE 放在一起其实老项目里很常见用 Flash 做的课件最后打包到一个 EXE 播放器里播放器里直接跑 SWF。这类 EXE 一旦被杀毒软件误删恢复起来非常棘手。我的建议是开发老项目时把源文件和打包脚本一起放在版本库并给杀毒软件设置白名单否则每次重新打包都要跟杀毒软件“搏斗”一轮。有用的组合是SWF 内容修改用 JPEXS打包发布用 Inno Setup 或 NSIS脚本化再用 PyInstaller。无论哪一个都要注意“老格式”和“新系统”的兼容问题。比如 Windows 10 以上系统对老版 Flash 播放器支持不完整你最好把 Flash Player projector 版本固定并且在虚拟机里做一个 XP/Win7 环境做回归测试。别问为什么问就是我被激活失败的 Play 键坑过一整天。2.5 鸿蒙开发工具连鸿蒙手机从识别到运行的一条龙排查用 DevEco Studio 做鸿蒙应用最基础也最容易出问题的环节就是真机连接。我第一次连的时候手机插上去DevEco Studio 里“设备列表”一片空白当时差点以为要重装驱动程序。后来多试了几台设备总结出一套固定流程。前提工作有四个手机开启“开发者模式”关于手机 - 连续点击版本号 7 次直到提示“已进入开发者模式”然后在“系统和更新 - 开发人员选项”里打开“USB 调试”同时保持电脑已安装 DevEco Studio 要求的 hdc 工具最后用原装数据线而不是普通充电线因为很多连接不上都是数据线只能充电数据通道没建立。连接以后如果设备列表里仍没有手机有三步排查逻辑。第一步检查手机端 USB 模式是否选择了“传输文件MTP”有些机型默认是“仅充电”必须手动改。第二步检查驱动。Windows 下打开设备管理器看有没有带黄色感叹号的设备有的话需要安装 hdc 驱动或鸿蒙专属的 USB 驱动驱动路径一般就在 DevEco Studio 的 sdk 目录里。第三步检查 hdc 端口是否被占用或者网络模式不匹配。在命令行执行 hdc list targets能返回一串设备序列号就说明连接成功如果返回 “Empty”说明手机端弹窗没有点“允许 USB 调试”。开发者选项里开关重新关开再重新插拔一下很多问题就没了。还有一个容易踩的点如果电脑上同时装了 Android SDK 的 Platform Toolsadb 和 hdc 可能抢端口。DevEco Studio 的 hdc 默认端口是 8710和 adb 用的 5037 不冲突但如果环境变量里混用了 adb部分机型会识别异常。我建议在项目脚本里固定使用 DevEco 自带的 hdc 路径别图省事直接敲 hdc。另外连着调试的时候手机锁屏导致断开是正常现象可把“屏幕不休眠”打开再继续跑自动化。这套流程理顺后从插线到跑起第一个 HelloWorld基本在五分钟内能完成。3. 把开发工具串成一条流水线我的效率提升思路3.1 命令行封装把重复操作变成一键脚本工具用多了你会发现最耗时的不是某个工具的操作而是在工具之间来回切换。比如我需要改一个 Excel 宏改完还要跑一遍网页端的接口最后再打包 exe 发给同事。中间每次都要打开好几个窗口手动点来点去。这时候我习惯把能命令化的部分都封装成脚本。Windows 下我常用 PowerShell 或 .bat 文件macOS/Linux 下用 bash。脚本内容不用复杂就是把启动命令、调试命令、打包命令按顺序链起来。举个例子在鸿蒙项目里我可以写一个 start_dev.cmd先启动 DevEco Studio 的 hdc 服务再检查设备在线然后自动打开 DevEco 项目目录最后打开终端。虽然听起来很简单但每天节省两分钟一个月就是将近一个小时。Hermes 调试也一样我可以把初始化 Metro 和打开 chrome://inspect 的浏览器地址合并到一个命令里避免每次手动复制端口号。这类封装的原则是“把固定的操作沉淀下来把不固定的参数留在配置文件里”。别为了封装而封装如果一个操作你一周只做一次那就不值得如果一天要做三次以上那必须写脚本。3.2 代码格式化、版本管理与自动化检查除了运行和调试开发工具的另一半是质量保障。我见过很多小团队代码格式化靠人肉版本管理靠复制粘贴最后工具链再厉害也白搭。我的习惯是固定一套插件和命令比如前端项目里用 Prettier ESLint提交代码前用 git hooks 跑一遍检查脚本项目里用 ShellCheck Excel VBA 这块也可以用 Rubberduck 这个社区工具做代码审查和测试不过它的学习成本比较高适合重度 VBA 项目。版本管理这里我特别想提一个场景SWF 和 EXE 老项目。很多人觉得 Flash 项目不用上 Git其实大错特错。老项目改资源、调脚本最容易产生“改坏了不知道怎么回滚”的问题。即使你没有完整的自动构建用 Git 做文件层面的版本管理也能救你一次。我曾经在改一个课件 SWF 时因为没做版本管理改了 20 多张图片后发现有一步错了最后只能一个个对比。上了 Git 以后只需要 git checkout 一个提交就能回到之前的状态。自动化检查的头号抓手是日志。Excel 宏报错时可以用 On Error 语句把错误写到文本Hermes 调试时用 React Native 的日志级别过滤浏览器里用 console.info / console.warn / console.error 区分级别。这样排查问题时按级别筛选日志比海量刷屏要舒服得多。很多新手吃“看不懂日志”的亏本质上是没有先建立日志过滤的习惯。3.3 模拟器与真机配合的快捷键套路开发工具里还有一类常用功能是“快速切换运行环境”。在网页开发中我一般在 Chrome DevTools 的设备模拟器里过一遍响应式再用浏览器原生窗口拖拽调整。在移动端我会先开 Android 模拟器做快速验证再连真机跑性能。鸿蒙设备也有 DevEco 内置的模拟器但说实话很多场景真机比模拟器更接近用户实际体验尤其是摄像头、传感器、推送这类能力。配合工具的效率体现在快捷键和“双屏”布局上。DevEco Studio 和 Android Studio 都是基于 IntelliJ 的很多快捷键通用比如 ShiftF10 运行、CtrlR 重新加载。真机调试时我习惯把“运行配置”固定成“当前连接设备”省去每次弹窗选设备。模拟器里的“摇一摇”“旋转屏幕”也都有快捷键用熟了之后不用再拿鼠标慢慢点。工具就是这样的真正让你高效的不是哪个按钮而是你对入口和快捷键的熟悉度。4. 开发工具常见问题速查与避坑清单4.1 高频报错排查表下面把我在各种项目里遇到的高频开发工具问题整理成一个速查表。这里面的每一行都是真实遇到过的照着排除基本能定位。场景典型现象可能原因优先排查方式Excel 开发工具插入 ActiveX 控件提示“不能插入对象”文件格式不是 .xlsm、受保护视图、64 位 Office 兼容性、宏安全设置另存为 .xlsm启用编辑改用表单控件修改宏安全设置网页开发工具Console 报错但找不到哪个请求引起网络面板未勾选 Preserve log、跨域限制导致请求未发起打开 Preserve log查看 Network 里红色失败的请求配合 Sources 打断点Hermes 调试打开 chrome://inspect 看到设备但 Console 无输出Hermes 未进入调试模式、dev 开关被关闭检查 Metro 启动参数和 Hermes 调试开关重启 Metro 并重新构建 appSWF 开发老 SWF 无法播放或修改Flash 插件被禁用、文件损坏用 JPEXS 打开看能否解析使用 Flash Player projector 固定版本测试EXE 打包打包后的 exe 被杀毒软件删除未加白名单、安装脚本触发启发式告警将输出目录加入白名单改用 NSIS 或 Inno Setup 官方模板签名证书更稳鸿蒙真机DevEco 设备列表为空未打开 USB 调试 / MTP 模式、hdc 驱动没装、端口冲突按 2.5 小节的固定流程排查开发者模式、USB 调试、MTP、驱动、hdc list targets4.2 避坑经验我踩过的工具坑避坑这件事光看文档不够必须自己跌过才知道疼。我分享三个印象比较深的。第一个坑Excel 的宏安全和对象库被“优化”掉。有一次我写了一个很顺手的 VBA 工具第二天打开发现按钮全没了报错还是“找不到对象”。原因是同事用清理软件把 Office 的 VBA 组件给删除了。这类问题重装 Office 很麻烦建议在开发 VBA 工具前先用官方安装程序做一次“修复安装”并确保“共享功能 - VBA”被勾上。以后在公司电脑上做宏工具最好把依赖组件清单写进说明文档。第二个坑Hermes 调试时换了工具链反而更乱。新手容易同时开多个调试工具造成“日志重复”或“互相干扰”。比如 chrome://inspect 和 Flipper 同时连接同一个 Hermes 实例就会抢连接。后来我的习惯是“一进一出”先只开一个调试器确认能出日志再叠加其他工具避免一开始就是大混战。遇到过好几次把多余的调试器关掉日志马上变正常。第三个坑老项目里乱升级工具。有次为了图方便把老 SWF 项目的反编译工具从 JPEXS 免费版换到某个付费全家桶结果不仅没提升效率还因为新工具把特殊 tag 解析错导致我改坏了资源。老项目维护的第一原则是“能不动就不动”工具也同理。只要现有工具能满足需求就别为了“更好”而升级。我自己的习惯是遇到任何报错第一反应不是去卸载重装而是按“格式/权限/驱动/版本/日志”这个顺序去排查。如果你也在 Excel 控件、网页调试、Hermes、老项目打包或者鸿蒙真机连接上卡过壳可以试试上面整理的这些排查顺序大多数问题能少折腾一整晚。最后再分享一个小习惯每解决一个工具类问题就把现象和解决办法写进自己的笔记下次遇到直接搜索。这个看似土气的方法帮我省下了大量重复查资料的时间。
返回列表