Unity Android打包:彻底解决Gradle过时警告与版本兼容性错误
1. 项目概述当Unity遇上Gradle的“过时警告”在Unity开发Android应用的最后冲刺阶段——打包APK最让人头疼的莫过于构建控制台里突然蹦出一堆红色的错误日志。其中“Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0”这条警告升级为错误的信息堪称是近年来Unity Android打包流程中的“常客”。这不仅仅是一条简单的警告它背后牵扯到的是Unity构建管线、Gradle构建工具版本以及Android Gradle插件AGP三者之间复杂的版本兼容性问题。对于独立开发者或小型团队来说面对满屏的构建错误很容易陷入“该改哪里怎么改”的迷茫。本文将从一线开发者的实战角度彻底拆解这个问题的根源并提供一套从快速应急到根治的完整解决方案让你不仅能解决眼前的报错更能理解其背后的构建逻辑未来从容应对类似的兼容性挑战。简单来说这个问题的核心是你项目当前使用的构建配置包括Gradle插件、Gradle包装器版本以及相关DSL语法已经过时无法与较新版本的Gradle构建工具特别是Gradle 8.0及以上协同工作。Unity在构建Android项目时会生成一个标准的Gradle项目并调用你指定的Gradle版本来执行构建任务。当Gradle检测到项目使用了在未来版本中将被移除的旧特性时就会抛出这个错误。在Gradle 7.0之后这个警告默认被视为错误导致构建失败。2. 问题根源深度解析构建工具链的版本错配要彻底解决这个问题我们必须像侦探一样理清Unity Android构建背后的工具链。这里涉及三个关键角色它们之间的版本匹配是构建成功与否的决定性因素。2.1 核心三要素Unity、Gradle与Android Gradle插件首先我们需要明确这三个概念及其关系Unity作为游戏引擎和开发环境它负责将你的C#脚本、资源等打包成一个可供Gradle构建的Android项目模板。Gradle这是一个项目构建自动化工具。你可以把它想象成一个高度可配置的“构建流水线指挥官”。Unity生成的Android项目其依赖管理、编译、打包生成APK/AAB等任务最终都是由Gradle来调度执行的。Gradle本身有版本号例如7.5,8.0,8.5等。Android Gradle插件这是Gradle的一个专用插件由Google提供。它提供了构建Android应用所需的所有特定任务和DSL领域特定语言。例如指定applicationId、minSdkVersion、配置签名等都是通过这个插件的DSL来完成的。它的版本号通常像4.2.2,7.0.0,8.0.0这样。关键关系AGP版本与Gradle版本之间存在严格的兼容性要求。特定版本的AGP必须运行在特定版本的Gradle之上。Unity在构建时需要确保它使用的AGP版本与你项目配置或它默认使用的Gradle版本是兼容的。当不兼容时Gradle就会报告使用了“过时的特性”。2.2 “过时特性”的具体指代那么Gradle到底在抱怨什么“过时特性”呢根据Gradle 7.x到8.x的迁移指南常见的原因包括DSL语法变更例如在build.gradle文件中使用compile、api、implementation等配置依赖的方式虽然仍被支持但某些旧用法或与AGP旧版本结合的特定写法已被标记为过时。插件应用方式在build.gradle文件顶部使用apply plugin: com.android.application这种命令式imperative应用插件的方式已被废弃推荐使用新的插件DSL即plugins { id com.android.application }。注意这一点在Unity生成的模板中尤为常见也是很多错误的直接来源。任务API变更项目中使用了一些旧的Gradle任务API这些API在新版本中已被重构或移除。属性设置方式例如在gradle.properties中设置android.useAndroidXtrue的方式在较新的AGP版本中可能已被集成到其他机制中。Unity在生成build.gradle文件时其模板可能基于一个较旧的AGP版本。如果你在Unity编辑器或项目中指定了或默认使用了一个较新的Gradle版本而模板文件却包含旧的语法矛盾就产生了。2.3 Unity构建设置中的关键配置点在Unity编辑器中与Gradle构建相关的配置主要集中在两个地方Player Settings Publishing SettingsBuild System必须选择Gradle。Custom Base Gradle Template/Custom Main Gradle Template/Custom Gradle Properties Template这些是解决本问题的核心开关。勾选它们后Unity会在项目的Assets/Plugins/Android目录下生成对应的模板文件baseProjectTemplate.gradle,mainTemplate.gradle,gradleTemplate.properties。你可以通过修改这些模板文件来覆盖Unity默认的构建配置。Player Settings Other SettingsMinimum API Level这会影响build.gradle中的minSdkVersion。Target API Level这会影响targetSdkVersion。Scripting Backend通常与Gradle问题无关但属于重要配置。问题的症结往往在于Unity编辑器内置了一个“默认”的AGP和Gradle版本组合。当你升级了Unity版本或者手动更改了Gradle的配置但没有同步更新项目模板中的语法就会触发兼容性错误。3. 实战解决方案从快速修复到彻底根治理解了原理我们就可以动手解决了。我将解决方案分为三个层级快速应急、标准修复和版本管理。3.1 方案一快速应急——降级Gradle版本治标如果你的项目急需打包且没有时间深入排查可以尝试将Gradle版本降级到一个与当前Unity默认AGP更兼容的旧版本。操作步骤在Unity项目中勾选Publishing Settings下的Custom Base Gradle Template和Custom Gradle Properties Template。这会在Assets/Plugins/Android目录生成两个文件baseProjectTemplate.gradle和gradleTemplate.properties。打开gradleTemplate.properties文件。在文件末尾添加或修改以下行# 使用Gradle 7.6或7.5等与AGP 7.x兼容的版本 org.gradle.jvmargs-Xmx**JVM_HEAP_SIZE**M # 新增下行指定Gradle版本 android.useAndroidXtrue android.enableJetifiertrue # Unity 2022 LTS 默认AGP版本可能对应Gradle 7.6 unityStreamingAssets.unity3d**STREAMING_ASSETS** # 强制使用Gradle 7.6.4 org.gradle.java.homeC\:\\Program Files\\Java\\jdk-17 # 关键行设置Gradle包装器版本 systemProp.org.gradle.java.homeC\:\\Program Files\\Java\\jdk-17 # 添加以下行 android.overridePathChecktrue # 指定Gradle版本 org.gradle.version7.6.4注意org.gradle.version7.6.4这一行是指定Gradle包装器Wrapper使用的版本。你需要根据你的Unity版本查找其兼容的Gradle版本。一个常见的兼容组合是AGP 7.1.x 对应 Gradle 7.5AGP 7.2.x 对应 Gradle 7.6。Unity 2022.3 LTS 通常内置了与Gradle 7.6兼容的配置。保存文件清理构建目录删除项目中的Library,Temp,Build等文件夹然后重新尝试构建。优点操作简单快速可能立即解决问题。缺点只是规避了问题并未真正修复过时的语法。未来升级构建工具时问题会再次出现。且使用过旧的Gradle版本可能无法利用新版本构建工具的性能优化和安全更新。3.2 方案二标准修复——更新Gradle模板语法治本这是推荐的做法即更新Unity生成的Gradle模板文件使其语法符合新版本Gradle的要求。操作步骤启用并定位模板文件在Publishing Settings中确保Custom Main Gradle Template和Custom Base Gradle Template已被勾选。找到Assets/Plugins/Android/mainTemplate.gradle和baseProjectTemplate.gradle。修改mainTemplate.gradle这是最重要的文件。打开它你会看到类似以下的结构// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN allprojects { buildscript { repositories {**ARTIFACTORYREPOSITORY** google() mavenCentral() } dependencies { // 这是AGP的版本声明旧模板可能使用classpath的旧写法 classpath com.android.tools.build:gradle:4.2.2 // **注意这个版本号** } } ... }你需要关注两个地方AGP版本号com.android.tools.build:gradle:4.2.2。这个版本非常旧是导致与Gradle 8.0不兼容的主因。你需要将其升级到一个与目标Gradle版本兼容的较新版本。例如如果你打算使用Gradle 8.5那么AGP需要8.0.0或更高请查阅官方兼容表。插件应用方式在文件较后的部分寻找apply plugin: com.android.application。这是过时的语法。更新AGP版本和语法将上述部分修改为符合新DSL的格式。修改后文件顶部可能看起来像这样// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN plugins { id com.android.application version 8.0.0 apply false // 使用plugins DSL apply false表示不在根项目应用 } allprojects { buildscript { repositories {**ARTIFACTORYREPOSITORY** google() mavenCentral() } // buildscript dependencies 可能不再需要AGP classpath如果plugins块已定义 } repositories { google() mavenCentral() flatDir { dirs ${project(:unityLibrary).projectDir}/libs } } }然后在原本apply plugin的地方通常在定义android {}块之前确保它已被移除。新的插件应用方式通过plugins块已经处理。重要提示Unity的模板结构复杂直接替换为pluginsDSL 可能会破坏Unity自身的依赖注入。一个更安全、更通用的做法是保留原有的buildscript和classpath配置但仅升级AGP版本号。例如将classpath com.android.tools.build:gradle:4.2.2改为classpath com.android.tools.build:gradle:7.4.2或8.0.0。同时保留apply plugin: com.android.application这一行。对于Unity项目这种“旧式”写法在升级AGP版本后通常仍然能被较新的Gradle如8.x所兼容前提是版本匹配。这是很多开发者验证过的稳定方案。修改baseProjectTemplate.gradle这个文件通常包含仓库和全局配置。确保repositories块中包含google()和mavenCentral()。同步更新gradleTemplate.properties可以在此文件中指定一个与新版AGP兼容的Gradle版本。例如AGP 8.0.0 要求 Gradle 8.1。你可以添加org.gradle.version8.5也可以配置JVM参数以提升构建性能org.gradle.jvmargs-Xmx4096m -Dfile.encodingUTF-8查找兼容版本组合这是最关键的一步。访问 Android开发者官网的兼容性表格 查找你选择的AGP版本所要求的Gradle版本。例如AGP 7.4.x 需要 Gradle 7.5AGP 8.0.x 需要 Gradle 8.1建议选择一个经过社区验证的、与你的Unity版本相对稳定的组合。例如对于Unity 2022.3 LTS使用AGP 7.4.2 Gradle 7.6.4是一个常见且稳定的选择。3.3 方案三版本管理——使用Gradle包装器推荐最佳实践是使用Gradle包装器Gradle Wrapper它允许项目锁定一个特定的Gradle版本确保任何人在任何机器上构建都能使用完全相同的环境。操作步骤在方案二的基础上你已经可以在gradleTemplate.properties中通过org.gradle.version指定版本。当你第一次使用这个版本构建时Unity通过Gradle包装器会自动下载指定版本的Gradle到用户目录下的.gradle/wrapper/dists文件夹中。为了更彻底你可以手动为Unity项目初始化一个标准的Gradle包装器。但这通常不是必须的因为Unity的构建过程会处理。核心优势解决了“在我机器上能编译”的环境不一致问题特别适合团队协作。4. 分步操作指南与现场实录让我们模拟一个最常见的场景使用Unity 2022.3.20f1构建Android应用时遇到此错误。4.1 步骤一诊断与信息收集首先我们需要查看完整的错误信息。在Unity构建失败后查看控制台Console窗口找到以“Deprecated Gradle features were used...”开头的错误堆栈。滚动堆栈寻找关键信息AGP版本线索错误可能指向mainTemplate.gradle中的某一行或者提示某个插件使用了旧API。Gradle版本在构建日志的开头部分通常会有一行“Starting a Gradle Daemon (subsequent builds will be faster)”之类的信息后面会跟着使用的Gradle版本号。假设我们看到的错误堆栈指向了apply plugin的用法并且发现Unity默认使用的是Gradle 8.5。4.2 步骤二实施标准修复方案我们决定采用AGP 7.4.2 Gradle 7.6.4这个稳定组合。修改mainTemplate.gradle 找到buildscript.dependencies块中的classpath行将其修改dependencies { classpath com.android.tools.build:gradle:7.4.2 // 将版本号从旧的如4.2.2改为7.4.2 // 注意不要删除或注释掉这行也不要轻易改成plugins DSL。 }实操心得对于Unity项目除非你非常了解其构建流程否则强烈建议只升级classpath中的AGP版本而保留apply plugin的写法。这是改动最小、风险最低、成功率最高的方法。许多尝试完全迁移到新pluginsDSL的开发者都遇到了Unity库依赖无法解析的新问题。修改gradleTemplate.properties 确保文件末尾有# 指定Gradle包装器版本 org.gradle.version7.6.4 # 可选的JVM配置提升大项目构建速度 org.gradle.jvmargs-Xmx4096m -XX:MaxMetaspaceSize1024m清理并构建关闭Unity编辑器。删除项目目录下的Library、Temp、Build文件夹如果你记得构建路径。重新打开Unity尝试构建。4.3 步骤三验证与排查如果构建成功恭喜你。如果失败查看新的错误信息。常见后续问题依赖下载失败AGP 7.4.2 需要从google()和mavenCentral()仓库下载。确保你的网络能访问这些仓库或者已在baseProjectTemplate.gradle中配置了可靠的国内镜像源如阿里云Maven镜像。NDK版本不匹配新AGP可能对NDK版本有要求。在Unity的Player Settings Android Other Settings下可以尝试指定一个具体的NDK版本或使用Unity自带的NDK。其他过时API如果还有别的过时警告错误信息通常会明确指出文件和行号。根据提示去搜索该API在新版本中的替代方案。5. 常见问题与排查技巧实录即使按照上述步骤操作你可能还是会遇到一些“坑”。以下是我在实际项目中总结的排查清单5.1 构建成功但仍有警告如果构建成功了但控制台还有“Deprecated Gradle features”警告而非错误这通常是因为Gradle的“警告即错误”开关被打开了。你可以在gradleTemplate.properties中添加以下行来将其降级为警告# 将过时特性警告视为警告而非错误允许构建继续 android.debug.obsoleteApitrue # 或者更通用的Gradle属性对于Gradle 7.0 org.gradle.warning.modeall但更好的做法是根除警告保持构建日志的清洁。5.2 关于gradle-wrapper.properties的疑惑你可能会在网络上看到修改gradle-wrapper.properties文件的方案。这个文件位于[YourProject]/Library/PlayerBuilder/Gradle/下的某个临时目录中。不建议直接修改这个文件因为它是Unity在每次构建时根据你的模板临时生成的。持久化的配置应该通过前面提到的gradleTemplate.properties来实现。5.3 多项目构建与unityLibrary模块Unity 2020及以后版本Android项目被构建为一个包含unityLibrary模块的复合Gradle项目。这意味着mainTemplate.gradle是根项目的构建文件而unityLibrary模块有自己的build.gradle。大部分兼容性问题在根项目的mainTemplate.gradle中解决即可。除非错误明确指向unityLibrary模块否则一般不需要修改Unity自动生成的其他内部文件。5.4 缓存导致的顽固问题Gradle和Unity都有很强的缓存机制。如果你确信配置已正确修改但问题依旧请执行深度清理清理Unity项目缓存删除Library、Temp。清理Gradle全局缓存删除用户目录下的.gradle/caches和.gradle/wrapper/dists文件夹注意这会使得所有Gradle项目在下一次构建时重新下载依赖请谨慎操作。在Unity中尝试File Build Settings Build时先点击Build按钮旁边的下拉箭头选择Clean Build如果可用。5.5 版本组合参考表下表提供一些经过验证的、适用于不同Unity LTS版本的AGP与Gradle版本组合参考可以作为你选择的起点Unity 版本 (LTS)推荐的 Android Gradle 插件 (AGP) 版本兼容的 Gradle 版本说明Unity 2021.3.x7.1.x (如 7.1.3)7.2 (如 7.5.1)较旧的LTSAGP不宜过高。Unity 2022.3.x7.4.27.6.4当前最稳定的组合之一社区反馈良好。Unity 2022.3.x8.0.08.1 (如 8.5)更前沿的组合可能需要处理更多迁移问题。Unity 6000.x (Alpha/Beta)跟随Unity编辑器内置版本跟随Unity编辑器内置版本预览版Unity建议使用其默认配置。核心技巧当你升级Unity大版本如从2021升级到2022后首次构建Android项目很可能遇到此问题。此时最佳实践是1) 启用所有Custom Gradle模板2) 将AGP版本升级到与新Unity版本更匹配的版本参考上表3) 指定一个兼容的Gradle版本。这应该能解决90%以上的兼容性构建错误。最后记住一个原则保持构建工具链的版本一致性是稳定的基石。在升级Unity、AGP或Gradle任何一个环节时都要有意识地检查它们之间的兼容性。养成在构建前查看官方兼容性矩阵的习惯能帮你节省大量排错时间。

相关新闻

揭秘Minecraft数据魔法:NBTExplorer让你的游戏世界随心所欲

揭秘Minecraft数据魔法:NBTExplorer让你的游戏世界随心所欲

揭秘Minecraft数据魔法:NBTExplorer让你的游戏世界随心所欲 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 你是否曾经想过深入Minecraft世界的底层&am…

2026/10/14 23:01:31 阅读更多 →
小白转行AI大模型工程师?这份独家学习路线助你3个月快速上手,收藏必备!

小白转行AI大模型工程师?这份独家学习路线助你3个月快速上手,收藏必备!

本文分享了作者从计算机小白成功转行AI大模型工程师的亲身经历,并提供了独家学习路线。文章指出企业更看重实操型人才而非数学家,并提出了一个为期三个月的学习计划:第一个月打牢Python基础、建立对大模型的基本认知、磨练Prompt技巧&#xf…

2026/10/14 16:52:06 阅读更多 →
免费的 Vue.js 入门与进阶视频教程

免费的 Vue.js 入门与进阶视频教程

这是我免费发布的高质量超清「Vue.js 入门与进阶视频教程」。 全网最好的、免费的 Vue.js 视频教程,课程基于 Vue.js 2.0,由浅入深,最后结合实际的项目进行了最棒的技术点讲解,此课程中也包含了很多的前端开发的其他知识点分享。 …

2026/10/4 7:07:06 阅读更多 →

最新新闻

Three.js WebGL粮仓3D可视化:物联网温湿度空间定位实战

Three.js WebGL粮仓3D可视化:物联网温湿度空间定位实战

简介:本资源是一个基于Vue.js与Three.js开发的物联网粮仓3D可视化管理系统,面向前端开发者、WebGL初学者及智慧农业/仓储数字化从业者,解决传统粮仓监控信息抽象、空间感知弱、数据交互不直观等管理痛点。项目完整实现3D场景渲染、实时环境数…

2026/10/14 23:02:03 阅读更多 →
诺瓦星云科技与老虎集团Java笔试对比:底层原理与业务场景的备考策略

诺瓦星云科技与老虎集团Java笔试对比:底层原理与业务场景的备考策略

1. 拆解这场笔试:两家公司到底在考什么先说说我为什么想聊这个话题。前段时间帮几个学弟学妹复盘秋招,发现一个很普遍的现象:很多人刷了几百道LeetCode,结果一到真实笔试就懵了。尤其是像诺瓦星云科技和老虎集团这种,笔…

2026/10/14 23:02:03 阅读更多 →
Wireshark入门实验:从HTTP抓包到TCP三次握手全解析

Wireshark入门实验:从HTTP抓包到TCP三次握手全解析

如果你正准备开始学习网络协议分析,第一次接触到 Wireshark 的 Introduction 实验,这篇文章就是为你准备的。Wireshark 是目前最主流的图形化抓包工具,它能把网卡上经过的每一个数据包“拍下来”并解析成人类能看懂的协议字段。这个入门实验的…

2026/10/14 23:02:03 阅读更多 →
大厂实习机试攻略:算法题型、高频考点与备考时间线

大厂实习机试攻略:算法题型、高频考点与备考时间线

每年三四月份,大批同学开始投暑期实习简历,其中通信和终端行业头部厂商的机试环节,是很多计算机相关专业学生绕不开的一道坎。我当时参加的就是2021届的暑期实习机试,整体感受是:题量不大但时间紧,表面考算…

2026/10/14 23:02:03 阅读更多 →
Wireshark入门实验全解析:抓包看懂TCP、DNS与HTTP协议

Wireshark入门实验全解析:抓包看懂TCP、DNS与HTTP协议

第一次打开 Wireshark 做 “Lab 1 : Introduction” 的时候,很多人其实根本不知道这个工具到底要我们干什么。我也是从计算机网络的第一堂实验课开始接触它,当时只被告诉一句话:“用它抓包,看里面的协议。” 这句话听起来平平无奇…

2026/10/14 23:02:03 阅读更多 →
对话式AI工程化:多轮对话与上下文管理的生产级解法

对话式AI工程化:多轮对话与上下文管理的生产级解法

这一篇是系列第五篇。前面几篇讲清楚了对话式AI的基础概念、主流模型的技术原理、Prompt工程的常用技巧,以及从零搭建聊天机器人的入门路线。到了这个阶段,再停留在“调用一下API、拼一个聊天窗口”的层面已经没有多大意义了。这篇我想把视角拉高&#x…

2026/10/14 23:00:58 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →