2017年对我来说是特殊的一年,这一年中,收到了谢菲尔德大学的Offer,生活的地方由中国上海变为了英国的谢菲尔德,同时,我也开发出来了数款app,每一款都有着自己的故事。看了下其他人的征文,都在讲述如何使用其他人的app提高生活质量,这篇文章将会从开发者的角度讲述一下,我是如何用自己的产品改变数字生活的。

自我介绍

先介绍一下自己吧,我是一名大二学生,现在在英国读电子信息工程,这个专业和App开发和计算机没有任何关系,所有的知识,都是我自己学习的,相当于是兴趣爱好吧。在学习生涯中,会定期维护自己的科技博客,维护自己开发的各种app,外出摄影等等,在后面会一一介绍。

走上Android开发道路

说到我app开发生涯的开始还是再2015年,那一年年初我有了自己的博客MikeTech, 在那年7月,我开始了Android的开发生涯并且在学习Android开发一个月后为我的网站开发出来了App。第一个版本是这个样子的:
这个App从有想法以来到编程到上架Google Play一共用了差不多5天时间,主要的开发地点在上海的一个小旅馆里(当时顺便来上海和朋友看China Joy,晚上就住那),使用的是自己购买的一台二手并经过魔改的ThinkPad X220,如果真的想写出来一个产品的话其实电脑配置什么的都不是问题。
虽然现在看起来真是怎么看怎么丑,不过当时刚开发出来的时候那感觉真是厉害,毕竟是我开发出来的第一个有实质意义的产品。在之后的时间里,很长时间内我都是只在维护这一款产品,虽然没什么人用,但是通过维护这一款产品,我的Android开发水平不断地提高了,到了之后的版本中,仅仅去实现一个功能已经不再是我开发时的主要目的。我开始将更多的重心放在了设计和用户体验上。慢慢的开始适配Google Material Design设计规范,提升用户的使用体验,并且不断添加更多功能。MikeTech For Android是我维护时间最长的app,也是见证了我开发与设计能力提升的app,在2016年的最后几天,我再一次推送了新版本。这一次,是这样的:

走上iOS开发道路

我开始为iOS设备开发应用的时候就是2016年初,在去年晚些时候突发奇想在自己的ThinkPad上鼓捣了一下黑苹果,不过不是很理想,不能装最新版本的Xcode开发环境(不过当时也不会开发iOS),没有网络,没有声卡。当时还发了个朋友圈炫耀了一下。没过多久,我妈发来消息:“如果你真的很想要一台MacBook的话就给你买一个”,因为我给她提到过吧,她答应我2016年9月份如果真的收到了英国大学的offer就给我买一台。不过看来我拥有一台MacBook的时候要提前了,之后又过了几周,忙完了学校的论文,在学校旁边的Apple Store购买了一台15寸的MacBook Pro。这台MacBook是迄今为止我觉得在电子产品中我最值得的一笔投资,实在是太好用了,即使已经使用了1年多,这台机器速度依旧飞快,满足着我日常的各种需求。
不过之后由于学校的事情比较忙,学习iOS开发的事情就被我淡忘掉了。直到寒假,一天晚上睡不着觉,看了看网上iOS开发的教程,虽然iOS和Android使用的不是一个开发语言(一个是Java,一个是swift或者Objective-C)但是看了一会,我觉得都是一个套路,然后觉得可以为自己的博客网站开发出iOS客户端了。
于是开始为iPhone开发自己博客的app,可能当时也是有点急吧,每次为Android版推送更新的时候,总会有人很有优越感的说:“可惜我用的是iPhone”。开始开发的第一天就写好了雏形,不过当时也是什么都不会,摸着石头过河。正好放寒假,出了出门聚会走亲戚就是写代码。
功夫不负有心人,用了十几天,学习带开发,第一个版本终于问世了,刚好也开学了,可以接着投入到学校的事情中了。用压岁钱交了99美元的Apple开发者注册费用。
不过,iPhone版的上架就没有Android版那样一帆风顺了,被苹果以各种理由拒绝上架,举几个例子哈,我的博客分类中,有一个类别叫做Android,苹果直接因为这个拒绝上架。之后,有一张应用截图上面出现了Android字样。。又被拒绝。。反正来来回回被拒绝了很多次,每次拒绝再审核都要大概一周的时间,折腾了大概一个月,最后还是登上了App Store,成为了我的第一个iPhone应用。
之后的一个学期,我空余时间也会维护这个app,进行了若干次更新,改变过数次设计。不过当我宣布iPhone版的MikeTech上架的时候,还是会有人跳出来说,可惜我用的是三星S7,我笑而不语。

Lens Genius [Android]

之后就是大概7月份了,放暑假了,在家里忙了一个暑假的出国准备,到了8月多终于签证什么的都办好了,一切都准备就绪了,可以出去玩一玩放松一下了。我平时也喜欢摄影,平时外出旅游的时候会携带一台Nikon D810拍摄照片。
在旅途中难免也为镜头不适合操心,想着买一个其他焦段的镜头来弥补(也就是想一想),但是每次选镜头都要去官网,比对还很麻烦,手机上也不方便,于是我就想看看有没有什么app可以看下镜头参数,下面是我在网上看到的别人写的app:
算了。。。自己开发一个吧,在旅途中,用了3天时间,我开发出了这款镜头数据库app:Lens Genius
这个app包含了各种厂商(尼康,佳能,索尼,三星,富士,施耐德等等)的九百多只镜头的详细参数,还是离线的,并且检索和筛选起来特别的方便,简直是挑选镜头的必备。并且在设计上遵循了Google Material Design。在Google Play上可以下载~免费!

Costuary [Android]

9月份就要出国了,所有的金钱都得自己管理,并且管理的还不是人民币,是英镑。由于汇率诧异过大,当我花掉5英镑的时候是感觉不到自己花掉了40多人民币的,所以,我预先在国内开发了这款记账app,Costuary。app名字是花费(Cost)和精算师(Actuary)的结合。
这个记账app是我独立开发过的最大的Android项目,他支持多币种实时自动换算,可以将你花掉的英镑用实时汇率转换成人民币显示出来,并且拥有详细的周,月,年报表,支持Excel导出。
这是第一个版本:
结果被吐槽的有点严重。。。甚至丑的都不让上架,当时我看到这封邮件的时候正好在签证中心,一口老血喷出来。
之后我重新设计了整个app:
在发布了稳定版本之后,我决定为这个app加上云同步服务,这对我来说可不是一件容易事,要牵扯到后端服务和后端开发。在一个公司中,Android开发者,iOS开发者,后端服务,是三个不同的职位。可是如果我想实现云服务功能,就得自己去学习这些。
开发一个同步服务并没有那么简单,要考虑的事情很多,把账本同步到云端账户上,并且还要同步已经删除的项目,要么在第二台设备上即使删除过得条目还是会同步回来。还有就是需要支持并发性,必须要设计一个可靠的系统来让整个app即使再有几千笔账目的时候与服务器同步也能做到不卡。需要考虑的事情太多太多,毕竟这是我第一次开发这样的功能,一点经验都没有。
尽管没有任何经验,开发出来的产品还是要对用户负责的,我不希望我的产品安装到用户的机器上会因为某些设计缺陷而崩溃,任何人都不不傻,不会因为情怀买单。在经历了几天的测试之后,终于确定整个功能完善了,我推送了更新。到现在Costuary有着稳定的用户群,尽管不多,但很稳定。

为什么选择Google Play

以上所有的Android App都可以在Google Play上搜索到并且免费下载,至于为什么选择Google Play为发布渠道,因为我觉得Google Play可以更好的保护用户的权益。
每当开发者要上传app到Play上的时候,必须要填一个调查问卷,其中会问到,有没有纳粹字符?有没有宗教词汇?有没有暴力言语?根据结果,Play会为app打一个评级,年龄不符合规定或者特定地区的人是无法检索到这个app的。
并且,如果有的App被检测到安全问题,Google会及时下架app来确保用户安全:
某些其他平台只会发这样的邮件,只是为了维护自家商店的利益罢了:

英国生活

转眼间到了9月份,是时候出国了,在出国之前,我将主力机器由原本的iPhone 6更换为了Nexus 6P,因为,我终于可以享受完整的Google服务了,指不定还能体验一波Android Pay!9月17日,我坐着飞机来到了谢菲尔德,开始了英国的留学生涯。
既然这篇文章是关于数字生活的,那么我就来展示一下我平时学习的地方吧,看看我都使用什么电子产品:
我的主力电脑就是这台MBP 15,在2016年,我的所有app都是在这台电脑上开发的。
外接了一台显示器(二手的),忘了什么型号了。
小米鼠标垫,小米台灯,小米插线板,小米手环2(比我以前的Moto 360好用太多),小米五号电池。
除了MBP 15,我还有一台ThinkPad X1 Carbon 2016,用于泡图书馆和旅游,X1非常纤薄,放到包里感受不到重量,平时写博客,写论文,旅游时候的照片后期,都是由他完成。
在英国,Google Nexus 6P原生Android体验和完整的Google服务真的比国内强了不少,Google服务无处不在,在生活中的时时刻刻都能帮上忙,寻找周围的餐厅,导航,查看周围的旅游景点。分析邮件中的日程,自动翻译界面中不认识的文字(Google Now on tap)。
不过,在来到英国1个多月后,我还是选择将我的主力机换成一台iPhone SE,主要原因就是Nexus 6p电池是在太弱了,一会就没电了,很多次在外面就没电了,根本借不到type-C插头,并且6p也不兼容我的移动电源,总是充不上电。刚开始的几个月在异国他乡手机突然没电还的确蛮危险的,有时候去山上徒步要是手机没电了那还不死在荒郊野岭,快充顶个毛用,高性能处理器顶个毛用,2K屏幕顶个毛用,原生Android顶个毛用。
还有一个原因就是因为Apple Pay,Apple Pay真是太方便了,在英国,所有支持Contactless payment(在中国叫做闪付)的地方都可以使用Apple Pay。
在很多超市,比如Tesco,一般都是可以自己拎着东西自助买单的,走的时候手机在机器上蹭一下就好,很方便,三秒钟解决战斗。并且在伦敦,坐地铁也可以直接刷手机(Android/Apple Pay都可以),很是方便。
所以我将主力机换成了iPhone SE,毕竟不是每天都要用到Google来看周围的餐馆,不过每天买三明治的钱还是要花的。

Aircraft Pedia [iOS]

在英国,多了一个活动,那就是和朋友去曼彻斯特机场拍飞机。
在没有论文的周末,有时候会坐火车去曼城机场的观景台拍飞机,我和基友也是对客机很感兴趣,喜欢看各种空难纪录片,听见空客A380轰鸣的引擎声都能激动半天。
有一天突然就要一个想法,可以去写一个app来查阅各种飞机的资料,刚好很久没有开发iPhone项目了,那就在iPhone上写一个吧,于是,用了一周的时间(上学+开发),Aircraft Pedia诞生了。
这款App就可以很好地辅助航空爱好者来查阅各种型号的飞行器信息和性能,不光有客机,其中还包括各种战机。由于是一个工具类App,这也是我第一个收费的app,国区定价3元,有需求的小伙伴可以入一下。

Flat Weather

Flat Weather是我最近的一款作品,也是下载量最多的一个作品。
从前面的作品不难看出,都是使用了普通的app设计,真正用到设计来提高美感的地方很少,Flat Weather是一款风格和我以前作品完全不同的App,其中每一张图都是我自己设计并且绘制的,是美工占在开发周期中时间最长的一次。关于这个App的设计,进过少数派Matrix精选,感兴趣的读者可以去了解下:天气应用 Flat Weather 的设计历程
至于我为什么要去开发这样一个App,其一是我想去开发一个与众不同的天气App,还有就是我想去提升一下自己设计后端服务的能力,Flat Weather的后端服务,也就是服务器端,同样是我编写的,为此,我每个月要支付60多元的服务器租赁费用。我的每一个项目都有明确的目的,比如Costuary,这个项目就在数据库编写中为我累计了很多宝贵的经验。Flat Weather也是,为我在后端服务编写中累计了很多的经验。
Flat Weather的故事很多,在少数派发表我文章的那天我获得了大量的下载,有很多人评论并且支持我,并且有很多人像我发邮件反馈不足的地方,这些举动都令我感动,毕竟,想要做好一个产品,只有一个开发者是远远不够的。
不过也难免会得到不好的评价,第一个版本的主要问题就是不支持中文,和自动定位功能的缺失。自动定位的缺失是我的不对,因为我没有考虑到这个App在第一个版本就会获得这样的下载量,这个功能,如果你们看到了这篇文章的话,那么应该已经加进去了。
评论中有一句话我是不赞同的:“不管是不是国内开发者开发的,支持中文是必须的”,我只是不知道为什么是必须的。用Steam买游戏的人应该都知道,有很多人因为游戏没有中文支持就给差评,这是一个很不人道的行为,因为很多独立游戏工作室的开发者根本没有资金去聘请翻译,汉化一个软件或者游戏的代价有时候是巨大的。我的App加入中文是早晚的事情,在最新的版本中我已经加入了简体中文和繁体中文的支持,也是因为那一周太忙,你们都在过年,我还在上课,所以更新版本推到了周末。
作为一个人人都适用的工具类App,适配VoiceOver功能还是必要的,iPhone的VoiceOver可以通过朗读屏幕上的内容来辅助视力障碍的人适用iPhone。在MacBook 2016发布会开始,播放了这样一段视频,片中一个手脚不便的残疾人在使用头部动作控制一台iMac通过Final Cut Pro剪辑视频;一个盲人,划开了iPhone的相机,当iPhone读出:“One face, smile face, focus lock”的时候,相信很多人都震惊了,这才是科技的伟大,尽管每年唱衰苹果的声音不断,不过Apple在各个领域做出的贡献大家都是有目共睹的。OviceOver功能的适配已经加入到了我的开发计划中。
总之还是感激大家的支持和评论,你们的反馈会使我更好的完善我的作品,Flat Weather还会不断更新,去完善那些缺失的功能。我知道我没有能力去让那些不喜欢我app的人去使用他,但我不会让支持我的人失望。

尾巴