动维不仅是执行者、更是思想者
动维如何将您的想法落地,从产品策划到开发实施,再到技术运维
首页 > 动维视野 > 动维观点
用ChatGPT开发安卓APP的亲身经历
发布时间:2023-03-16 03:35:05

自从去年ChatGPT问世一来,代替程序员开发的话题一直不断。最近一个月更是火的一塌糊涂。ChatGPT到底能不能真的代替程序员?让我们通过一个安卓APP的开发任务深度体验一下。

当然,这个文档我也尝试去用ChatGPT来写。我的感受是:有些可以用,但关键部分还得自己写。

1.项目介绍

我想用它做个有用的东西,在我切换网络代理时,能够帮我测试该代理的性能。具体来说就是可以自动访问我想要的网站,并显示一下速度。最终就是下面的这个样子:

图片

2.技术选型

由于要做成APP,我还想使用Python来写。所以,我选择了使用BeeWare 平台来开发。

BeeWare 是一个用于开发跨平台原生应用的 Python 工具集,它可以用于开发各种类型的原生应用,包括但不限于桌面应用、移动应用和网页应用。相比于其他跨平台开发框架,BeeWare 平台的优势在于它采用原生的 UI 组件和功能,因此应用程序的体验和性能都非常好。

BeeWare 平台具有以下特点和优势:(这部分文字来自ChatGPT

细心的读者可能感觉到这段文字写得比较流畅,但又没有太多的营养!这就是目前ChatGPT的写作风格。

3. 开发环境搭建

上面的文字勉强还可以使用,但直到这一小节,我实在忍不了了,它的输出是这样的:

图片

上面的教程根本不能用,还是我自己来吧:

3.1安装 BeeWare 平台

根据 BeeWare 的文档说明(https://toga.readthedocs.io/),在 Windows 上使用,直接搭建python环境,并pip安装即可。

推荐使用conda建立虚环境的方式(这部分不熟悉的同学可以看公众号里的视频,或任意一本我们出版的书里,都有介绍)。

安装命令如下:


pip install briefcase

3.2配置开发环境

最新版本的BeeWare推荐使用的Python版本是3.8,所以最好使用3.8版本。当然别的版本也可以,笔者亲自试过3.113.9版本。下面介绍几个主要的命令:

创建一个应用,使用命令:


briefcase new

windows下运行调试:


briefcase dev

如果想把代码打包成apk,可以使用如下命令:

A创建安卓应用


briefcase create android

编译


briefcase build android

之后,会在命令行中,看到生成apk的位置,将其放到手机里安装即可。

如果想使用模拟器运行,需要先安装模拟器。具体操作如下:

来到下面网站:

https://developer.android.com/studio/ 

下载安装包,进行安装。(注意:在安装的最后,选择自定义安装,剩下全默认,这样就可以安装 Intel HAXM 驱动程序),在好多教程里,没有这项,导致模拟其安装不上。

然后就可以使用如下命令,运行带有模拟器的程序了:


briefcase run android

IV. 开发过程

当写这部分时,ChatGPT罢工了!不靠谱呀!

图片

我自己来吧!

4.1 创建项目

通过如下命令,创建一个新项目,名字随便启。我的叫:netpy38v2


briefcase new

生成的文件如下:(以helloword项目为例:)

图片

里面别的不用管,只需要修改app.py文件即可

4.2 借力ChatGPT快速学习

由于我没有接触过BeeWare平台,打算看看BeeWare上的代码是什么样的。这个方面借助ChatGPT确实非常方便。

接下来就是高光时刻了:

我先让ChatGPT帮我生成一个代码:

图片

上面的代码让我非常轻松的入门BeeWare开发。而且还教我如何运行。非常的体贴。

4.3 借力ChatGPT改进功能

那么我们就直奔主题,先让他实现一个测速的功能吧。进一步让他调整:

图片

文本太长,我就不截图了。总之,到目前为止,一切都视乎非常美好。我也完成了测速的功能。我很开心。

直到我想增加更多的功能………

4.4 借力ChatGPT添加更多功能

我需要的是批量测试网站,我想用一个表格的UI组件去管理。于是,我又给ChatGPT下达了新的任务。

图片

这一次,ChatGPT玩砸了!它尝试生成了多种解决方案的代码,但最终都已失败告终。在它写不下去时,会返回一个:网络错误!

图片

即便是错误,有时还会问你,这个比上一个好还是不好。显然它在利用你为他进行人工标注。ChatGPT把他的RLHF标注工作直接抛给了使用者!边用边收集样本,难怪人家不强大!

4.5 换个话题,测试ChatGPT的功能边界

上面的任务,看样子是把ChatGPT难住了,那么我们来个简单点的:

图片

这次ChatGPT很轻松的写出来了。

4.5 试试ChatGPT如何改错

但是,上面这段程序是有问题的。我运行时遇到了错误!我想看看它是怎么解决的:

图片

相对比较聪明,它用if建立了2个分支,来解决跨平台的兼容性问题。

4.6 ChatGPT给了我开发启发

其实还没有解决,这段代码运行仍然有错误,于是我接着发问:

图片

图片

这次的ChatGPT应该达到能力边界了。上面的回答貌似很合理,但不符合实际。它说我是版本问题,我是最新版的0.13.0,很显然,又开始一本正经的胡说八道了!

不过从这个里面,给了我启发,我迅速从toga.platform中找到了判断平台的方法,具体如下:

图片

可以说这个过程中,ChatGPT是非常有价值的。它可以快速让你熟悉一个陌生的框架,并在上面做应用开发。

5.结论

通过这次的开发体验,我的感受有如下几点:

  1. ChatGPT根本无法完全代替程序员

  2. ChatGPT更像是一个公司里兢兢业业的初级程序员,或是你带的小弟。可以帮你快速完成一些初级代码。

  3. ChatGPT合作开发还是很愉快的,它使我找回了多年前做技术总监的感觉。我可以安排它调研新的框架,写出例子代码,也可以让他写一些初级程序。但是会有bug,而我的主要工作就是代码review、代码merge和代码debug

  4. 从时间成本来看,ChatGPT并不会帮我节省时间。因为我开发这个APP花了2天时间,其中主要的消耗在等待ChatGPT的输出,和集成代码,并进行测试。而如果我自己查看API文档,快速学习,并开发的话,预计一天就可以搞定。

  5. 那么,ChatGPT能给我带来什么呢?省力!这个是很有体会的。虽然我多等了一下,做一些无脑的集成测试工作,但是,我的脑袋确实空闲了下来。由于一些事情,不用亲历亲为了,带着ChatGPT开发不会让我像以前独自开发时那么累。

上面的总结中,最后一点尤为重要!也是目前几乎没有人提及的观点。因为他们都不编程!非亲身经历的人,绝对考虑不到这个因素。实际上,开发者的劳累程度要比时间重要得多!这一点不展开说了, get不到的朋友,可以自己写写代码体会一下!

所以,大家也不要太相信网上那些什么一键生成之类的宣传信息,有的例子效果好,是正好碰到了而已。大概率还是得人为来做。

不过,未来,初级程序员的需求将会越来越少,ChatGPT会为有能力的技术大牛们提供源源不断的劳动力。从这一点来看,程序员行业也将会有很大的调整。目前国内的程序员保守量在6000万左右,这个数量未来很有可能会被ChatGPT大幅降低。随之而来的还有基于程序员的教育市场,例如图书、视频、自媒体、培训班,都会萎缩。因为这部分行业的目标人群都是初级程序员,每名高级程序员都有出色的自学能力,他们很少会在这个行业消费。

同样,未来的高级程序员们,将会拥有更强的开发能力,也会产出更高,他们的数量也会更少,竞争也会更加激烈。我们这帮没有被洗掉的老程序员们,仍然面对的是一个极卷的环境。


动维专业技术开发公司 www.dongweinet.cn


上一篇
官方平台

官方微博

微信公众号

电话咨询
13811180443
服务时间:09:00-22:00
在线咨询