零基础挑战用cursor开发一个安卓app——打包成apk并上传到GitHub
1. 零基础用 Cursor 写安卓 App 到底难在哪从能跑到能装的距离很多人第一次用 Cursor 写安卓 App卡住的地方往往不是代码本身而是「它在模拟器里跑起来了但我怎么把它变成一个能发给朋友的安装包」。这个落差感特别真实你在 Cursor 里敲几句需求Composer 帮你把 Activity、布局、逻辑都补全了点一下 Run模拟器里 App 正常打开那一刻成就感拉满。可当你把项目文件夹直接压缩发给别人对方装的时候弹出一句「应用未安装」或者「解析包时出现问题」你才发现自己手里拿的是 debug 版本不是能分发的 release 包。所以这篇要解决的是一条完整链路用 Cursor 从零构建一个安卓 App把它打包成正式签名的 APK再通过 Git 上传到 GitHub。整条链路里Cursor 负责写代码和改 bugAndroid Studio 负责编译和签名Git 负责版本管理和上传。三者分工明确缺一不可。零基础也能跟做因为每一步我都会给出可复制的命令、配置片段和验证动作你照着敲就行。先说清楚适合谁看。如果你满足下面任意一条这篇就是写给你的完全没写过安卓、但想用 AI 辅助快速做出第一个 App 的人写过一点 Java/Kotlin 但没独立打过 release 包的人手里有 Cursor 但不知道怎么把它和 Android 工程结合起来的人以及想把代码传到 GitHub 却每次都在git push那一步卡住的人。核心检索词就三个Cursor 写安卓、打包 APK、上传 GitHub全文围绕它们展开。我自己的习惯是把 Cursor 当成一个「懂安卓的结对程序员」而不是「一键生成器」。它很强但你得给它正确的上下文——项目结构、Gradle 版本、目标 SDK这些它看不到就会瞎猜。所以第一步不是急着让它写代码而是先把工程骨架搭对。下面从环境准备开始一步步来。2. 前置准备Cursor 配置、Android Studio 与 TaoToken 接入在动手写代码之前环境必须先立起来。安卓开发和纯前端不一样它依赖 JDK、Android SDK、Gradle 这一整套工具链任何一个版本对不上都会在编译时报错。零基础最容易踩的坑就是「JDK 版本和 Gradle 不匹配」报错信息还特别长看着就头大。所以这一节我把环境拆成三块Android Studio 装工具链、Cursor 写代码、TaoToken 提供模型能力。先说 Android Studio。它是安卓官方 IDE我们主要用它两件事创建项目骨架、打包签名 APK。去官网下载安装包一路下一步即可。安装完成后第一次启动会引导你下载 Android SDK选一个稳定的 API 级别比如 API 34别追最新预览版预览版容易和 Gradle 插件打架。装完后在Settings Languages Frameworks Android SDK里确认 SDK Platforms 和 SDK Tools 都装好了尤其是Android SDK Build-Tools和Android SDK Platform-Tools打包和连真机都要用。然后是 Cursor。Cursor 是基于 VS Code 的编辑器所以它天然能打开任何文件夹包括 Android Studio 创建的项目目录。你不需要在 Cursor 里装安卓插件也能改代码但装了 Kotlin 和 Gradle 插件体验会更好语法高亮和跳转都顺。关键操作是CtrlI调出 Composer内联对话选中项目文件夹后直接描述需求它会跨文件修改。这里有个细节Composer 改完代码不会自动帮你编译你得回到 Android Studio 或命令行跑一次构建才能知道有没有编译错误。接着是模型能力这块。Cursor 自带模型可以用但如果你想要更稳定的长上下文和更可控的调用可以接入 TaoToken 的 API。TaoToken 是一个大模型 API 聚合平台提供统一的接口地址兼容 OpenAI 风格的调用方式适合在 Cursor、Cline 这类工具里配置自定义模型端点。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 基础地址是 https://taotoken.net/api 注意这个地址不带任何查询参数。在 Cursor 里配置自定义模型端点路径是Settings Models OpenAI API Key把 Override Base URL 填成https://taotoken.net/apiAPI Key 填你在 TaoToken 控制台生成的 Key。生成 Key 的入口在控制台的 API Keys 页面地址是 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 。填完之后在模型列表里选一个你需要的模型 ID比如常用的对话模型或代码模型保存即可。验证是否接通最简单的方式是在 Cursor 的对话里问一句「你好」能正常回复就说明端点配对了。这里要提醒一句Cursor 的模型配置和 Android 工程本身是两回事。模型配好只影响 AI 帮你写代码的质量不影响 Gradle 能不能编译。很多人把这两个问题混在一起AI 不回复就以为工程坏了其实是网络或 Key 的问题。分开排查效率高很多。环境这块最后补一个 Git。去 Git 官网下载 Windows 版一路下一步装完。装完后在任意文件夹右键能看到「Git Bash Here」就说明成功了。Git 后面上传 GitHub 要用现在装好省得回头再折腾。三件套齐了Android Studio 管编译打包Cursor 管写代码Git 管上传。下面进入正题先让 Cursor 把 App 写出来。3. 可复制配置让 Cursor 正确理解你的安卓工程这一节是全文最核心的操作部分因为 Cursor 能不能写出能编译的安卓代码取决于它有没有拿到正确的工程上下文。我见过太多人直接对着一个空文件夹让 Cursor「写个安卓 App」结果它生成一堆文件但根本跑不起来因为缺少 Gradle 配置、缺少AndroidManifest.xml、包名和目录结构对不上。正确做法是先用 Android Studio 创建标准工程再用 Cursor 打开这个工程去改。第一步打开 Android Studio选择New Project Empty Views Activity或 Empty Activity看你版本填写项目名、包名、保存路径语言选 Kotlin最低 SDK 选 API 24 左右这样覆盖面广。点 Finish等 Gradle 同步完成。同步成功后你会看到一个标准的安卓工程结构app/src/main/java/包名/MainActivity.kt、app/src/main/res/layout/activity_main.xml、根目录的build.gradle.kts和settings.gradle.kts。这个骨架非常重要它是 Cursor 后续改代码的地基。第二步关掉 Android Studio 的编辑窗口不用关进程打开 Cursor选择File Open Folder选中刚才创建的项目根目录。这时 Cursor 左侧会显示整个工程树。按CtrlI调出 Composer先别急着提需求先让它「读一遍工程」。你可以输入「请阅读这个安卓工程的结构告诉我主 Activity、布局文件和 Gradle 配置分别在哪些文件里不要修改任何代码。」这一步是给 Cursor 建立上下文它读完后再提需求准确率高很多。第三步配置 Cursor 的模型端点如果你用 TaoToken。在 Cursor 设置里找到模型配置填入 Base URLhttps://taotoken.net/api和你的 API Key模型 ID 按需选择。配置片段用 JSON 表示大概是这样注意路径和字段名以你实际 Cursor 版本为准{ openai.apiKey: 你的_TaoToken_API_Key, openai.baseUrl: https://taotoken.net/api, model.id: 你选择的模型ID }如果你用的是 Cline 这类支持 MCP 的插件配置会写在cline_mcp_settings.json里Base URL、Key、Model ID 三件套一个都不能少。这里强调一下三件套的完整性Base URL 决定请求打到哪Key 决定你有没有权限Model ID 决定用哪个模型。少任何一个都会报 401 或 model not found。第四步给 Cursor 提第一个真实需求。比如你要做一个「防止手机数据被恢复」的 App可以这样描述「在 MainActivity 里实现一个界面包含一个开关按钮和一段说明文字开关打开时执行数据覆写逻辑先用占位函数关闭时停止。布局用 ConstraintLayout文字用中文。」Composer 会同时改MainActivity.kt和activity_main.xml。改完后回到 Android Studio 点 Run看模拟器能不能起来。如果报错把报错信息复制回 Cursor让它修。这个「改—编译—报错—再改」的循环就是零基础用 Cursor 开发安卓的真实节奏。这里给一个 Gradle 配置的参考片段放在app/build.gradle.kts里确保compileSdk、minSdk、targetSdk和你的 SDK 安装版本一致android { namespace com.example.myapp compileSdk 34 defaultConfig { applicationId com.example.myapp minSdk 24 targetSdk 34 versionCode 1 versionName 1.0 } }配置对不上的典型症状是 Gradle sync 失败提示compileSdk 34 not found这时候去 SDK Manager 把对应版本装上就行。别小看这一步很多「Cursor 写的代码编译不过」的锅其实是 SDK 版本没装。4. 打包 APK 与上传 GitHub验证请求与成功结果代码能跑之后接下来两件事打包 release APK、上传 GitHub。这两步都有明确的成功标志我们逐个验证。先说打包。debug 版本不能分发必须打 release 包并签名。在 Android Studio 里操作菜单Build Generate Signed Bundle / APK选 APK然后创建或选择一个签名密钥keystore。如果你是第一次点 Create new填密钥路径、密码、别名等信息记住密码丢了就再也签不了同一个包。创建完选中这个 keystore输入密码选 release 构建类型勾选 V1 和 V2 签名新版本可能只有 V2不影响点 Finish。构建完成后Android Studio 右下角会弹出提示点locate就能找到生成的 APK通常在app/release/app-release.apk。验证动作把这个 APK 传到手机上安装能正常打开、功能正常就说明打包成功。如果安装时提示「应用未安装」多半是签名或 minSdk 问题如果提示「解析包错误」多半是 APK 没生成完整或传输损坏。这一步的成功结果很直观手机桌面出现你的 App 图标点开能用。如果你更喜欢命令行也可以用 Gradle 打包。在项目根目录执行./gradlew assembleReleaseWindows 下用gradlew.bat assembleRelease。前提是你在build.gradle.kts里配好了signingConfigs否则打出来的 release 包没签名装不上。命令行打包的好处是可以写进 CI但对零基础来说Android Studio 图形界面更友好先用界面跑通再学命令行。再说上传 GitHub。先在 GitHub 上注册账号然后新建一个仓库New repository填仓库名选 Public 或 Private创建后会看到一个仓库地址形如https://github.com/你的用户名/仓库名.git。回到项目文件夹右键选「Git Bash Here」依次执行git init git add . git commit -m first commit git remote add origin https://github.com/你的用户名/仓库名.git git push -u origin master执行git add .前后可以用git status看状态add 之前文件是红色未跟踪add 之后变绿色已暂存。git push时可能要求输入账号密码现在 GitHub 不支持密码认证需要用 Personal Access Token 代替密码。在 GitHub 的Settings Developer settings Personal access tokens里生成一个 token勾选 repo 权限复制出来当密码用。验证动作push 成功后刷新 GitHub 仓库页面能看到你的项目文件列表就说明上传成功。如果 push 报remote: Support for password authentication was removed就是没用 token如果报failed to push some refs多半是远程仓库有初始文件比如 README先git pull --rebase origin master再 push。这里有个容易忽略的点安卓工程里的build/目录、.gradle/目录、local.properties不应该上传它们体积大且和本机绑定。在项目根目录建一个.gitignore文件写入*.iml .gradle /local.properties /.idea .DS_Store /build /app/build /captures .externalNativeBuild .cxx这样git add .时就会自动跳过这些文件仓库干净很多。5. 本篇常见错误排查401、local proxy failed、reading choices 与 OAuth这一节专门收口报错。零基础最怕看到一屏红字其实大部分错误就那几类认出来就好办。第一类模型调用报 401。典型信息是401 Unauthorized或invalid api key。这几乎都是 Key 的问题Key 填错、Key 过期、或者 Base URL 和 Key 不匹配比如 Key 是 TaoToken 的URL 却填了别家。排查顺序先确认 Base URL 是https://taotoken.net/api再确认 Key 是从 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 生成的最后确认这个 Key 有余额或权限。三件套Base URL、Key、Model ID逐个核对401 基本都能解决。第二类local proxy failed或连接超时。这类报错说明请求根本没出去或者被本地网络环境拦了。先检查你的网络能不能正常访问外网再检查 Cursor 或插件里有没有配多余的代理设置。如果你在公司网络或校园网可能有防火墙限制换个网络环境试试。注意这里说的是正常的网络连通性排查不涉及任何特殊工具。第三类reading choices相关报错比如cannot read property choices of undefined。这通常发生在模型返回格式和客户端预期不一致时。常见原因是 Base URL 填成了不带/api的地址或者填成了某个具体接口路径。正确做法是 Base URL 只填到https://taotoken.net/api让客户端自己拼接/v1/chat/completions。如果你手动填了完整路径反而会 404客户端拿不到choices字段就报这个错。第四类OAuth 或登录相关报错。如果你在 Cursor 里用 GitHub 账号登录或者用某些插件的 OAuth 流程报OAuth callback failed或redirect_uri mismatch多半是回调地址没配对。这类问题和安卓工程无关属于工具登录问题重新走一遍授权流程或者改用 API Key 方式接入通常更省事。第五类Gradle 编译报错。这类最多但规律也最强。Unresolved reference是缺依赖或包名写错Duplicate class是依赖冲突用./gradlew app:dependencies看依赖树Execution failed for task :app:processDebugManifest多半是AndroidManifest.xml里写了不存在的 Activity 或权限。把完整报错复制给 Cursor让它定位比你自己猜快得多。第六类APK 装不上。前面提过「应用未安装」查签名和 minSdk「解析包错误」查文件完整性。还有一个隐蔽的你手机上的系统版本低于 App 的 minSdk也会装不上。把 minSdk 调低或者换台新点的手机测试。排查的核心思路就一句先分清是「模型/网络问题」还是「工程/编译问题」。前者看 401、proxy、choices、OAuth后者看 Gradle 报错和 APK 安装提示。分清了解决路径就清晰了。6. 语义一致 CTA把这条链路跑通之后往哪走走到这里你应该已经完成了用 Cursor 写出一个能跑的安卓 App、用 Android Studio 打出 release APK、用 Git 把代码推上 GitHub。这条链路跑通一次后面再做第二个、第三个 App 就是重复劳动速度会快很多。如果你在接入模型端点时遇到问题或者想换更稳定的调用方式可以去 TaoToken 的接入文档看具体配置说明地址是 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。文档里有不同工具和语言的接入示例照着改 Base URL 和 Key 就行。想先验证模型能不能正常对话可以用模型对话页面快速测一下地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel_chat 。如果你打算长期用 AI 辅助写代码、做 Agent 类项目Coding Plan 会更划算入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。它适合那种每天都要和模型来回几十轮、需要稳定长上下文的场景。至于 Claude Code 这类命令行编码工具接入说明在 https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaude_codeutm_campaignrewrite 配置方式和 Cursor 类似也是 Base URL 加 Key 加 Model ID 三件套。最后给一个我自己的实用技巧每次用 Cursor 改完安卓代码别急着在 Cursor 里找编译按钮直接切回 Android Studio 点 Run。因为安卓的编译链路Gradle、AAPT、D8都在 Android Studio 这边Cursor 只负责改文本。把「改代码」和「编译验证」分成两个工具做职责清晰出错也好定位。等你熟练了再考虑用命令行./gradlew把编译也自动化。这条链路你跑通一次就已经超过大多数「只会让 AI 生成代码但装不上手机」的人了。

相关新闻

基于GPT-4的 IDEA 神仙插件,无需魔法,亲测好用!TaoToken 统一 Key 接入实测

基于GPT-4的 IDEA 神仙插件,无需魔法,亲测好用!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/13 22:05:29 阅读更多 →
Agent 开发实战:从上下文窗口、Function Calling 到 MCP 记忆与工具管理

Agent 开发实战:从上下文窗口、Function Calling 到 MCP 记忆与工具管理

做 Agent 开发这一年多,我最大的感受是:模型的能力早就不是瓶颈,真正卡住你的永远是两个词——记忆和工具。一个 Agent 假如没有记忆,上一轮聊完这一轮就翻脸不认人;假如没有工具,它就只能输出文字&#xf…

2026/10/13 21:14:56 阅读更多 →
城市垃圾分类回收管理系统毕业设计:数据库设计与JavaWeb实战要点

城市垃圾分类回收管理系统毕业设计:数据库设计与JavaWeb实战要点

简介:面向毕业设计、期末大作业与课程设计场景,这套Java城市垃圾分类回收管理系统源码包含项目源码与配套数据库脚本,适合计算机相关专业学生快速完成系统开发、部署和答辩演示。资源共218个文件,压缩包约2.43MB,主要涵…

2026/10/14 0:22:52 阅读更多 →

最新新闻

HTTP协议演进与Python开发实战指南

HTTP协议演进与Python开发实战指南

1. HTTP协议版本演进概述作为Web开发的基石协议,HTTP从诞生至今已经历了多个版本的迭代。每次版本升级都针对当时的网络环境和应用需求做出了重要改进。对于Python开发者而言,深入理解这些差异不仅能帮助我们在面试中游刃有余,更能指导日常开…

2026/10/14 1:04:03 阅读更多 →
CH32M030两级电荷泵与高压开漏驱动设计实战

CH32M030两级电荷泵与高压开漏驱动设计实战

/* 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 1:04:03 阅读更多 →
羽毛球科学训练:三维评估与个性化方案

羽毛球科学训练:三维评估与个性化方案

1. 项目概述:羽毛球训练的本质突破在羽毛球爱好者群体中,长期存在一个普遍困境:约70%的业余选手的训练效果停滞在入门后的第一个平台期。这个现象背后,是传统"一刀切"训练模式与个体差异之间的根本矛盾。吴忠码上俱乐部…

2026/10/14 1:04:03 阅读更多 →
倍压电路电压建立过程详解:电荷泵原理与工程调试要点

倍压电路电压建立过程详解:电荷泵原理与工程调试要点

/* 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 1:04:03 阅读更多 →
STM32F103 GPIO寄存器深度解析:从CRL/CRH到BSRR的实战指南

STM32F103 GPIO寄存器深度解析:从CRL/CRH到BSRR的实战指南

/* 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 1:04:03 阅读更多 →
ESP32-S3 Arduino开发实战:从选型配置到避坑指南

ESP32-S3 Arduino开发实战:从选型配置到避坑指南

/* 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 1:03:03 阅读更多 →

日新闻

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/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

2026/10/13 16:22:04 阅读更多 →
影刀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/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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →