Mac M3搭建Flutter-OH环境:从零到模拟器跑通
1. Flutter-OH环境搭建一个Mac M3开发者的真实需求先说结论Flutter-OH指的是开源鸿蒙OpenHarmony社区维护的Flutter适配版本它让原本面向Android、iOS的Flutter工程多了一个OpenHarmony的构建目标。做跨端开发的朋友应该都有过类似的痛点项目要兼容的设备越来越多平板、电视、带屏音箱或者一些基于开源鸿蒙的行业终端这些设备大概率不会跑Android但你又不可能为它单独维护一套UI代码。Flutter-OH就是在这种需求下出现的它把Flutter引擎完整迁移到了OpenHarmony系统上Dart代码可以直接调用OpenHarmony的渲染能力相当于给Flutter插了一张OpenHarmony的系统适配卡。我平时主用的开发机就是一台Mac M3之所以特意用M3做演示是因为Apple Silicon芯片的Mac目前是Flutter开发者最主流的日常设备之一但恰恰也是OpenHarmony官方工具链支持相对滞后的平台。大部分教程默认是Windows或者Intel Mac照着做很容易遇到架构窜了、目录不对、模拟器起不来这类问题。用Mac M3走一遍完整流程把那些芯片相关的坑提前排掉后续在M1、M2、M3甚至更新的机器上复现会顺利很多。1.1 为什么要在Mac M3上跑Flutter-OHOpenHarmony本身是一个面向全场景的开源操作系统底座社区版本迭代速度很快设备品类也越来越多。对新项目来说如果团队已经押注Flutter工程师们最关心的就是能不能用同一套Dart代码直接输出OpenHarmony产物而不是再学一套新的UI框架、再维护一套独立的业务代码。Flutter-OH这个项目解决的正是这个问题它把Flutter的引擎层、渲染层、平台通道都适配到了OpenHarmony上最终产物是一个可以被OpenHarmony系统直接识别的应用包。从开发机的角度讲Mac M3的CPU架构是纯正的arm64不像Intel Mac那样还要考虑x86_64的兼容层。听起来省事但实际上问题恰恰出在这里很多OpenHarmony工具链和附属组件是从x86生态迁移过来的在arm64环境里若没有原生版本就得依赖Rosetta转译转译层一旦叠加到编译链路上就会暴露出各种匪夷所思的报错。后面我在实操部分会专门提怎么规避这类问题。1.2 这套方案能解决什么问题用Flutter-OH最大的价值不是省掉第三方框架而是让你继续用已有的Flutter工程资产。比如项目中已经写好的业务模块、状态管理方案、路由组件、测试用例只要不是重度依赖某个平台原生的SDK通道理论上一套代码就能打到OpenHarmony设备上。我见过很多团队评估OpenHarmony应用开发时第一反应是换语言换框架实际上绝大部分复杂的UI和业务逻辑在Flutter-OH里是能直接复用的只有摄像头、定位这类系统能力才需要走平台通道去写原生实现。这篇文章面向的人群很明确主力开发机是Apple Silicon MacM1/M2/M3的Flutter开发者或者技术负责人想评估Flutter项目能否快速输出OpenHarmony版本。我会把从零开始的环境搭建、SDK选型、工程初始化到跑通模拟器的整个过程按实操顺序写出来并把搭建过程中容易踩的坑按故障现象整理成一个速查表方便你搭到一半卡住时直接翻。2. 动手前先排雷Mac M3环境规划2.1 系统基础依赖安装在下载任何鸿蒙相关工具前先把Mac的基础环境捋一遍。我这里系统版本是macOS Sonoma虽然没有硬性强制但DevEco Studio新版对macOS版本有最低要求至少是12以上建议直接升到14以上更省心。Apple Silicon芯片意味着所有工具链尽量选择arm64原生版本不要为了省事下载x64的包然后用Rosetta转译虽然大多数时候能跑但一旦遇到编译期生成的中间产物路径不一致排查起来很浪费时间。第一步先安装Xcode Command Line Tools虽然Flutter-OH不太依赖Xcode本体但编译过程中gcc、make、clang这些基础命令还是要有的。在终端执行xcode-select --install接着确认Homebrew是否就位后面装node、git、jdk这类工具都用它统一管理。如果你是从Intel Mac迁移过来的还需要检查Homebrew的安装路径是不是/opt/homebrewApple Silicon原生命令如果是/usr/local说明你还在用Rosetta模式建议重装。2.2 下载DevEco Studio并核验OpenHarmony SDKOpenHarmony应用开发最核心的是DevEco Studio这是官方提供的IDE负责编译、签名、打包和模拟器管理。下载的时候要注意区分macOS arm64版本和x64版本Apple Silicon机器选arm64版下载完直接拖入Applications目录。首次启动DevEco Studio会引导你下载SDK这里要留足磁盘空间完整SDK加上模拟器镜像往往要占20GB以上如果你的系统盘空间只剩三四十GB千万提前清理否则后面下载到一半磁盘满会导致SDK损坏你就得删掉整个目录重新来。SDK默认安装路径在~/Library/OpenHarmony/Sdk里面有toolchains命令行工具集、ets声明式UI的编译器、default目录包含OpenHarmony api版本这个目录结构后面会反复用到。建议在启动IDE之后先手动检查一下SDK是否真正安装完整打开终端执行ls ~/Library/OpenHarmony/Sdk如果看不到default/openharmony子目录说明SDK没有装全需要回到IDE的SDK Manager重新安装。2.3 环境变量与JDK、Node工具链对齐环境变量是整个搭建过程最容易被忽略的一环。Flutter-OH在编译OpenHarmony工程时会通过环境变量定位SDK目录。官方推荐的变量名是DEVECO_SDK_HOME也有部分版本变量名是OHOS_SDK_HOME最保险的做法是两条都写进shell配置文件里反正不冲突。一般OpenHarmony的构建还依赖JDK和Node.js。JDK版本要求是17如果机器上之前装过JDK 8或者11一定要把17的路径放在PATH最前面。Node.js是因为OpenHarmony的构建脚本hvigor依赖npm去拉构建工具链没有Node工程根本跑不起来。我的建议是直接用Homebrew装brew install openjdk17 node装完之后编辑~/.zshrc把下面几段环境变量追加进去export DEVECO_SDK_HOME$HOME/Library/OpenHarmony/Sdk export OHOS_SDK_HOME$HOME/Library/OpenHarmony/Sdk export PATH$HOME/development/flutter_flutter/bin:$PATH export PATH$DEVECO_SDK_HOME/toolchains:$PATH export PATH/opt/homebrew/opt/openjdk17/bin:$PATH export JAVA_HOME/opt/homebrew/opt/openjdk17写完之后我习惯给Flutter一个固定的安装目录~/development/flutter_flutter而不是随手放桌面或下载目录。因为后面所有项目都要引用这个路径一旦路径里带了空格或者中文Gradle脚本很容易出幺蛾子。配置完成后执行source ~/.zshrc然后依次验证java -version node -v hdc -vhdc是OpenHarmony的调试桥梁类似Android的adb如果这个命令找不到说明SDK的toolchains没进PATH后面连模拟器和真机都会失败。3. 核心步骤Flutter-OH SDK的获取与启用3.1 官方Flutter SDK为何不能直接用于OpenHarmony很多新手会犯一个错误以为把官方Flutter SDK装上然后flutter config --enable-ohos就能支持OpenHarmony了。实际上官方Flutter SDK的代码库里根本没有ohos这个平台抽象你启用不了。OpenHarmony要能跑Flutter需要在Flutter引擎层做大量平台适配包括渲染后端、输入事件、字体渲染、平台通道的桥接这些适配代码都集中在OpenHarmony社区维护的flutter_flutter仓库里。所以第一步就是用对分叉版本。这个仓库本身是从官方Flutter fork出来的你可以在代码托管平台找到它分支名常用的有ohos-3.2、ohos-4.0、ohos-4.1、ohos-5.0这类命名逻辑基本对应OpenHarmony大版本。我这次搭建用的是支持OpenHarmony 4.x的分支实测可以顺利跑通示例工程。选分支的原则很简单优先看你手里OpenHarmony SDK的API版本SDK是API 10你就选对应的分支别一味追新。有的分支还在快速迭代今天能用明天可能就有breaking change。3.2 克隆适配分支并切换Flutter版本我的安装目录统一放在~/development/下面这样后续给多个机器配环境比较规范。拉取仓库时用-b指定分支mkdir -p ~/development cd ~/development git clone -b ohos-4.1 https://gitee.com/openharmony-sig/flutter_flutter.gitclone过程顺便解释一下我的选型逻辑我用的是OpenHarmony 4.1的SDK对应API级别是11所以分支也要跟SDK对齐。如果仓库对分支命名含糊就去看仓库根目录的README里面通常明确写了各分支支持的OpenHarmony版本范围照着选就行。克隆完成后执行flutter --version验证是否生效。这里有个额外提醒如果你本机之前装过官方版Flutter且通过flutter upgrade已经习惯了新版Dart语法刚开始用适配分支可能会有一些差异感但这不影响环境搭建先跑通再慢慢适应。3.3 启用ohos平台支持并验证flutter doctor在shell里面执行flutter config --enable-ohos这一步会在Flutter的全局配置中把ohos标记为可用的实验平台。随后执行flutter doctor正常情况下会显示Flutter、Android toolchain这几个模块还会有一个OpenHarmony toolchain模块这里可能提示找不到ohos sdk路径。如果出现这个提示先检查DEVECO_SDK_HOME是否指向了正确的SDK目录确认之后重新打开终端再跑一次doctor。这一个步骤还有一个隐藏细节因为flutter_flutter分支版本比官方发布会落后一些执行flutter doctor时如果检测到Dart SDK或引擎版本较旧有可能会提示让你运行flutter upgrade。千万不要在适配分支里执行upgrade否则会把整个分叉仓库拉回官方主线后果就是ohos支持直接消失。我踩过一次当时还以为是自己配置文件写错了最后重新克隆才恢复白白浪费了半小时。4. 实操演示创建并跑通一个OpenHarmony Demo4.1 用flutter create生成ohos工程现在环境已经就绪开始创建项目。打开终端进入你的工作目录执行flutter create --platforms ohos --org com.example demo_ohos_app cd demo_ohos_app命令执行完成后观察目录结构。除了常规的lib、android、ios目录外会多出一个ohos目录这就是OpenHarmony工程的存放位置。但是有一个点要特别留意如果你执行create之后发现没有ohos目录甚至连--platforms ohos都提示不认识大概率是上一步的flutter config --enable-ohos没生效或者你用了官方版本Flutter回到上一节重新核对即可。创建工程后建议先用flutter pub get拉取依赖控制台如果没有报错说明Dart侧的依赖已经就位。OpenHarmony侧的依赖比如Gradle插件是在首次构建时才解析的所以第一次构建慢是正常的。4.2 理解ohos目录结构与关键配置文件ohos/目录下的结构跟Android工程有点像但也有自己的特点。比较关键的是ohos/entry/src/main/module.json5这是OpenHarmony应用的配置文件类似Android的AndroidManifest.xml里面定义了应用包名、入口Ability、权限声明。还有ohos/entry/build-profile.json5它定义了构建目标的签名配置、依赖的SDK版本。默认情况下你会看到类似下面的内容{ app: { signingConfigs: [], products: [ { name: default, signingConfig: default, compatibleSdkVersion: 4.1.0(11), targetSdkVersion: 4.1.0(11) } ] } }这里的compatibleSdkVersion必须和你的OpenHarmony SDK版本匹配。如果这里的数值高于SDK实际提供的API版本编译时就会报版本不匹配的错误。所以如果从别处拷贝工程第一件事就是检查这三个版本号。另外在ohos目录下通常会有一个local.properties文件用来指定SDK路径内容和Android项目的local.properties类似。DevEco Studio在打开项目时会自动生成或更新它如果是在命令行直接构建这个文件缺失会导致找不到SDK。4.3 模拟器启动、设备连接与首次运行OpenHarmony和Android一样有模拟器。打开DevEco Studio进入Device Manager创建一个Phone类型的本地模拟器系统镜像选择与SDK版本匹配的OpenHarmony镜像。镜像下载会比较耗时建议提前点击下载。启动模拟器后在终端执行hdc list targets如果模拟器正常你会看到一个设备串号比如emulator-1。如果这里没有输出排查方向是先确认模拟器是否已经完整启动再确认hdc版本是否和DevEco Studio要求的一致。接下来就是见证奇迹的时刻flutter devices flutter run -d 设备串号首次构建时间比较长因为要编译Flutter引擎和OpenHarmony的C层具体取决于机器性能我的M3上大概花了三到五分钟。构建完成后模拟器上会出现一个FlutterDemo应用默认是计数器Demo。如果走到这一步恭喜你整套环境已经跑通了。4.4 热重载和日常调试技巧Flutter-OH跑通后最实用的能力就是热重载。终端保持flutter run状态修改lib/main.dart中的任意代码保存后在终端按r几秒钟内界面就会刷新。不过要注意OpenHarmony平台的热重载稳定性比Android稍弱一些如果改了原生模块的代码或者改了module.json5里的配置热重载会失效需要重启完整编译。日常开发我建议把模拟器和flutter run配合使用效率比每次点IDE的构建按钮高得多。如果你要在真机上调试还需要在DevEco Studio里配置自动签名。OpenHarmony的真机调试需要签名校验不像Android那样开启开发者选项就能直接装。这块操作比较繁琐但好在DevEco Studio有自动签名向导跟着向导创建p12和p7b文件即可。我建议第一次先停留在模拟器阶段把标准跑通后端到真机避免签名配置和调试问题混在一起排查起来头大。5. 搭建过程里的高频报错与修复实录5.1 找不到ohos平台或create报错报错现象可能原因解决办法flutter config --enable-ohos提示Unknown platform使用了官方Flutter SDK换成OpenHarmony适配的flutter_flutter仓库flutter create后没有ohos目录PATH里官方Flutter在适配版之前which flutter查路径调整PATH顺序create命令报错Unknown option platformsFlutter版本过旧确认分支已切到对应ohos版本我遇到最多的情况是第二种机器上之前装过官方Flutter环境变量也写在.zshrc里克隆完适配版FLutter之后没有把新的bin路径放在前面。结果终端里执行的还是老的官方命令配置了半天都没用。这个问题排查起来很简单which flutter一看就知道但很多人容易忽略我就是其中一个。5.2 SDK路径错误引发的编译失败最典型报错是构建过程中提示SDK not found或者ohnpm install failed根因基本都是DEVECO_SDK_HOME环境变量指向错误。有一个很隐蔽的问题DevEco Studio更新后可能会把SDK路径从~/Library/OpenHarmony/Sdk迁移到其他位置导致你的环境变量失效。遇到这种问题先通过IDE的SDK Manager页面看一下当前SDK实际路径再更新环境变量。还有一种情况是路径写错了比如把~/Library/OpenHarmony/Sdk多写了一个/sdk后缀这种低级错误最浪费时间建议写完环境变量后逐一目录验证。5.3 白屏、冷启动慢等运行期问题跑起来之后最气人的是模拟器上白屏。常见原因有三个一是Flutter-OH适配分支与OpenHarmony SDK版本不匹配比如SDK是API 12但Flutter分支只支持API 10二是GPU渲染上下文初始化失败这种在模拟器中比较常见三是入口页路径配置有问题。我的建议是先在模拟器上试官方示例不用自己的业务代码示例跑通再逐步替换。另外OpenHarmony模拟器的冷启动确实不如Android模拟器顺滑头几次启动慢、黑屏几秒都是正常的不要刚看到黑屏就强制重启等个十几秒往往就出来了。5.4 网络与依赖拉取问题因为OpenHarmony构建过程会从npm和Gradle仓库拉取大量依赖网络不通畅时很容易卡在下载阶段。如果你在flutter run时看到输出长时间停在同一行多半是依赖下载卡住了。解决办法有两个方向一是给npm设置国内registry镜像二是给Gradle配置阿里云镜像仓库。具体做法是在项目根目录的ohos/下找到对应Gradle配置文件把repositories加上镜像地址。配置完重新执行构建下载速度会明显提升。这里有个小技巧先单独执行flutter build ohos把构建缓存拉热再执行flutter run能减少很多中途失败的概率。6. 写在最后的个人体会这次在Mac M3上从零搭建Flutter-OH环境整体体验比我预想的顺利核心耗时主要集中在镜像下载和首次编译上真正卡壳的反而是几个很小的地方SDK路径写错、PATH顺序不对、没选对分支。这些坑如果你看过完整流程大概率能绕开。我个人的建议是动手搭之前先把DEVECO_SDK_HOME、JDK版本、flutter分支三件事同时确认好否则到最后一步check时你会发现前面有一个环节悄悄错了。后面你还可以在这个环境上试着跑一个真实的业务模块比如列表页加网络请求通过OpenHarmony原生能力做一次平台通道调用替换掉我们示例里的Dart-only代码。其实Flutter在OpenHarmony上的适配还在快速演进能跑通Demo只是第一步等到了渲染性能调优和原生混合开发阶段还会遇到更多值得深挖的话题到时候再逐个拿出来细聊。

相关新闻

Office 0Day漏洞CVE-2026-21509:检测、缓解与加固全指南

Office 0Day漏洞CVE-2026-21509:检测、缓解与加固全指南

1. 漏洞通告与影响面分析先说重点:这次的Office 0Day漏洞CVE-2026-21509,危险程度非常高,而且已经有在野利用痕迹被第三方安全团队捕获,这不是预警平台例行公事的“高危”评级,而是实实在在需要立刻动手处理的事。这个…

2026/10/13 3:46:55 阅读更多 →
Flutter数字签名pkcs7库鸿蒙化适配实战指南

Flutter数字签名pkcs7库鸿蒙化适配实战指南

最近把一个基于 Flutter 的数字签名三方库 pkcs7 整体迁移到了鸿蒙平台,整个过程踩了不少坑,也把 PKCS#7 的报文结构、ASN.1 编码、签名验签链路彻底捋了一遍。这篇指南会把我的适配思路、代码结构、密钥管理方案、问题排障过程完整写出来,项…

2026/10/13 3:46:55 阅读更多 →
强力卸载删注册表:安全清理残留的完整指南

强力卸载删注册表:安全清理残留的完整指南

简介:这份资源面向需要彻底卸载顽固软件、清理注册表残留的Windows用户与系统维护人员,核心是UninstallTool工具及其配套组件,用于解决常规卸载不干净、恶意软件隐藏痕迹、注册表键值被保护而难以删除等问题。压缩包共11个文件,约…

2026/10/13 3:45:55 阅读更多 →

最新新闻

反编译避坑指南:伪代码可信度判断与类型重建实战技巧

反编译避坑指南:伪代码可信度判断与类型重建实战技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 5:16:28 阅读更多 →
AI落地新浪潮:岗位重构与ds4本地推理实战指南

AI落地新浪潮:岗位重构与ds4本地推理实战指南

2026年10月4日那天的信息流,打开之后和往常不太一样。平时刷到的要么是模型榜单刷新,要么是某个框架发了新版,可这天前后三条全在讲"人的事"和"落地的事":先是某家AI公司的CEO公开说未来五年一半初级岗位会消…

2026/10/13 5:16:28 阅读更多 →
两变量关联性分析:从假设检验到相关系数选择与实操

两变量关联性分析:从假设检验到相关系数选择与实操

1. 两变量关联性分析到底在解决什么问题很多人做数据分析时,第一步会看分布、算均值,第二步就卡住了——手头有两个变量,想知道它们之间到底有没有关系,关系有多强,能不能用一个去预测另一个。这就是两变量关联性分析要…

2026/10/13 5:16:28 阅读更多 →
大模型训练全流程解析:从数据准备到部署排障的工程实践

大模型训练全流程解析:从数据准备到部署排障的工程实践

前阵子有个做AI应用的朋友跑来问我:网上把大模型训练说得神乎其神,到底一个模型是怎么炼成的?他刷过不少零碎教程,知道预训练、微调、RLHF这些词,但始终串不进一条完整链路。这个问题我回答过很多次,今天干…

2026/10/13 5:16:28 阅读更多 →
Robomaster硬件基础讲义:从电源树到CAN通信的工程实践

Robomaster硬件基础讲义:从电源树到CAN通信的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 5:16:28 阅读更多 →
密码破解原理与防御:从暴力枚举到多因素认证的完整指南

密码破解原理与防御:从暴力枚举到多因素认证的完整指南

做安全这一行,最常被朋友问的一句话就是:"你能不能帮我破解某个密码?"还有另一个版本:"网上那些破解密码的工具到底有没有用?"每次我都得先泼一盆冷水:真正搞安全的,研究破…

2026/10/13 5:15:27 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →