作为一名独立开发者,经常需要掌握各方面的技术与方法,无论是构思还是设计还是开发,都需要自己一个人去完成。
这时候,利用一些省力高效的诀窍便可以事半功倍,下面小编就来和大家分享一下小编的作品《跑车之家》的开发过程。
【灵感篇】
小编是名汽车迷,尤其是性能车、跑车迷,突然就想起做一款炫酷的跑车展览App,让用户以一种欣赏的方式去了解跑车。
首先想到的展览方式就是比较流行的卡片式滑动浏览,类似于苹果的CoverFlow设计,但是这样并不能较好地对汽车品牌进行分类,于是想起了之前在Github上见到的一份开源代码SFFocusViewLayout,这种listview的效果非常符合我的需求,高大上又简便。
于是简单地在纸上绘制了大概的效果(不要问为什么这么丑,黑白是做了阈值处理)
然后,笔者习惯性地用PS绘制了基本UI效果图,至于为什么不采用其他原型绘制软件,因为不会。
接着是命名,原谅我实在是没什么创意地命名为《跑车之家》。
【数据篇】
构思好App的基本模型后,问题来了:数据呢?
常见的跑车应该也有五六十种吧,一个个去百度整理数据会要命的。
自然而然地想起爬虫,至于爬哪个网站,哈哈当然是最有名的汽车之家咯。
于是用Python的Scrapy爬虫框架快速写了一个汽车信息爬虫,遗憾的是汽车之家对爬虫作了限制,无法爬到数据。不过对于单页面的内容,并难不倒我。
把网页保存到本地,Scrapy再去爬一下本地html,OK,基本数据到手。
由于对汽车之家默认的图片不满意,追求完美的我,不得不一一去百度搜索跑车照片,挑选角度合适的一一下载下来保存,这个只能手动了,花了不少时间。
数据整理成csv后,导入到了数据库,然后自然就需要制作API接口咯。
理论上采用最原始的php语句就可以完成,因为功能就2个:获取汽车品牌、获取品牌下的所有汽车。
但是由于不利于管理和后期升级维护,我还是采用了简洁明了的ThinkPHP框架,安装部署,几分钟就完成了后台接口。
【开发篇】
至此,准备工作已经完毕,开始动手开发吧!
笔者选择了先做iOS,因为iOS通常效果要好一些:)
笔者不是个资深技术研究猿,在有开源框架的前提下,一般就懒得再去自己重写了。
于是,万能的Github大显身手了,为了实现分类和卡片,分别在引用了以下开源框架:
- SFFocusViewLayout (实现首页分类)
https://github.com/fdzsergio/SFFocusViewLayout
- CardSlide (实现卡片滑动)
https://github.com/DavidWangTM/CardSlide
当然,还有常用的AFNetworking、SDWebImage等。笔者习惯性采用OC编写,还没做好接受Swift的准备,在开发过程中基本没有遇到什么难题,花了大半天顺利完成了iOS端。
然后是安卓端,笔者之前一直都在用老掉牙的Eclipse,至于为什么不采用AndroidStudio,因为有一次反复安装失败,导致失去信心...
这次笔者直接下载的AndroidStudio的bundle,无需配置,解压即用。
由于不熟悉环境,笔者请教了朋友关于Gradle的基本使用方法后,发现和iOS中的Cocoapods很像,用起来非常爽。
对应的,再次在Github上寻找开源库(懒人天堂),这次没有那么顺利,反复寻找试验了多个框架后最终才确定下来:
- FocusResize (实现首页分类)
https://github.com/borjabravo10/FocusResize
- RecyclerViewPager (实现卡片滑动)
https://github.com/lsjwzh/RecyclerViewPager
实际使用效果发现,同样的布局效果,在安卓上的体验和苹果比起来不是差了一点半点,不知道是框架的问题还是系统问题。
这里遇到一个问题,FocusResize这个库最低需求为API19,让我很不爽,一怒之下取消Gradle引用,直接复制了代码,然后最低API改成14,发现也没有什么区别,顺利使用(手动无语)。
于是,又花了1天(熟悉下AndroidStudio)时间完成了安卓版的开发。
【上架篇】
最后《跑车之家》App效果如图
总体效果笔者自己还是比较满意的。然后就要对应上架了,由于广告行业的下滑,笔者已经没有兴趣再去添加广告了,安卓端索性没有加广告,顺利通过各平台的审核。
苹果端由于友盟统计使用了广告标识符,必须要添加广告,否则不能通过审核,于是自己模拟了一个闪屏广告,推广了下自己其他的App......
5天后(苹果说2天审核的怎么还是那么慢),顺利上架苹果商店。
【总结篇】
《跑车之家》只是一款无聊的小应用,唯一的特点可能就是展现方式比较炫酷吧,但是作为开发者,还是付出了很多心血的,尤其是当所有内容都需要你自己去完成的时候。
这就是独立开发者的生活,苦逼,又充满乐趣。
我热爱开发,热爱新的事物,乐在其中。
喜爱开发的朋友,欢迎一起交流哦!