编辑
2024-05-19
Android杂谈
00
请注意,本文编写于 120 天前,最后修改于 120 天前,其中某些信息可能已经过时。

目录

起因
规划
需求和选题
设计产品解决方案
产品的开发和实现
1. 一种全新的AI协作开发模式
2. 设计app的应用图标
3. 部署一个隐私协议网页
4. 开发和实现阶段总结
应用提审上架
后续
总结

我一个人,在15天内,只用下班后晚上的业余时间,就完成了一个app从构思到调研、再到设计和开发调试,最终到google play store提审。

起因

事情是这样的。在今年1月底的时候,我收到了google play store的邮件,要求我在60天内发布或者更新应用,不然就封掉我的开发者账号。

image.png

这就就就……过分了啊!现在注册开发者账号可难了!我铁骨铮铮@¥%……#¥%……唉,还是得赶紧想办法开发个应用上架,保住开发者账号要紧(其实我是舍不得注册费用的25美元)。不过,我又非常忙(),能拖一天是一天,一眨眼就拖到了3月份。眼看距离截止日期不到30天了,开始有点慌,赶紧动手啊。

规划

那么,问题来了,时间这么紧,我连做什么都没个想法,劳动力又只有自己一个人,具体要怎么做才好呢?

想着想着,我突然就想到了AI!我一拍大腿,对啊!这么短时间肯定做不了多复杂的应用。既然是简单的功能,不如试试AI。看看能不能在AI的帮助下,一个人顶一个小团队,试试看,到底能做到什么程度。

当然,并不是说简单告诉AI我要做什么,它就能帮我完成全部工作,现在的AI还达不到这种程度。现在对AI的应用,主要还是在降本增效的运用上。这就需要在传统的工作流中,找到AI可以接管的环节,然后把AI植入进去。即使我要做的是一个很小规模的应用,但它本质上还是一个软件工程,一样是按照软件工程的管理方式走。所以,为了保证工期,还是先拆解一下目标和里程碑:

  1. 目标:开发一个简单应用,上架google Plays store,保住我的开发者账号
  2. 里程碑:
    • 调研需求,确定选题(1天)
    • 确定设计产品解决方案(2天)
    • 完成产品的开发实现(10天)
    • 完成google Plays store的上架提审(2天)

设定目标,是为了在执行过程中盯死目标,用目标来衡量决策和方案是否合理,不要去做多余的事情,一切以目标为导向。拆分里程碑,是为了保证项目工期可控,阶段性验收成果,出现问题可以及时调整。 而我这项目真的很小,所以简单拆解下里程碑后,直接就按里程碑来推进了。

需求和选题

具体要做什么呢?我没啥思路……

这个时候就要发挥目标的作用啦!从目标和当前的拥有的资源入手,拆几个约束条件出来,先大砍几刀,缩小一下选题范围:

  1. 应用要足够简单和小(时间很紧)。
  2. 不要申请额外权限(降低应用上架审查难度)。

嗯,一下就可以毙掉了一些宏大的想法了。比如一开始设想的社交卡片,集卡商城什么的,统统毙掉。

再来,进一步提炼下应用的画像:这个应用应该是一个工具类的小应用,不要涉及服务器开发,不需要联网,也不要额外申请设备权限,不要额外获取的用户身份数据。它的界面应该简洁,操作简单,功能单一。

这么一看,可选的范围就不多了。可以好好想想有什么样的小工具类应用可以做,以及自己擅长些什么。实在想不出的话,教一招鸡贼的,可以去应用市场目标类别中找找看,借鉴(抄)一下灵感。

我在翻了一圈应用市场后,结合自己的专长(这几年一直在做图像处理的事情),最后决定确定做一个图片处理的小工具。它可以用来查看图片的exif信息。exif信息,简单说就是图片文件中额外记录的一些元数据信息,比如相机参数,地理位置等等。有时候在网上看到的,谁谁谁发了张照片就泄露了定位信息,大概率就是图片的exif信息没有处理好。

PS1:这里不考虑需求的强度和频次,也不考虑市场的同类竞争。毕竟我的目标是要把应用上架,保住我的开发者账号,并不是要占领市场。

PS2:后来在复盘的时候,有点后知后觉了。其实在需求和选题这个阶段,是可以跟Ai探讨找灵感的。比如直接问ChatGPT,让AI来辅助你思考,这样效率会更高。

设计产品解决方案

确定需求和选题后,接下来就是设计产品方案了。

初步列举了想要做的功能:

  1. 通过相册选择图片,然后展示图片的exif信息
  2. 展示图片的exif信息后,支持编辑照片中的exif信息,比如一键抹除
  3. 支持在图片的exif中添加一些加密数据,再把图片分享出去,对方用这个工具再解密

评估了下,工作量还是有点多,就先砍掉2和3,优先做1。等后面时间充足了,有心情了,再来迭代迭代。

整体的交互设想就是:

  1. 图片选择页面(首页) -> 点击选择图片按钮打开系统相册 -> 选择图片返回 -> 图片信息展示页(展示选择的图片,并解析图片的exit信息,以列表的形式展示)
  2. 首页 -> 点击关于按钮 -> 进入关于页面 -> 展示app应用信息,特别是隐私条款

已经够简单了吧?现在我的问题是,我既不是个产品经理也不是设计师,我没有能力把这个交互变成产品原型和设计稿。本来呢,我是想找找有没有UI设计相关的AI工具。只要我输入文字描述,它就能输出设计稿之类的。遗憾的是,我调查了一圈,也没有找到什么合适的工具。可能是我的调查范围和深度不够。能找到的工具都不够理想,普遍都有不小的学习成本,时间上肯定来不及,只好作罢了。

回到根本上,对于UI设计,从我的实现的角度去考虑,我期望的是能有美观简洁的组件来帮我完成页面交互。对于美观上的要求,能达到七八十分就够了。秉着最佳实践的原则去找对标,在参考了一些主流App的设计之后,我选择了google的Material You设计语言。这是一种google主推的设计风格,美观度和交互性都是顶级最佳实践的存在。而且google官方针对多个平台都封装很多组件,简单使用这些组件拼装就能设计出七八十分的UI,这显然是最适合我的。

不过,这技术选型上我还是浪了一下。我选择了google的jetpack compose这套全新UI框架来实现界面。jetpack compose是google推出的新一代android UI开发框架,不同于以往的android view命令式框架,它是声明式的,熟练使用之后会非常舒服。在这之前,我从没用过这个框架,其实对工期造成的风险是很大的,商业项目就不建议这么任性了哈(编程嘛,最重要的是开心)。

产品的开发和实现

确定产品解决方案和技术选型之后,就是紧张的开发阶段啦。太细节的技术实现就不展开说了,这里主要讲讲,我在这个过程中如何运用AI来提效,怎样做到以前不可能做到的事情。如果对源代码感兴趣的话,文章后面附带我这小项目的开源地址,可以自己看看代码。

1. 一种全新的AI协作开发模式

正如前面提到的,在编程这块,我面临两个问题:1是Jetpack compose我没用过,不会用,怎么快速学会;2是我只有下班后有时间搞搞,时间碎片化,按正常开发流程的话不太够。因此,我需要一种新的工作流,我来告诉AI要求,它来帮我实现编码。我不要求AI能百分百完成全部编码,只要能完成百分七八十,我再修修改改也能用就够了。

提炼一下:

小目标: 使用AI构建一种新的开发方式,让我能够随时随地编程,最大程度利用我碎片化的空闲时间。

AI工具:智普GLM-4

我发现,智普清言的客户端和网页端的聊天对话是同步的。于是,我想到借助这个特性,无论是我就在上下班的路上,还是在电脑前,只要通过客户端或网页端,就能在同个会话中持续与GLM沟通,让它为我编程,以此来突破编程场所的时空限制。最后,我只要从网页端把代码复制出来,放到项目工程里面去调试就行了。

比如一开始,我要开发一个打开相册选择图片界面:

这是我在地铁上通过智普清言的客户端,指挥GLM编程:

image.png

然后,我回到家打开电脑,在智普清言的网页版上就能看到刚开的会话,接着继续沟通,最后把GLM输入的代码复制到项目工程里面编译调试:

image.png

image.png

我借助这个方式,在上下班通勤期间,通过手机就能进行编码开发。这在以前是不敢想象的,没想到AI和CUI的出现,竟让这件事情变得这么简单。虽然流程有点糙,但至少能用啊!用这种方式,我用我没用过的技术,完成了app首页的UI编码(虽然最后这个首页没用上。因为交互体验的问题,整个app的交互设计被我改掉了,不过这是另一个故事)。

小结下:

通过大模型,结合PC和移动端的同步,这是一种全新的开发体验。就好像我有个ai给我打工,听我指挥一样,大大提高了我编程的效率和灵活性。不过,这个简陋的流程也有一定的限制和问题,要尽可能扬长避短:

  1. GLM现在还不够智能,有时候给不出想要的结果,相对较新的技术会答不上来或很牵强。
  2. 上下文的长度对体验也有很大的影响,因为会经过多轮对话,有时候它会忘记前面讨论的内容,导致后面给出的结果越来越差。
  3. 对使用者的审美要求比较高,如果你无法判断大模型给的结果正确性,效果就会很差。比如,前面我这场景,Jetpack compose这个框架我从来没用过,大模型给出的结果我一时无法判断。刚开始的交互体验比较差,我还是另外花点时间去学习了这个框架(但没有很深入地去分析研究),后面有了判断能力后,跟大模型“合作”起来才顺畅一点。

2. 设计app的应用图标

开发一个应用,怎么也得配个应用图标。我已经有将近10年没有画插画做设计了,连Photoshop的工具栏都记不清,要在短时间内自己画一个应用图标,绝对不可能啊!不过,现在有ai嘛,嘿嘿嘿……

调研了一轮,做logo啥的,基本都是MJ啦。可惜的是,我没有MJ账号,研究怎么注册买账号,再学一下怎么使用MJ,估计我的google play store账号都被注销了。所以MJ虽好,但救不了我眼下的急,只能转头开源的SD了。直接说结果吧:

工具:Krita + ComfyUI + Krita-ai-diffusion插件

稍微解释一下:Krita是一个我非常喜欢的开源数字绘画软件。ComfyUI是基于Stable diffusion开发的一个低代码项目,相对于Stable diffusion webui,我更喜欢ComfyUI这种细节流程都掌控在自己手里的工具,可调性会更高。Krita-ai-diffusion就是一个串联起Krita和ComfyUI的插件,让你可以在在Krita里面绘画的时候,以图生图的形式调用ComfyUI的接口,实时绘图并返图Krita的图层。

整套流程搭建起来后非常顺畅,让我这个废了10年的手残党看到了希望。有兴趣的话,可以看下这个项目。Acly/krita-ai-diffusion:https://github.com/Acly/krita-ai-diffusion

为什么会选择这套工具呢?因为我是有个构思的,我希望logo上的中间是一张图片,然后一个放大镜在图片的右下角查看照片上的细节。这是一个很简洁的logo对吧?我一开始想用GLM帮我生成一个,但效果很糟糕,调了几轮后就没什么耐心了。使用Stable diffusion webui的话,要写很多提示词,要调到很符合心意的效果,我估计也很花时间。最后,还是基于可控性和相对简单性,选择了这套工作流。下面看下我的实操吧:

  1. 安装Krita、ComfyUI、Krita-ai-diffusion,以及找找合适的SD模型。这块几个月前我就配置好了,所以环境直接直接就有了。现在这块的教程已经很多了,Krita-ai-diffusion仓库的说明也写得很详细就不多说了,有兴趣可以看看项目。

  2. 新建Krita项目,创建一个1024*1024的画布

  3. 配置Krita-ai-diffusion的面板,开启它左上角的实时绘制模式,这样只要我在画布上每画一笔,插件都会实时调用ComfyUI图生图,并在下方的预览图区域显示出来。同样的,基于SD,自然写一下提示词,调下Strength等参数会更好。根据我的构思,简单写了正向提示词:logo, a cat photo, a magnifying glass inspecting a photograph, Solid color background。负向提示词相对简单:text,watermark。strength强度这个参数,调的越大,绘制的效果就越偏离原图,具体的数值看情况调了,我这里的情况调到45%最让我满意。

image.png

  1. 接下来就是绘图了,先画布中间画个框当照片:

image.png

  1. 然后框里面在随便涂点颜色,画点东西,再画个圆圈当放大镜,随便涂一涂。感觉可以再可爱一点,随手画个猫吧:

image.png

  1. 看看插件面板的实时绘制区:

image.png

它已经帮我重绘成这样了,看起来还不错。点击插件的加入图层,直接把生成的图插入当前的画布图层:

image.png

画布就变成这样了,但还不止。我把绘制结果插入到画布图层之后,插件又基于当前的画布的效果图再次重绘:

image.png

试着多叠加几次:

image.png

感觉差不多了,导出图片,logo就搞定了,这是最终导出的logo:

image.png

3. 部署一个隐私协议网页

google play store上架应用需要提供一个应用隐私协议的网页,刚好我有一个服务器可以部署,但问题是怎么做这个网页?这块不太熟,还是先找找最佳实践。

在play store里面找了同类app的隐私协议,找了相对简单的抄一下协议内容。剩下的,就是如何把这协议内容做成网页部署到自己服务器上去。本来想直接把人家的网页扒下来,但想想还是算了,还是得自己做这个网页,万一产生纠纷就不太好。

这只是个展示用的静态网页,一开始我是想找个简单的开源框架,帮我把整个UI和编码都搞定。找了一圈,发现再简单的框架都有点重,此时距离账号被注销的时间已经不到一个星期,我有点急。突然,我又拍了下大腿,要什么框架啊,直接一个html搞定啊!这么简单的html,ai没理由不会,找ChatGPT-3.5试试吧。

工具:ChatGPT-3.5

以下是实操过程:

image.png

一开始,手抖,要求没写完按到了回车键,没想到这么不完整的要求,GPT给的html效果居然还不错!

image.png

这么优秀的打工人,当然得使劲压榨啦!把要求都补给它,让它干活:

image.png

image.png

image.png

image.png

经历几轮友好切磋之后,这个网页基本就出来了。但还得把网页部署到服务器上,就选docker-compose技术吧。脚本写起来有点麻烦,让它好人做到底,一块做完吧:

image.png

很好,它基本把我的活都干完了,网页也被我部署上去了。

具体的对话过程,有兴趣可以看一下:https://chat.openai.com/share/837ca299-420f-45c7-b4e2-47b24dd5f7ec

最终部署的页面效果:https://photochecker.qinxiandiqi.cn/

4. 开发和实现阶段总结

在开发和实现阶段,总共花了一个多星期就完成了。这还只是用了下班后的业余时间,如果是全职的话,应该两三天就能搞定。在没有AI之前,你能想象到这种效率吗?

应用提审上架

一路过关斩将,终于到最后提审了。这个阶段的工作一般没有什么太大的难度,主要就是整理应用商店需要的资料,提交资料。但是我呢,英语水平比较烂,应用的英语简介和版本说明不会写。这么麻烦的事情,还是让GPT来吧。

工具:ChatGPT-3.5

相对简单的GPT应用了,没什么好解释的,直接看过程吧:

image.png

结果超字数了,让它自己控制一下:

image.png

效果很不错,让我非常省心,真是勤劳的“打工人”。

前后大概折腾了一天吧,就完成了提审,应用进入等待审核的阶段。

后续

应用提审后,进入审核中的状态。这一等,就是两个月,现在还是审核中的状态,不拒绝,也不通过,不知道是咋回事了。

image.png

不过,好消息是,在我应用提审后,封号的问题就解决了。

image.png

原来不是要发布成功,而是只要有提审就可以了,google的邮件通知真令人费解。不管怎样,我的开发者账号算是保住了,目标达成!能不能过审,也就这样啦。

总结

这是一次很有趣的产品开发之旅。在一堆AI工具的辅助下,我一个人在15天内,每天下班后用一两个小时,跨越工种,全栈完成了一个app从0到google play store提审。这件事情让我有了三个感悟:

  1. AI让很多不可能的事情变成了可能。像做应用logo这种事情,因为有了AI,它让这件事情从不可能变成可能了。
  2. 目前AI带来的变化,更多的是在问题的解决方案上出现了更多的解法。在需求上,以后可能会有根本性的影响,但目前来说还没有太大的变化。
  3. 掌握AI是需要有意识的,而且这个意识可以通过刻意练习来锻炼。我在这个过程中,遇到问题,我都要强迫自己先想一想有没有AI的解法。我努力去剥离那些我还不会,或者AI能做的事情出来,把这些事情交给AI,慢慢有点体感。如果你没有运用AI的意识,你根本就不会想到可以去使用AI。所以,使用AI,首先要先提升使用AI的这个意识。

AI让人欢喜,也让人焦虑,它终究是不可阻挡的趋势。既然不可阻挡,不如就趁早适应趁早掌握,凡事多想想可以怎么运用,这事也没想象中的那么难。

最后,附上这个项目的源码,没什么技术含量,有兴趣可以看看:https://github.com/qinxiandiqi/PhotoChecker

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Jianan

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 © 2012-2023 Jianan 许可协议。转载请注明出处!