ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

IAR原生跨平台IDE实测:Linux嵌入式开发告别工具链割裂

IAR原生跨平台IDE实测:Linux嵌入式开发告别工具链割裂 做嵌入式开发的朋友应该都懂Linux 和 Windows 之间的工具链割裂有多烦人。尤其当你习惯在 Linux 下工作却发现项目组指定用 IAR 这个 IDE 时往往会陷入两难。过去 IAR Embedded Workbench 的重心一直放在 Windows 上想在 Linux 里用同一套 IAR 编译和调试基本只能靠虚拟机或者各种兼容方案硬凑。所以当听说 IAR 平台推出原生跨平台 IDE、同时支持 Linux 与 Windows 时我第一反应是这个问题终于有人认真解决了。这篇文章我不是来报喜的而是想把我自己这段时间实际验证、迁移、踩坑的经过完整梳理一遍。先解释一下这个变化在行业里意味着什么再把新 IDE 的核心功能拆开讲清楚然后给出在 Linux 上从安装到调试的完整实操路径最后把最容易埋人的坑列成速查表。适合谁看呢如果你正在 Linux 桌面或服务器上做嵌入式开发或者团队正纠结要不要从纯 Windows 工作流往跨平台迁移这篇文章应该能帮你少走不少弯路。我也会明确说清楚哪些情况下不建议你盲目迁移不是所有项目都适合跟风。1. 为什么这件事值得关注——原生跨平台对嵌入式开发意味着什么1.1 过去 Linux 用户用 IAR 的几种“曲线救国”方式先说说以前的日子有多苦。第一个常见方案是虚拟机在 Linux 里装一个 VirtualBox 或 VMware 的 Windows 虚拟机。这个方案能跑但体验确实不怎么样。编译项目时 CPU 和内存被虚拟化层吃掉一截大型工程构建时间明显变长更难受的是 USB 设备透传调试器、串口、逻辑分析仪这类设备在宿主机和虚拟机之间来回切换经常出现识别不了、掉线、驱动冲突的毛病。我见过不少同事为了一个 J-Link 的 USB 透传折腾一下午最后干脆放弃老老实实回到 Windows 双系统。第二个方案是 Wine 兼容层。IAR 在 Wine 下能不能跑部分版本确实能跑但属于“看运气”的范畴。编辑器渲染、字体、文件对话框、USB 驱动这些环节都有可能出现各种奇怪问题。做玩具项目可以试接正式项目调试就非常冒险了尤其是 C-SPY 在断点和内存窗口上的行为一旦出现异常排查起来比写代码还痛苦。第三个方案是只把 IAR 当纯编译器用。先在一台 Windows 机器上生成好工程把编译命令和依赖文件拷到 Linux用命令行工具构建写完代码再拿回 Windows 上调试。这种做法勉强能维持“在 Linux 上写代码”但流程撕成两半改一次配置要来回同步调试阶段基本离不开 Windows。这三个“曲线救国”方案在新 IDE 出现之后都可以退役了但理解它们为什么难受你才会明白原生支持这四个字的分量。1.2 新版跨平台 IDE 解决了哪些实际痛点新推出的原生跨平台 IDE把上面这些妥协方案全部推翻了。它在 Linux 和 Windows 上用同一套原生程序、同一套工程格式、同一套编译器参数这意味着你不再需要辛辛苦苦维护两套环境。对我个人来说最大感受是性能上的差别。原生 Linux 程序的好处是内存和 CPU 调度直接走操作系统不像虚拟机那样隔一层。同一份工程在 Linux 上构建速度和 Windows 不相上下操作界面响应也跟手得多。而且没有了 Windows 虚拟机的常驻内存开销一台普通配置的开发机也能同时开着浏览器查资料、跑着串口终端、挂着 IDE不会动不动卡成幻灯片。第二个痛点是工程一致性。以前团队里有的人用 Windows有的人靠命令行构建不同的编译器版本、不同的工程路径配置经常导致同一份代码在不同人手上编出不一样的结果。现在大家用同一个 IDE 打开同一个工程文件无论是 Windows 还是 Linux编译器选项、链接脚本、预处理器宏定义都是同一套真正做到了“代码从哪台机器打开都一样”。这一点在工程项目审计和质量追溯的时候尤其重要版本追溯不再是靠维护一个“谁改过环境配置”的传说。第三个价值是把 Linux 生态整个接进来。Git 版本控制、CI/CD 流水线、代码静态检查工具、自定义脚本这些本来就是 Linux 的强项。以前这些工具链和 IAR 之间是割裂的现在原生 IDE 可以直接在这套环境里运行编译、测试、自动化发布能形成完整闭环。说白了这次更新不是多加了一个平台这么简单而是把 IAR 从“Windows 专属工具”升级成了真正能融入现代开发流程的跨平台工具链。1.3 对嵌入式开发行业生态的影响从行业角度看原生跨平台 IDE 的出现可能让 IAR 在 Linux 场景下的采用率明显上升。过去很多 Linux 开发者因为工具链原因根本不会考虑 IAR他们更愿意用 GCC、Clang 配合 OpenOCD 的组合。这套组合虽然灵活但编译器优化能力、调试体验和项目自带的 IAR 工程没法无缝衔接需要额外写很多胶水脚本才能把流程串起来。现在有了官方跨平台 IDE等于把这块短板也补上了。对工具链厂商来说这种变化非常务实嵌入式开发的上游工具越来越多地跑在 Linux 上从版本控制到自动化测试都是如此。谁先把 IDE 和这条生态链打通谁就在下一代开发流程里占据有利位置。对我们使用者来说多一个选择永远是好事以后不用再为了工具链去迁就操作系统了。至少我在评估新项目选型时IAR 重新回到了候选名单里而不是被“只在 Windows 上可用”这一条直接排除。2. 功能拆解这个新IDE到底能干什么2.1 完整的编辑、编译、调试闭环很多人担心新 IDE 只是“换壳”其实不是。它提供的是从工程创建、代码编辑、编译构建、到调试下载的完整闭环。工程管理、编辑器、编译输出窗口、调试器界面这些核心环节在 Linux 和 Windows 下都是一致体验切换平台没有明显的学习成本。编译这块用的是 IAR 自己的编译器。IAR 编译器在嵌入式圈子里口碑一直不错代码体积控制得小执行效率高很多项目就是冲着这个才选的 IAR。跨平台版本要保证的就是这件最重要的事你在 Linux 上编译出来的产物和你习惯的 Windows 编译结果保持一致链接脚本、分散加载文件、优化等级这些逻辑完全沿用原先那套体系。如果你只是把编译器换成 GCC 重新移植一遍那很多项目的代码密度和性能指标都会受影响这个跨平台版本显然不是走那条路。调试环节则是很多 Linux 用户最看重的部分。新 IDE 集成了 IAR 的 C-SPY 调试系统常见的调试探针都有对应支持SEGGER J-Link、ST-LINK、CMSIS-DAP以及 IAR 自家的 I-jet都可以在 Linux 下直接连接目标板。断点、单步、寄存器窗口、内存观察、变量实时刷新这些操作和 Windows 版本的体验基本没有差别。我用 J-Link 连接一块 Cortex-M 开发板做过验证连接速度、下载速度和断点命中表现都挺稳定。另外C-SPY 的批处理调试接口也保留了也就是说你可以在脚本里完成一次下载、跑一段程序、收集变量快照这对产线测试场景非常有用。2.2 工程兼容性老工程能否直接迁移这是大家最关心的实际问题。我直接说结论绝大多数以前在 Windows 上建的 IAR 工程是可以直接拿到 Linux 这个新 IDE 里打开的。IAR 的工程文件格式沿用了原来的规范双击工作区文件就能加载不需要做一层额外的工程转换。不过实际迁移时有几个地方需要留意。第一是路径分隔符工程里如果写死了 Windows 风格的“\”路径在 Linux 下可能解析出错建议统一改成相对路径或者用“/”第二是大小写Windows 文件系统不区分大小写Linux 是严格区分的头文件 include 的名字如果大小写写错了在 Windows 上可能一直没暴露到 Linux 上一编译就报错第三是外部工具路径如果工程里引用了自定义 Python 脚本、批处理命令之类的外部工具脚本里的绝对路径和可执行文件名要跟着平台做适配。这些细节不难处理但如果不提前排查迁移前三天你会被这种小问题折磨到怀疑人生。另外IAR 支持通过设备支持包来扩展不同厂商的芯片。比如 GD32 这类采用 ARM 内核的芯片安装对应的 pack 之后就能在器件选择列表里看到。这个机制在 Linux 版本上同样支持pack 文件的存放路径和 Windows 版本的位置不一样但通过 IDE 的配置界面可以很方便地管理。迁移老工程前最好把工程里用到的芯片型号、头文件路径、库文件路径都过一遍确认对应的 pack 在 Linux 上已经装好。所谓“老工程直接打开”指的是打开动作本身简单后续的依赖补齐工作还是得做扎实。2.3 许可证与工具链管理IAR 的授权体系一直比较严谨这也是很多企业选它的原因之一。跨平台版本延续了原有的 License 管理模式我接触到的有几种常见类型节点锁定许可证、加密狗许可证以及通过许可证服务器管理的浮动授权。新 IDE 在 Linux 下的激活流程比想象中顺畅官方提供了一个专门的 License Manager 工具可以查看当前授权状态、导入许可证、切换不同类型的授权。在 Linux 上有一个需要注意的点是加密狗。老款加密狗通常需要厂商提供的驱动库才能被系统识别新 IDE 对应的驱动和库文件在安装包里一般会一起装上。如果插入加密狗后 IDE 还是提示找不到许可证优先检查驱动的版本和系统内核的兼容性尤其是较新的 Linux 发行版内核升级频繁偶尔会遇到驱动跟不上的情况。浮动授权相对简单只要网络能连通 License Server客户端环境配置好即可。我个人建议如果在团队场景下使用优先考虑浮动授权。因为 Linux 和 Windows 两种系统共存时浮动授权可以避免每台机器单独激活的麻烦也方便新入职同事快速把环境拉起来。如果只是个人在 Linux 上做开发节点锁定授权就比较省事不依赖网络离线激活成功后基本不用管。选哪种模式其实和你在哪个平台上用关系不大更多取决于团队规模和设备更换频率。2.4 编译器内核与优化选项跨平台后面藏着的硬功夫展开一些细节。IAR 编译器在嵌入式领域有一批忠实用户核心原因是它能在同样的芯片频率下压榨出更低的代码体积和更高的执行效率。跨平台版本保留了这个内核不是简单地“把界面搬过来”。对我这种在乎 Flash 占用的人来说这意味着同一个工程在 Linux 下构建最终烧进芯片的二进制跟 Windows 下构建的结果处于同一水平不会出现“换个系统编译代码就大了几百字节”的尴尬。优化等级的选择也值得聊。IAR 的优化选项分为不同档位有侧重速度的也有侧重代码密度的。调试阶段建议用低优化或者不优化方便断点和变量观察发布版本再用高优化。这个逻辑在 Windows 和 Linux 版本里完全一致工程级的编译选项配置可以直接跨平台复用。我在迁移阶段专门做过一次对比同一个工程、同一份代码、同一套优化选项两个平台构建出来的固件大小差异非常小差异基本来源于时间戳和路径信息完全在可接受范围内。这让我对跨平台版本的编译器一致性有了信心。3. 实操记录在 Linux 上把 IAR 环境跑起来3.1 安装流程与包管理我在 Ubuntu 22.04 上做过完整安装整个流程大概十分钟能搞定。首先去 IAR 官网下载对应版本的 Linux 安装包官方提供了不同发行版的安装格式Debian 系用 .debRed Hat 系用 .rpm。下载时注意选择跟系统架构匹配的包目前主流桌面基本都是 x86_64。安装可以直接双击 .deb 文件也可以用命令行sudo dpkg -i iar-ewarm*.deb如果有依赖缺失可以补充执行sudo apt-get install -f安装完成后IAR 的命令行工具和 IDE 启动脚本会被放到预设目录一般是 /opt/iarsystems/ 下不同版本号会有对应目录。IDE 可以通过系统的应用菜单启动也可以直接在终端里执行启动脚本。如果只是想用命令行构建工具做 CI可以不装完整 IDE只安装命令行构建工具。这样在纯服务器环境里也能完成编译不需要图形界面。我的习惯是在构建机上也装完整版因为有时候需要手动打开工程排查编译问题GUI 和命令行并存最方便。另外安装包的包名和依赖在不同发行版上会略有差异官方文档里有针对常见发行版的说明照着做基本不会卡住。3.2 新建工程、添加设备支持包、完成一次编译打开 IDE 后新建工程和 Windows 版本的操作路径很接近选择对应芯片厂商和型号配置工程名和保存路径IDE 会自动生成基础的启动文件和链接配置。如果你用的是 GD32 的芯片记得先在器件支持包管理界面里添加对应的 pack否则器件列表里是看不到这个型号的。添加 pack 后写一个最简单的点灯程序做验证。在 main.c 里配置好 GPIO 时钟、初始化引脚、循环翻转电平然后编译。编译过程中输出窗口会显示每个编译单元的警告和错误还会在流程结束时打印代码和数据的占用统计。这里顺便说一句IAR 的 map 文件里信息很全ROM/RAM 占用、每个函数和全局变量的分配情况都能查到代码体积有没有超标一眼就能看出来。我自己习惯在每次提交代码前把 map 文件里的关键数字拉出来对比比纯靠“感觉”靠谱得多。第一次编译经常会碰到的问题包括头文件路径没配好、宏定义遗漏、优化等级和编译器选项跟芯片启动文件不匹配。建议新工程先从自带的模板开始改不要一上来就手动配一堆复杂选项。等基础模板能跑通再逐步叠加你自己的模块这样排查问题的时候范围可控。还有一个常见需求是生成静态库。比如你想把某个驱动模块编成 .a 库文件分发在工程属性里把输出类型改成静态库即可Linux 版本同样支持这个操作我很早就验证过了。3.3 调试器连接与下载验证编译通过只是第一步真正连上板子调试才是完整验证。连接板子之前先把调试器的 USB 权限配置好。Linux 下 USB 设备默认权限经常不够J-Link 或者 ST-LINK 插上去IDE 里显示找不到设备这种情况几乎每个 Linux 新手都会遇到。权限问题一般通过 udev 规则解决。比如 J-Link 官方工具包里自带 udev 规则文件安装后会把设备的访问权限放开ST-LINK 也有对应的规则社区版、开发板自带的调试器通常都能找到现成配置。把规则文件放到 /etc/udev/rules.d/ 目录下然后重新插拔设备或者执行udevadm control --reload再进 IDE 里刷新调试器列表正常就能识别了。我用 J-Link 连接 Cortex-M 开发板的操作流程是这样在调试配置界面选择调试器类型选择设备型号和接口方式SWD 或 JTAG设定目标供电方式然后启动下载。IDE 会把固件烧到 Flash 里并进入调试会话。设断点、看变量、跑单步这些操作跟在 Windows 下几乎一模一样。第一次跑通的时候我特意对比了下变量实时刷新的延迟体感上没有区别。如果遇到下载后程序不运行的情况优先检查复位方式和向量表偏移配置这两个参数在跨平台版本里都放在调试配置里和 Windows 版本的逻辑一致。3.4 命令行构建与自动化验证默认大家还是习惯打开 IDE 使用但真正体现跨平台价值的其实是命令行构建。IAR 提供了命令行工具可以在不打开图形界面的情况下完成工程的编译、链接甚至下载。这在 Linux 服务器上特别有用你可以在 CI 流水线里直接调用它构建服务器不需要安装图形环境也能保证每次构建用的是干净一致的配置。我在 CI 里配置了这样一条流水线代码提交触发构建命令行工具编译出固件接着输出 map 文件再用脚本解析 Flash 和 RAM 占用最后把结果发到群里通知大家。整个过程不需要任何人手动打开 IDE一旦占用超标负责的同事当天就能收到报警。这套东西在 Windows 下也能搭但 Linux 环境下脚本和进程管理更顺手尤其是并行构建多个工程的时候Linux 的优势很明显。如果你所在团队已经有 Jenkins、GitLab CI 这类基础设施把 IAR 命令行接进去基本是水到渠成的事。4. 踩坑实录常见问题与解决思路4.1 许可证相关的坑许可证是很多人迁移到 Linux 后第一个拦路虎。常见现象是安装好 IDE、插入加密狗或者导入节点锁定许可证后提示找不到有效授权。遇到这种问题先到 License Manager 里确认许可证是否被识别再检查环境变量和系统是否有旧版本 IAR 残留的配置。新旧版本授权信息冲突的情况我遇到过几次处理方法很简单把旧版本卸载干净删掉残留配置目录再重新激活。还有一种情况是环境变量配置不当。有些 Linux 发行版会对用户环境变量做隔离如果 IAR 的 License 配置目录没有在当前用户的变量里正确指向IDE 就找不到许可证。别急着怪 IDE先在终端里查一下相关环境变量是否生效。另外很多人容易踩一个点用 sudo 启动 IDE。这会导致 IDE 读不到普通用户的 License 配置建议不要用 sudo 启动图形界面。如果确实需要管理员权限做某些操作等 IDE 正常起来之后再用终端去执行那些特权命令。4.2 USB 调试器无法识别插上调试器系统已经能看到 USB 设备但 IDE 就是识别不了多数情况是权限问题也就是上面说的 udev 规则没生效。先执行lsusb看设备在不在系统设备列表里如果在再看它的访问权限如果设置成了 root 或其他用户专属需要按调试器型号添加 udev 规则。还有一种情况是调试器固件太老建议先升级调试器固件再排查。J-Link 和 ST-LINK 都有固件升级工具在 Linux 下跑一下命令就行不需要到 Windows 上操作。USB 供电不足也是个容易被忽略的点。尤其是使用笔记本 USB 口连接目标板时如果调试器、目标板、串口转换器全部挂在同一个 USB Hub 上可能因为电流不够导致设备反复断开。出现“设备能识别、一连就掉”的情况先换一个直连主板的口试试很多时候问题就解决了。我遇到过一台机器只有左边某组 USB 口能稳定连接 J-Link右边口总是掉线最后就是靠换口解决的跟配置没有半点关系。4.3 工程文件编码与换行符Windows 上常用的 GBK 编码源文件在 Linux 下直接打开可能乱码。新 IDE 一般支持编码检测但建议团队统一用 UTF-8并在工程配置里固定下来。换行符方面Windows 的 CRLF 和 Linux 的 LF 在 git 里很容易造成整个文件 diff配置 .gitattributes 统一处理最省心。我踩过的一个具体教训是某个老工程里的注释用 GBK 编码在 Windows 下显示正常一搬到 Linux 上整个文件的中文注释全是乱码而且因为编码问题连编译警告都变得不可读。后来把所有源文件统一转成 UTF-8并在仓库根目录加了 .gitattributes 强制统一换行符问题才算根治。这个过程虽然有点繁琐但对团队长期协作非常值得。别等到文件已经提交到仓库里再去改编码尽量在迁移前就完成转换否则 git 历史会被大量无意义改动污染。4.4 常见问题速查表我用一个表格把常见问题、现象和解决思路整理出来方便大家快速对照。问题典型现象解决思路许可证不可用启动后提示无有效 License检查 License Manager 激活状态、确认加密狗驱动、查看环境变量调试器不识别连接目标板报找不到调试器检查 udev 规则、设备权限、调试器固件版本pack 找不到器件列表里没有目标芯片在设备支持包管理界面安装对应 pack确认路径权限源文件乱码打开工程中文显示异常统一为 UTF-8 编码工程属性里明确编码格式头文件找不到编译报错 fatal error检查 include 路径在 Linux 下的写法避免硬编码 Windows 路径构建行为不一致同一工程两边编译结果有差异统一 IDE 版本、编译器版本用共享工程配置设备反复掉线USB 连接时常断开检查供电和 USB 接口避免使用劣质 Hub这个表里的内容基本都是我或者团队同事真实遇到过的不是从文档里抄的。如果你在迁移过程中遇到类似现象先按表格里的思路走一遍大多数情况十分钟内能定位。实在解决不了再把完整的日志信息贴到搜索或者社区里有具体现象和日志别人才能帮你判断。4.5 给团队的迁移建议如果团队打算从纯 Windows 环境迁到 Linux 和 Windows 并存的模式我给三条建议。第一先把工具链版本和工程配置锁定把工程文件里的路径统一改成相对路径避免两边打开时配置漂移第二选择一个小型、低风险的项目先做试点跑通“Linux 下编辑编译 Windows 下回归验证”的完整流程再推广第三尽早把 CI 构建脚本搭起来让 Linux 构建服务器成为唯一的构建基准减少人肉比对的工作量。迁移过程中不要追求一步到位。不是所有历史工程都有马上迁移的必要尤其是一些依赖 Windows 独有工具的老项目可以继续留在 Windows 环境里维护。新项目或者后续迭代比较活跃的项目再逐步迁移到跨平台工作流里。只要保证主线上所有人都用同一套工具链环境差异带来的问题就能压到最低。4.6 新旧版本共存时注意什么如果 Linux 上只装新版Windows 上还留着旧版两边同时打开同一个工程文件时IDE 可能会提示工程版本升级。升级后的工程文件旧版 IDE 还能打开吗不一定。建议在团队内部统一 IDE 版本号不要出现“一半人用新版、一半人用旧版”的状态否则工程文件来回保存很容易出现不可预期的差异。另外如果 Linux 和 Windows 共享同一份工程目录注意文件系统中的元数据差异。Linux 的符号链接、权限位和 Windows 的隐藏属性、大小写不敏感规则都可能引发问题最稳妥的方式是用 Git 管理工程文件让每个平台的本地副本从仓库同步而不是直接在网络盘上多人编辑同一个目录。我在一个项目里见过因为两个人同时打开同一个网络盘工程文件互相把对方的工程配置覆盖掉的情况那真的是一场事故。5. 这套方案适合谁以及哪些情况不建议盲目迁移5.1 适合的场景与用户先说适合的。如果你日常大部分开发工作都在 Linux 下完成比如用 Git 做版本管理、用脚本做构建、用命令行跑各种分析工具那新的跨平台 IDE 基本是刚需。它把 IAR 工具链完整地放到了你熟悉的环境里不用再为“编译一下要切系统”这种事情打断思路。我个人就是这一类以前在 Windows 上憋着用 IAR整个人的工作流都是拧巴的现在算是被解放了。反过来说有些情况不建议盲目迁移。如果你在用 8051 这类非常老的工具链做项目建议先仔细确认官方对这个架构的 Linux 支持情况别急着把正式工程迁过去。还有如果团队里所有人都用 Windows而且没有一个人有 Linux 需求那短期内不迁移也完全没问题毕竟工具是服务于效率的没有需求就不要创造需求。另外如果项目里大量依赖 Windows 特有的第三方插件、ActiveX 控件或者老旧的自动化测试脚本迁移前要做充分的兼容性验证。跨平台 IDE 解决了 IAR 自身的跨平台问题但不可能替你解决所有周边工具的兼容问题。我的原则是“先跑通最小闭环再逐步扩大范围”千万不要一开始就把所有周边工具和插件都纳入迁移清单。5.2 迁移成本和收益的权衡迁移这件事收益和成本都要看清。收益是环境统一、构建自动化、开发体验提升成本是初次安装配置、调试器驱动适配、历史工程的小问题修正以及团队成员的学习和适应时间。很多人只盯着收益看忽略了平滑过渡的真正难点。以我所在的团队为例真正把迁移做完用了大概两周。前三天集中解决安装、License、调试器识别问题中间一周做真实项目的试编译和联调最后几天把 CI 脚本接上。两周之后团队里原来不熟悉 Linux 的同事也慢慢习惯了。如果你评估下来迁移周期不到一个月我觉得值得做如果你发现历史包袱太重、周边工具全部要重写那就再等等。工具链本质上只是手段项目按时交付才是目的不该为了“拥抱新技术”而去冒险伤到主线进度。5.3 我建议的落地节奏不管你的团队是几百人的大组还是几个人的小团队我都建议走“试点、验证、推广”的节奏。具体来说找一个不是特别紧急、依赖关系比较简单、且团队成员愿意折腾的模块先在 Linux 上完整跑一遍新建或迁移工程、编译、下载到开发板、调试几个关键功能然后把构建脚本放进 CI 看是否能稳定跑一周。这个周期里一定会有各种小问题冒出来不要慌把每个问题都记录到速查表里解决一个删一个。等试点模块稳定了再把其他模块逐个迁过来。我见过不少团队想一天之内把全部工程切到 Linux结果被各种历史问题淹没反而拖慢了整个计划。迁移这种事情适合小步快跑不适合大爆炸式重写。每完成一个模块团队对这套新工作流的信心就多一分后面再推别的模块就顺了。等你自己从这套流程里尝到甜头都不用别人催你会主动想把手头所有能迁的项目都迁过来。最后再分享一个小经验。我迁移过程中最受益的一件事是把构建命令封装成了命令行脚本并在 CI 里设置每天晚上自动构建。以前 Windows 环境下的构建常常依赖某台开发机在线现在 Linux 构建随时可以拉起来哪次提交把代码体积或者 Flash 占用弄超了第二天早上邮件里就能看到报表。这种体验在纯 Windows 工作流里折腾挺久换到跨平台环境后反而很简单。如果你也在考虑迁移强烈建议从这条自动化路线开始。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进