当前位置: 主页 > 建站知识 > APP开发

开发一个app-app开发

发布时间:2023-03-13 07:10   浏览次数:次   作者:佚名

前言

本文仅仅是作者在业余时间从零到产生需求到开发一个 App 的个人总结与记录。开发过程中使用了 Google 的跨平台开发框架 Flutter ,移动端和官网都采用 Flutter 来实现,目前来看应该是成本最低的开发方式了。如有异议,请各位大佬轻拍,理性讨论。

为什么要从零到开发一个App

基于以上几点,就有最终开发上线的 App《乐记》,先来看一下最终上线的成果。

最终成果

如果你看下面的截图或者听 App 的名字,应该可以猜出是音乐相关的 App 。为什么叫《乐记》呢?因为《乐记》是我国最早的一部具有比较完整体系的音乐理论著作。而我写的 App 也是我学习乐理过程的记录,因此得名。目前它的主要功能有:

为什么写这么一个 App 呢?几年前和一个老师学过一段时间吉他,在学的过程中老师告诉怎么弹就怎么弹,不知道和弦为什么这么按,也不懂按出来究竟是什么音,即使能弹出来也感到很困惑。因此研究了一段时间的乐理,并作了一些记录。当然乐理是非常庞大的一个体系,目前整理的都是最基本的一些内容,后续会随着学习的深入逐步把内容完善。无论是练习吉他或者其他一些乐器,亦或是一个人开发一个 App 都需要坚持与不断的练习和思考。虽然目前吉他水平也就是弹唱《平凡之路》,但我想会一直坚持下去。等五六十岁的时候和大爷们一起在街边嗨起来。

言归正传,看一下目前开发出来的产品:

官网

官网适配了桌面端浏览器以及手机浏览器

桌面端

开发一个app_app开发_深圳app开发外包

手机端

深圳app开发外包_开发一个app_app开发

iOS

app开发_开发一个app_深圳app开发外包

iPhoneX运行主要页面如下:

app开发_开发一个app_深圳app开发外包

Android

红米9运行主要页面如下:

开发一个app_深圳app开发外包_app开发

技术栈项目技术栈备注

《乐记》服务端

SpringBoot(Java)

App端接口

《乐记》Android/iOS版本

Flutter

Android/iOS应用

《乐记》官网

SpringBoot+Flutter

开发一个app_深圳app开发外包_app开发

地址:

基础设施项目价格备注

腾讯云服务器

998 RMB

2核CPU、4G内存、50G高性能云硬盘

阿里云域名

58 RMB

有效期一年

苹果开发者账号

668 RMB

有效期一年

总计:1724 RMB

开发历程

在确定了想法之后,下一步就是如何开发了,在技术栈选择上,由于要同时支持 iOS 和 Android 系统,所以跨平台方案成为第一选择。目前市面上相对来说比较成熟的移动端跨平台开发方案有 React Native、Weex、Flutter 等。由于前两者都是使用前端的技术栈开发,作者是一名 Android 开发,并且在工作中接触过 Flutter 开发,因此首选 Flutter 作为移动端的技术方案。在开发移动端的过程中 Flutter 2.0 正式发布,Flutter Web 也进入了稳定版,因此也用 Flutter 开发了 Web 版官网。

深圳app开发外包_开发一个app_app开发

关于后端技术选择,如果是 Android 开发者可以选择最熟悉的使用 Java ,也就是 SpringBoot 来作为服务端方案,作者最开始工作的前几年用 Spring 相关技术做过一段时间后端开发。而作为一个小项目的后端来说 SpringBoot 提供好的各种 starter 可以很快帮我搭建起整个环境。

选择好技术栈之后开发一个app,我创建了如下几个项目

app开发_深圳app开发外包_开发一个app

我基本上就是按照下面顺序开发的《乐记》这个App。

1. 设计页面

上来就聊这个问题,是因为对我来说这是最难的。下面介绍下我是如何解决页面设计的。

首先我要解决整个 App 的配色问题这里推荐一个网站 Color Hunt ,上面有各种各样的颜色带搭配可以选择,而且有颜色的代码。

深圳app开发外包_app开发_开发一个app

选好了主题色,接下来需要有一个 App 整体的设计。这里可参考的网站比较多,我常看的有 花瓣网 和 dribbble

app开发_深圳app开发外包_开发一个app

设计网站的设计只是一个参考,最终还需要根据自己 App 的内容、风格和自己的喜好再进行调整。有时候我也需要自己画一些页面。就有了下面的工具 Adobe XD,Adobe XD 是快速且功能强大的 UI/UX 设计和协作工具,最重要的是它是免费的。用它还可以很方便的导出移动端的多倍图。下面是我用它画的闪屏页面,当然这个需要花点时间熟悉一些基本操作。

开发一个app_app开发_深圳app开发外包

有了以上几个工具基本差不多了,然后就是应用的 icon ,比如设置页面,我选择的是阿里的 IconFont。有非常多的可商用的 icon 和插画。并且可以直接复制到 Adobe XD,然后在 Adobe XD 里调整大小和颜色。

开发一个app_app开发_深圳app开发外包

开发一个app_app开发_深圳app开发外包

最后如果想给 App 增加的炫酷效果,比如加一些动画,对于移动端来说非常熟悉的是 airbnb 开源的 lottie 库,可以运行设计师导出的 json 格式的动画。json 文件怎么来?可以用 lottie files ,有非常多的免费的可在线编辑的动画。

深圳app开发外包_开发一个app_app开发

好了,经过以上一番折腾设计基本就搞定了,接下来就是开发阶段。

2. App 开发

这部分其实没什么好说的,按照上面的设计,按部就班开发就好了。由于是 Flutter 开发,开发工具可以选择 Android Studio 或者 VSCode,简单看一下 App 的项目结构吧,由于官网也是 Flutter 开发,不做过多介绍,主要是打包的时候 build web 版本就行。

深圳app开发外包_开发一个app_app开发

3. 接口开发

这里有一个问题是先开发接口还是先写页面,我个人习惯是先写好页面再开发接口。这里说几个遇到的问题:

还有其他大大小小的问题,都通过曲线救国的方式解决了。

用到的主要技术有:

SpringBoot:基本Web开发框架

JPA+MySql:数据存储

Redis:缓存邮箱验证码

SpringSecurity+JWT:用户鉴权

app开发_开发一个app_深圳app开发外包

网易企业邮箱服务:自定义域名发送邮件

看下服务端的项目结构:

app开发_开发一个app_深圳app开发外包

4. 联调

联调部分基本是是写好一个页面和一个接口就调一下。因为都是我自己,也没有沟通成本,这块还是比较顺畅的。

5. 服务部署

这块比较做的并不如公司那样规范,比如代码仓库没有关联 CI/CD 工具。这个主要是得在服务器搭建打包代码的环境,一是不想再占用服务器资源,二是一个人就目前的部署方式也可以接受。基本是本地打包然后上传到服务器部署。还有就是一些服务器的监控目前也没有做,这部分之后看情况再优化。

因为在服务器上有多个服务,现在是通过 Nginx 做一层代理,通过不同的二级域名转发到不同的服务。

再有就是我的域名之前是在阿里云买的,后来腾讯云优惠比较大开发一个app,云服务器又搞到了腾讯云。需要用阿里云的云解析服务把在阿里云的域名解析到腾讯云。此外腾讯云提供了一年有效期的免费 HTTPS 证书。

6. 其他琐事

看似一个小小的 App,其实琐事非常非常多。比如:

困难如何自驱

对我来说最困难的只有一点即自我驱动。如何让自己长期坚持去完成一件事情,如何在别人在看电影的时候继续写代码。其实在很早之前已经因为驱动力不足导致不止一个类似的 App 烂尾了。这次就想死磕一下自己。每天晚上定一个任务拆分后小目标,基本上一个小时就能完成。最终虽然不完美但还是开发出来了。上线之后的感觉也是成就感满满,就像是一个困扰多日的 BUG 在解决的一瞬间。

未来:

欢迎关注 QiShare,一起交流,一起进步。