HarmonyOS开发日记:那些被CodeGenie改写的日子!
Day 1 - 2024年12月15日 周日 阴
意外的相遇
今天在GitHub上闲逛时,偶然看到有人在讨论华为的DevEco CodeGenie。评论区炸了,有人说"效率提升神器",也有人质疑"又是营销噱头"(官方14号正式公开发布)。
作为一个刚转型鸿蒙开发两个月的Android老兵,我对各种"效率工具"其实已经免疫了。用过太多承诺"10倍生产力"却只能补全几个单词的插件。
但看到有个高赞评论说:"这是我见过唯一真正懂鸿蒙的AI",还是忍不住点开了官网。
下载、安装、重启IDE。整个过程15分钟。
打开DevEco Studio,侧边栏多了个机器人图标。
"来吧,让我看看你有什么本事。"
附上具体的安装步骤:
下载之后的安装压缩包无需解压,待完成之后,可依照下方步骤进行安装。
在DevEco Studio菜单栏,点击File > Settings(如果你的电脑是MacOS,那么路径为DevEco Studio > Preferences)> Plugins,点击设置按钮> Install Plugin from Disk…,就可以进行安装本地的插件了。
选择下载的插件安装包即可,安装之后,点击Restart IDE,最后重新启动DevEco Studio,就大功告成啦。

Day 3 - 2024年12月17日 周二 晴
第一次震撼
早上站会,老大分配了个任务:"做个天气预报页面,类似墨迹天气那种,今晚要看到demo。"
心里咯噔一下。天气页面看似简单,但细节太多了:24小时温度曲线图、7天预报卡片、空气质量指数、动态天气背景...按我的开发速度,没个两天搞不定。
想起了CodeGenie。
试着输入:"创建天气预报界面,包含当前温度大字展示、24小时温度折线图、未来7天天气卡片列表、空气质量指数显示、根据天气状态切换背景色"。
鼠标还在转圈,我去倒了杯咖啡。回来时,600多行代码已经静静地躺在对话框里。
// 天气数据模型
class WeatherData {
currentTemp: number = 0;
weather: string = '';
airQuality: number = 0;
hourlyData: HourlyWeather[] = [];
weeklyData: DailyWeather[] = [];
}
class HourlyWeather {
time: string = '';
temp: number = 0;
}
class DailyWeather {
date: string = '';
weather: string = '';
maxTemp: number = 0;
minTemp: number = 0;
}
@Entry
@Component
struct WeatherPage {
@State weatherData: WeatherData = new WeatherData();
@State bgColor: string = '#87CEEB'; // 默认晴天蓝色
aboutToAppear() {
this.loadWeatherData();
this.updateBackgroundColor();
}
loadWeatherData() {
// 模拟加载数据
this.weatherData = {
currentTemp: 22,
weather: '晴',
airQuality: 45,
hourlyData: Array.from({length: 24}, (_, i) => ({
time: `${i}:00`,
temp: Math.floor(Math.random() * 10) + 18
})),
weeklyData: Array.from({length: 7}, (_, i) => ({
date: `周${['一','二','三','四','五','六','日'][i]}`,
weather: ['晴','多云','阴','雨'][Math.floor(Math.random() * 4)],
maxTemp: Math.floor(Math.random() * 5) + 25,
minTemp: Math.floor(Math.random() * 5) + 15
}))
};
}
updateBackgroundColor() {
const weatherColors: Record<string, string> = {
'晴': '#87CEEB',
'多云': '#B0C4DE',
'阴': '#778899',
'雨': '#4682B4',
'雪': '#F0F8FF'
};
this.bgColor = weatherColors[this.weatherData.weather] || '#87CEEB';
}
// 温度折线图组件
@Builder
TemperatureChart() {
Canvas(this.getContext())
.width('100%')
.height(150)
.onReady(() => {
this.drawTemperatureLine();
})
}
drawTemperatureLine() {
const ctx = this.getContext().getContext('2d');
if (!ctx) return;
const width = 350;
const height = 150;
const padding = 20;
const data = this.weatherData.hourlyData.slice(0, 12);
if (data.length === 0) return;
// 找出温度范围
const temps = data.map(d => d.temp);
const maxTemp = Math.max(...temps);
const minTemp = Math.min(...temps);
const tempRange = maxTemp - minTemp || 1;
// 绘制折线
ctx.beginPath();
ctx.strokeStyle = '#FF6347';
ctx.lineWidth = 3;
data.forEach((item, index) => {
const x = padding + (width - 2 * padding) * index / (data.length - 1);
const y = height - padding - ((item.temp - minTemp) / tempRange) * (height - 2 * padding);
if (index === 0) {
ctx.moveTo(x, y);
} else {
ctx.lineTo(x, y);
}
// 绘制温度点
ctx.fillStyle = '#FF6347';
ctx.beginPath();
ctx.arc(x, y, 4, 0, Math.PI * 2);
ctx.fill();
// 绘制温度文字
ctx.fillStyle = '#333333';
ctx.font = '12px sans-serif';
ctx.textAlign = 'center';
ctx.fillText(`${item.temp}°`, x, y - 10);
// 绘制时间
ctx.fillText(item.time, x, height - 5);
});
ctx.stroke();
}
getContext(): RenderingContext {
return new RenderingContext();
}
// 空气质量指示器
@Builder
AirQualityIndicator() {
Row() {
Text('空气质量')
.fontSize(14)
.fontColor('#666666')
Text(`${this.weatherData.airQuality}`)
.fontSize(18)
.fontWeight(FontWeight.Bold)
.fontColor(this.getAQIColor())
.margin({left: 8})
Text(this.getAQILevel())
.fontSize(14)
.fontColor(this.getAQIColor())
.margin({left: 4})
}
.padding(12)
.backgroundColor('#FFFFFF')
.borderRadius(8)
}
getAQIColor(): string {
const aqi = this.weatherData.airQuality;
if (aqi <= 50) return '#00E400';
if (aqi <= 100) return '#FFFF00';
if (aqi <= 150) return '#FF7E00';
if (aqi <= 200) return '#FF0000';
return '#8F3F97';
}
getAQILevel(): string {
const aqi = this.weatherData.airQuality;
if (aqi <= 50) return '优';
if (aqi <= 100) return '良';
if (aqi <= 150) return '轻度污染';
if (aqi <= 200) return '中度污染';
return '重度污染';
}
// 7天预报卡片
@Builder
WeeklyForecast() {
Column() {
Text('未来7天')
.fontSize(16)
.fontWeight(FontWeight.Bold)
.margin({bottom: 12})
ForEach(this.weatherData.weeklyData, (day: DailyWeather) => {
Row() {
Text(day.date)
.fontSize(14)
.width(60)
Text(day.weather)
.fontSize(14)
.layoutWeight(1)
.textAlign(TextAlign.Center)
Row() {
Text(`${day.maxTemp}°`)
.fontSize(14)
.fontColor('#FF6347')
Text('/')
.fontSize(14)
.margin({left: 4, right: 4})
Text(`${day.minTemp}°`)
.fontSize(14)
.fontColor('#4682B4')
}
}
.width('100%')
.padding({top: 8, bottom: 8})
.borderRadius(4)
})
}
.width('100%')
.padding(16)
.backgroundColor('#FFFFFF')
.borderRadius(12)
}
build() {
Column() {
// 顶部大字温度显示
Column() {
Text(`${this.weatherData.currentTemp}°`)
.fontSize(80)
.fontWeight(FontWeight.Bold)
.fontColor('#FFFFFF')
Text(this.weatherData.weather)
.fontSize(24)
.fontColor('#FFFFFF')
.margin({top: 8})
}
.padding({top: 60, bottom: 40})
// 空气质量
this.AirQualityIndicator()
.margin({bottom: 20})
// 24小时温度曲线
Column() {
Text('24小时预报')
.fontSize(16)
.fontWeight(FontWeight.Bold)
.margin({bottom: 12})
this.TemperatureChart()
}
.width('100%')
.padding(16)
.backgroundColor('#FFFFFF')
.borderRadius(12)
.margin({bottom: 20})
// 7天预报
this.WeeklyForecast()
}
.width('100%')
.height('100%')
.padding(20)
.backgroundColor(this.bgColor)
.animation({
duration: 500,
curve: Curve.EaseInOut
})
}
}
盯着屏幕看了三分钟,我不敢相信这是真的。
代码结构清晰、UI设计精美、交互逻辑完整、注释详尽...最关键的是,点击运行,一个完整的天气页面就展现在眼前了!
24小时温度曲线流畅绘制、背景色根据天气动态变化、7天预报卡片整齐排列...
下午四点,我把demo发到项目群。
老大秒回:"干得漂亮!比我预期的好太多了。"
产品经理:"设计比我想象的还好看,这个开发可以!"
我笑而不语。心想:是啊,这个"开发"确实很厉害。
如下是实际使用插件AI代码生成截图:

Day 7 - 2024年12月21日 周六 大雪
深夜的技术攻坚
周末加班,要解决一个棘手的bug。
应用在后台被杀死后,分布式任务就断开了,无法恢复。查了两天文档,试了十几种方案,都不行。
凌晨一点,脑子已经一团浆糊。
抱着试试看的心态问CodeGenie:"HarmonyOS应用被杀死后如何恢复分布式任务连接?"
CodeGenie的回答非常详细:
应用被杀死后恢复分布式任务,需要以下步骤:
1. 使用ContinuationManager注册应用续流能力
2. 在AbilityStage中监听onContinue事件
3. 保存任务状态到分布式数据库
4. 应用重启时从数据库恢复状态
5. 重新建立分布式连接
关键代码实现:
紧接着是完整的代码方案,包括:
- ContinuationManager的配置
- 状态持久化机制
- 断点续传逻辑
- 错误处理和重试机制
我按照方案实现,凌晨三点测试通过!
合上电脑时,窗外雪花飘落。我突然意识到,技术的进步就像这场雪,悄无声息地改变着世界。
如下是实际使用CodeGenie插件截图:

Day 15 - 2024年12月29日 周日 晴
意料之外的成长
今天团队技术分享会,轮到我讲。
主题是"AI辅助开发在鸿蒙项目中的实践"。
PPT翻到最后一页,我展示了一组数据:
- 功能开发周期:从平均5天缩短到2天
- 代码质量评分:从75分提升到92分
- Bug修复时间:从平均2小时降到30分钟
- 新技术学习速度:提升3倍以上
台下安静了几秒,然后爆发出热烈的掌声。
会后,好几个同事围过来:"真有这么神奇?"
"试试就知道了,"我笑着说,"反正不花钱。"
Day 30 - 2025年1月13日 周一 雾
角色的转变
一个月过去了。
今天产品提了个新需求:"能不能做个AR实景导航?"
以前听到这种需求,我的第一反应是:"这个太复杂,需要评估。"
但今天,我的回答是:"可以,让我先做个原型出来。"
打开CodeGenie,输入:"使用HarmonyOS的AR Engine实现室内导航,包括平面检测、路径规划、虚拟箭头指示"。
半小时后,一个可演示的AR导航demo完成了。
这一个月,我意识到自己的角色在悄然改变:
- 从"执行者"变成"设计者"
- 从"实现功能"到"创造价值"
- 从"能不能做"到"怎样做最好"
这种转变,让我重新爱上了编程。
如下是实际使用CodeGenie插件截图:

Day 45 - 2025年1月28日 周二 雨
团队的变化
下午茶时间,实习生小张跑过来:
"学长,我今天用CodeGenie三小时就做完了整个用户中心模块!"
他的兴奋感染了整个茶水间。
我笑着说:"我第一次用的时候也这么激动。"
抬头环顾办公区,发现很多人的屏幕上都开着CodeGenie。
新来的00后同事用它快速上手鸿蒙开发;
资深工程师用它探索新特性;
架构师用它验证技术方案;
连测试同学都在用它理解代码逻辑...
AI已经悄然融入了团队的日常工作流。
更重要的是,大家脸上的焦虑少了,笑容多了。
如下是实际使用CodeGenie插件截图:

Day 60 - 2025年2月12日 周三 晴
深度思考
今天在知乎看到一个问题:"AI会让程序员失业吗?"
想起两个月前的自己,也有过这种担忧。
但现在我想清楚了:
AI不会让程序员失业,但会淘汰不会用AI的程序员。
就像电脑没有取代会计,但Excel淘汰了不会用电脑的会计。
未来的开发者,需要掌握的是:
- 与AI协作的能力 - 如何准确描述需求、如何审查AI代码
- 架构设计的能力 - 整体规划比细节实现更重要
- 业务理解的能力 - 知道做什么比知道怎么做更关键
- 持续学习的能力 - 技术迭代加速,学习能力是核心竞争力
写完这段思考,保存到博客。
标题叫《AI时代,程序员的价值在哪里》。

Day 90 - 2025年3月14日 周五 樱花初开
项目的成功
今天,历时三个月的鸿蒙原生应用终于上线了。
从零开始,到拥有20万用户,CodeGenie功不可没。
在庆功宴上,老大举杯:
"感谢团队的努力,也感谢AI工具的助力。我们用三个月完成了以前需要半年的工作量,质量还更高。"
大家碰杯,笑声爽朗。
回想起90天前那个大雪纷飞的深夜,我对着电脑屏幕焦虑迷茫。
现在,我成长为一个自信的鸿蒙开发者,带领团队交付了优秀的产品。
这90天,是我职业生涯最宝贵的经历。
Day 100 - 2025年3月24日 周一 春分
新的开始
今天是使用CodeGenie的第100天。
早上打开DevEco Studio,熟悉的机器人图标在侧边栏闪烁。
突然意识到,这个小图标已经成为我开发工作中不可或缺的一部分。
就像代码编辑器、调试工具一样自然。
这100天,我见证了:
- 个人技能的飞跃
- 团队效率的提升
- 产品质量的突破
- 思维模式的转变
更重要的是,我看到了鸿蒙生态的希望。
当开发变得更简单、更高效,会有更多优秀的开发者加入。
当AI降低了创新的门槛,会涌现更多有创意的应用。
当技术不再是阻碍,真正的竞争回归到产品和服务本身。
这是一个最好的时代。

后记:给还在犹豫的你
如果你正在阅读这篇文章,可能你也在思考:
"要不要尝试AI辅助开发?"
"CodeGenie真的有这么好用吗?"
"我会不会因为依赖AI而失去编程能力?"
我的回答是:
大胆去试。
100天前的我,也有同样的疑虑。但现在我可以确定地说:
CodeGenie不是让你放弃思考,而是让你把精力放在更值得思考的地方。
它不是替代你,而是放大你的能力。
它不是终点,而是新起点。
鸿蒙生态正在蓬勃发展,AI技术日新月异,这是属于我们的黄金时代。
不要因为恐惧错过机遇,不要因为犹豫落后于时代。

开启你的HarmonyOS AI开发之旅
-
更多精彩内容,请关注公众号:【名称:HarmonyOS开发者技术,ID:HarmonyOS_Dev】;也欢迎加入鸿蒙开发者交流群。
以上内容基于真实开发经历整理,100天的成长,始于一次尝试。
你的100天,从今天开始。
更多推荐



所有评论(0)