摘要:没有编程基础,不懂 Java 或 Kotlin,甚至连 Android Studio 的界面都看不懂。在 AI 的全程辅助下,我从零开始开发了一款适配圆形屏幕的 Microsoft To Do 客户端,并成功发布到了 GitHub。本文记录了这次“完全由 AI 代写”的开发奇幻漂流。
起因:一个小众但刚需的痛点
故事的开始很简单。我手头有一台圆形的安卓设备(非 Wear OS 原生系统),想要在上面查看和管理我的 Microsoft To Do(微软待办)。
然而,官方的应用界面全是方形的,四个角的内容在我的圆屏上根本看不见。
如果是以前,我只能放弃。但现在是 AI 时代。我冒出一个大胆的想法:我能不能只充当“产品经理”和“测试员”,让 AI 帮我写一个 App?
挑战:我真的不会写代码
我的技术栈约为零。我面临的挑战包括但不限于:
- 不懂安卓开发语言(Kotlin)。
- 不懂微软极其复杂的登录验证(OAuth 2.0)。
- 不懂怎么适配圆形屏幕。
- 甚至不知道怎么用开发软件(IDE)。
开发过程:AI 变身“全栈工程师”
我找了一位 AI 助手(Gemini 3 Pro),开始了一场对话式的开发。
1. 环境搭建:手把手教学
第一步就卡住了。下载好 Android Studio 后,满屏的英文和复杂的菜单让我头大。
AI 的指导非常细致,从“点击 New Project”到“选择 Empty Activity”,甚至当我找不到文件时,它教会了我如何切换左上角的“Android 视图”和“Project 视图”。它就像一个坐在我旁边的老师,告诉我:“别慌,等右下角的进度条跑完。”
2. 核心难点:搞定微软登录
要同步微软的数据,必须通过 Azure 进行 OAuth 认证。这对于很多新手程序员都是噩梦。
我告诉 AI:“我要用微软账号登录。”
AI 不仅给出了代码,还一步步指导我去 Azure 后台注册应用,告诉我哪些权限需要勾选(Tasks.ReadWrite),甚至帮我生成了 auth_config.json 配置文件。
最神奇的是,当签名哈希不匹配导致无法登录时,AI 告诉我如何从 Logcat 里抓取报错信息,并填回 Azure 后台。
3. 解决 Bug:复制粘贴的艺术
开发过程中并非一帆风顺,我遇到了很多红色的报错:
- Gradle 依赖缺失:因为微软的一个 UI 库在谷歌仓库里找不到。我把报错甩给 AI,它立马给出了解决方案——修改
settings.gradle.kts添加微软的 Maven 仓库。 - 安装失败:因为我的 base.apk 是提取的,缺少手表 CPU 的架构文件。AI 解释了原因(ABIS 错误),并指导我直接用 ADB 连接手表进行编译安装。
我发现,完全不懂代码也没关系,只要你会“复制报错信息”给 AI,它就能修好。
4. UI 与体验优化:AI 的审美
原本的 App 只是能用,但体验不好。我开始提出更像“产品经理”的要求:
- “屏幕是圆的,边缘内容看不见。” -> AI 引入了
Padding和LazyColumn。 - “添加任务太麻烦。” -> AI 设计了一个极简的弹窗,集成了日期选择和重复规则。
- “没有返回键。” -> AI 手写了一个手势监听,实现了全局右滑返回。
5. 图标设计:代码画图
到了最后,我需要一个 App 图标。我没有 PS 基础。
AI 直接写了一段 Python 代码,用 matplotlib 绘图库生成了一个符合安卓规范的圆形图标——深色背景,蓝色勾号,极简又好看。
成果展示
最终,我得到了 RoundToDo:
- 体积轻量:只有几兆。
- 完美适配:黑色背景省电,列表布局契合圆形边缘。
- 功能完整:支持双向同步、长按删除、截止日期设置、离线缓存(秒开应用)。
我甚至在 AI 的指导下,学会了如何生成数字签名、打包 APK,并使用 Git 将代码上传到了 GitHub,还自动生成了专业的 README 和 Release 文案。
思考与总结
这次经历让我对“个人开发”有了全新的认知:
- 编程门槛的消失:传统的编程门槛是“语法”和“环境”,现在这些都可以交给 AI。人类的核心竞争力变成了**“想法”和“描述问题的能力”**。
- 耐心的重要性:虽然 AI 很强,但在配置环境(如 Gradle)时依然会报错。这时候不能放弃,要耐心地把错误喂给 AI,它总能找到办法。
- 创造力的释放:以前因为“不会做”而被扼杀的想法,现在都可以尝试了。
RoundToDo 是我(和 AI)的第一个孩子。如果你也有一闪而过的灵感,别因为“不会写代码”而却步。打开 AI,现在就开始吧。
(注:本项目代码已开源,感兴趣的朋友可以在 GitHub 搜索 RoundToDo,或直接点击这个[链接](https://github.com/10086Coda10086/RoundToDo?tab=readme-ov-file))