一名Android开发者使用Cursor 打造了一款记账APP

最近AI辅助编程很火, 有以插件形式存在的Github Copilot, 阿里的通义零码, 字节的MarsCode等, 还有自带AI的集成开发环境,如国外的Cursor和字节推出的Trae等。

自带的AI集成开发环境, 优点是上下文基于整个工程, 可以基于整个工程的业务逻辑, 代码风格。给出合适的提示, 并能根据需求找出需要修改的位置并作出合理的修改。

作为一名Android开发者,我们本次来使用 Cursor来帮我们生成一款记账的APP, 来探索Cursor的能力和边界。

先来看看最终的效果:

www.bilibili.com/video/BV1qS...

APK体验: github.com/stevenwsg/C...

附上源码:

github.com/stevenwsg/C...

好了,让我们开始动手吧

1、Prompt 编写

shell 复制代码
###目标
设计实现一个记账app

###需求
设计一款记账APP, 可以针对日常的消费支出进行记录, 当用户发生消费时, 可以用我们的APP进行记录, 然后我们的APP 可以针对 用户的 消费记录 进行按照日,星期, 月度, 年度的统计功能。

###UI
1. 使用 Google Material Design 风格
2. 颜色搭配柔和,美观
3、可以适当加入一些动画

###功能
1.支持记录消费支出, 比提供几种消费类型供用户选择, 比如住房,数码, 餐饮, 教育,购物等
2.支持统计功能, 支持用户选择某一天, 某一星期, 某一个月的消费记录进行查看。 并做出统计图标或者圆形图标机型直观展示


###实现
1. 使用Kotlin语言
2、使用JetPak Room 数据库进行存储消费记录
3、可以引入一些图表库进行展示统计的消费记录
4、可以适当增加一些动画
5、生成的代码能够正常运行

###角色
1. 你是一个安卓专家、精通app的设计实现, 同时你对UI有高深的造诣,能够画出让大多数满意舒服的UI
2. 可以自主根据需求设计实现精美的app的能力

最新版的Cursor, 我们选择Agent 模式, 模型我们选择 claude-3.7-sonnet。 我们将上述的prompt 投喂给Cursor, 让Cursor 帮我们生成代码。

2、 生成源码

经过一段时间等待, Cursor APP 帮我们生成了。

可以看到Cursor帮我们出了一些处理:

  1. 使用了Google Material UI 风格设计
  2. 使用Room 数据库来进行存储账单
  3. 可以支持对账单的 增删改查
  4. 可以设置这笔消费账单关联的类型
  5. 可以针对日,周, 月,年 进行统计
  6. 使用图表对账单数据进行统计
  7. 可以查看每笔账单的详情
  8. 使用 MVVM 结构模式 构建
  9. 使用kotlin 协程来处理异步操作
  10. 使用 Navcation来进行导航

可以看出新增了 54个文件 2643行代码 , 减少了83行代码。 我们点击 Accet all按钮, 将所有的更改应用到项目中。 在切换到 Android Studio中 试着运行一下。

首先 Android Studio 提示报错,可以看出是ViewBinding 导致的, 我们先sync 一下试试

Sync完成后, 没有了报错。 我们运行一下试试

Android Studio 遇到了运行报错, 我们先试试将错误信息扔给Cursor, 看看 Cursor能不能帮我们解决。

好了 , 解决完了, 这次看我们能不能运行成功。 不出意外 又有一些新的报错, 我们扔给Cursor

Cursor 又修改了一版, 我们再试试

这次运行起来了, 让我们看看结果

3、 运行结果

3.1 记账页面

首先是记账页面, 可以选择金额, 消费类型, 描述 和日期选择

3.2 首页

然后是首页, 以列表的形式 展示 最近的消费记录. 不过列表好像没有展示出来

3.3 消费统计页面

可以看出,可以根据, 今天,这周,这个月,今年来列出消费统计, 并按照圆形图标的方式展示出每种消费所对应的比例

4、优化

目前可以明显看出, 存在两个问题

  1. 三个页面的沉浸式状态栏处理的不太好, 页面的Title 距离顶部的时间太近了
  2. 按照设计和源码来看, 首页的消费列表 RecyclerView没有显示出UI

我们根据这两个问题, 让Cursor 在帮我们在修改一下。

经过和Cursor的几次沟通 改好了。

首页也显示出来了账单列表。 点击账单列表的Item。 可以进入账单编辑页面。可以对账单进行编辑 和删除

好了, 到这里,我全程一行代码度没有写, 体会到Cursor的强大之处了嘛

可以查看视频 看看最终效果: www.bilibili.com/video/BV1qS...

5、源码分析

我没有写一行代码, Cursor 开发加调试 不到一个小时生成的。 速度是已经很快了, 让我们简单的看看部分代码, 看下代码质量,代码风格, 以及Cursor到底怎么做到的

首先看下Cursor 帮我们引入了那些库

scss 复制代码
dependencies {
    // Core dependencies
    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.appcompat)
    implementation(libs.material)
    implementation(libs.androidx.activity)
    implementation(libs.androidx.constraintlayout)
    
    // Navigation Component
    implementation("androidx.navigation:navigation-fragment-ktx:2.7.7")
    implementation("androidx.navigation:navigation-ui-ktx:2.7.7")
    
    // Room Database
    implementation("androidx.room:room-runtime:2.6.1")
    implementation("androidx.room:room-ktx:2.6.1")
    kapt("androidx.room:room-compiler:2.6.1")
    
    // MPAndroidChart for statistics visualization
    implementation("com.github.PhilJay:MPAndroidChart:v3.1.0")
    
    // ViewModel and LiveData
    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0")
    implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.7.0")
    
    // DatePicker for date selection
    implementation("com.google.android.material:material:1.11.0")
    
    // Coroutines for async programming
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
    
    // Tests
    testImplementation(libs.junit)
    androidTestImplementation(libs.androidx.junit)
    androidTestImplementation(libs.androidx.espresso.core)
}

引入 了

  • navigation 导航
  • room 实现数据库
  • MPAndroidChart 实现图标
  • material 实现md风格
  • lifecycle viewmodel livedata 实现MMVM框架
  • kotlinx-coroutines-android Kotlin 协程

可以看出 Cursor 是用MMVM 模式帮我们写的。

项目结构其实也是蛮清晰的

具体的源码不带大家看了, 我上传到Github, 大家如果感兴趣的话, 可以拉下来看看:github.com/stevenwsg/C...

7、总结

用Cursor 不到一个小时生成的APP, 虽然是一个很简单的APP, 我觉得已经很厉害,效率很高了。 至此, 我们看到了Cursor的能力, 至于上限和边界还远远没有触及到。我是被震撼到了, 可以看到这个模型一直在进化, 以后进化的会更厉害。

我觉得, 对于我们普通的开发者, 不仅要借助这些AI辅助编程工具, 提升我们的工作效率, 还是要在提高自己的架构能力,沟通能力, 业务需求能力。 现在的AI确实是可以替代一些工作量的,但总有些东西是AI代替不了的

相关推荐
plainGeekDev3 分钟前
如何设计一个 Loop:以登录模块为例
ai编程·claude
全栈弄潮儿1 小时前
为什么 AI 生成的代码不能直接使用?如何对 AI 代码进行检查和验证?
chatgpt·openai·ai编程
文心快码BaiduComate2 小时前
文心快码能力扩展、记忆、代码可视化上线
人工智能·ai编程·vibecoding
谢泽浩2 小时前
通过 OmwAI 中转服务快速接入Codex
ai编程
做前端的娜娜子4 小时前
文档加载工程:多格式数据接入与 Document 标准化
langchain·ai编程·掘金·金石计划
小四的小六4 小时前
端侧模型量化踩坑之后:我重新想清楚了“快、准、小“只能选两个
llm·openai·ai编程
Do1you1believe1light4 小时前
我拆开了 Prime Agent:然后哭着想要给它真正的智能
llm·agent·ai编程
梅头脑4 小时前
写了满满一屏prompt,AI还是画不出我要的姿势——直到我学会了LoRA+ControlNet+IP-Adapter三件套叠加
ai编程
小怼子4 小时前
用 TraeWork 给 TraeWork 中添加了“任务看板”功能
trae
9i编程4 小时前
AI 只解决眼前那个坑【下篇】:写进skills了,重建还是踩坑
人工智能·openai·ai编程