开发《全能分词》(又名《锤子Bigbang》)的心路历程

转载:简书-十个雨点

本文记录我和同事开发《全能分词》(又名《锤子Bigbang》,以下简称Bigbang)的过程,内容不一定精彩,只是个人的记录,如果你也做过或者想做个人APP,可以看下去。

一切的源头

虽然我至今还没有购买过锤子的手机,不过一年一度的老罗相声会我一直都是网上直播观众。

2016年10月18号,老罗在相声会上抛出了Bigbang和One Step这两个重磅炸弹,当时就把我震惊到了。且不说One Step分享信息的交互方式有多便利,单是应用切换方式也比三星的上下分屏巧妙了许多——将Windows的任务栏搬到了手机上。而Bigbang则为文字处理提供了一种新思路,确确实实的提高了复制粘贴的处理效率。如果不是M系列长得不如T系列美,我可能就剁手了。

到25号,有个同事在github上发现有Bigbang的开源项目,模仿了锤子的界面和功能,通过辅助服务实现了在微信上长按触发选词。但是试用后发现,它的分词功能不好用,很容易就分词失败。我跟同事说——咱们自己做一个Bigbang吧。

说干就干

基于开源项目,我们修复一些bug,添加了拖动词语排序的功能,添加了对其他应用的支持,添加了复制触发分词,添加了悬浮窗控制开关,添加了……总之,加班一整个个星期以后,11月1日我们发布了应用的第一版,起名“Bigbang”。应用图标是我自己在星际穿越的海报图的基础上P的,悬浮窗的图标也是百度出来的。

1.0版的图标

1.0版的悬浮窗图标

开始前几天下载量都非常低迷,每天新增用户20个左右……

Bigbang上线第一周的下载量

作为开发者,我们的心情也和这条曲线一样一样的……不过我们没有时间低迷,因为已经着手做第二版了。

不过才刚发布就遇到了问题,因为Bigbang碰巧是某知名组合的名字,所以我们发布的应用在一些市场上遇到重名应用,审核一直不通过,被要求改名字,于是,我们就改成了“锤子Bigbang”。

而我百度Bigbang的时候,发现有个类似的应用——“Clipboard Plus”,也在做跟我们一样的事情,而且关于这个应用的新闻也有好几篇,下载量已经好几万了。当时的心情是沮丧的。

没想到塞翁失马了!

首先是“Clipboard Plus”新闻中的下载链接指向酷安网——世界第三大同性交友平台(大雾),我们发现这个应用市场之前没听说过,于是就在这上面发了包。没想到第二天下载量就破400了(8号晚上才发布,9号早上审核通过),虽然第三天就掉下去了,不过这已经足以让我们认识到了酷安基佬的力量了,从此我们就做出了将工作重心转移到酷安上的重要战略决定。

酷安的力量

改名为锤子Bigbang可能起到了作用,以下情节是我猜测的,不承担任何责任:有个伟大的编辑(我估计是酷安基佬),用到了我们的产品,发现还不错,看看名字,发现有锤子,“嗯,似乎可以做点文章”。于是一篇介绍“锤子Bigbang”的新闻面世了——锤子BigBang大爆炸APP上线!老罗良心之作(请原谅我不知道哪里才是这篇新闻,互相转载太严重了)。开篇就说“老罗承诺将Bigbang开源,没想到这么快就单独开放下载了”,然后其中又鸡贼的说“由于是开源,所以不确定是不是锤子官方发布的!”——当然不是官方的,我们在“关于”中说得一清二楚,而且文中截图都串了,最后一张是“Clipboard Plus”的截图!

但是没关系,我们的下载量11号暴增到2000多,感谢天感谢地,感谢小编

百度不愧是大佬,百度经验第二天就跟进了——锤子bigbang功能怎么下载开源(非锤子也能用),这篇新闻也被其他网站转载了。我们的新增用户又翻了一倍,达到4000+。

上新闻的力量

我已经26岁了,但是直到2016年11月12日的晚上,我才第一次认识到传媒的力量。至于第二次,则是在我读《大败局》的时候……

在这之后,虽然也有许多新闻和介绍,各个论坛也有不少讨论,不过我们的新增下载量一直差不多维持在1000左右,再也没有能复现第一次爆发时的奇观。

比如下面两篇,分别是Bigbang在不同版本时的报道,我相信编辑们肯定是很认真的体验了我们的应用,真的非常感谢你们
锤子手机Bigbang已经有了,不是锤子手机也可以用啦
真的是神级App?锤子BigBang文字复制App体验

不过名字的风波还没有完,11月16号开始,QQ、魅族、百度等几个渠道,陆续将我们的《锤子Bigbang》强行下架了,估计是名字涉嫌的版权方面的问题吧。无奈之下我们做了个艰难的决定:在酷安上还保持《锤子Bigbang》,而在其他渠道改名为《全能分词》。因为酷安现在是我们的主力渠道,而酷安上用户对“Bigbang”这个名字的认可度明显是比较高的。不过这种频繁改名的做法可能浪费了一些媒体的力量,导致一些用户的迷惑,甚至是推荐给其他朋友时的尴尬。这些暂且放到一边,继续说说接下来的发展。

功能还是UI?

用户多起来以后,我们收到不少反馈,其中一半是一个意思——丑,比Clipboard Plus难看;另一半的意思是——好用,比Clipboard Plus强大。

既然我们已经被用来跟Clipboard Plus对比了,那就干他*的!

首先,不得不承认我们丑,但是由于我跟同事都没有什么审美细胞,第一版的时候单纯的觉得黑色百搭,所以就以黑色为分词界面的底色了,当时怎么就没想到直接抄原版Bigbang的呢?!结果Clipboard Plus色值跟原版很相似,我们又傻逼的觉得直接抄袭不好,楞是把黑色用了很久很久……

后来有个用户帮我们设计了新的图标和悬浮球图片,虽然不够竞争对手漂亮,不够比较契合我们的应用,所以我们怀着感激之心一直沿用至今。虽然它们也一直被诟病。(直到最近我才发现,原来Clipboard Plus的图标是抄袭Google+的,难怪看起来这么顺眼,这么想想就开心多了。)

改版后的悬浮窗

改版后的图标

既然我们在美观上基本上无法超越对手了,那只好从功能上想办法了。

Clipboard Plus只做了复制取词,所以我们首先要在取词的方式上打败它。

我们觉得点击取词、复制取词、全局复制、再加上OCR取词,基本上就能覆盖用户所有的取词需要了。

功能多了以后,需要有开关,以防用户误触发;还需要能触发全局复制和OCR的开关。所以我们做了功能比较复制的悬浮窗,然后又做了通知栏,还做了快捷键的触发方式。

为了给用户更大的自由度,我们开放了界面样式自定义、悬浮球样式自定义。

后来我们又在用户的建议下实现了基于Xposed的选词和全局复制。

总结一下我们实现的功能点:

  1. 通过辅助模式,实现单击、长按、双击来进行选词;

  2. 通过系统复制进行选词;

  3. 通过辅助模式,实现全局复制进行选词;

  4. 使用5.0以上的系统接口,进行截图OCR进行选词;

  5. 通过悬浮窗、通知栏、快捷键进行控制;

  6. 通过xposed模块,实现单击、长按、双击来进行选词,以及全局复制的功能

  7. 界面样式自定义、悬浮球样式自定义

干干干干干

这些功能看起来不多,真做起了还是相当折腾人的。为了把新功能尽快发布出去,我们以极高的频率发布新版本——在2.0.0版以前,基本上每周会发布2-3版,2.0.0以后也基本上保持了一周一版。截止2月9日,我们一共发布29个版本,往git上提交了300多次,总共30000多行有效java代码。下面两张图是酷安的应用发布后台,真实记录了我们每一次发布(2.6.0没在里面)。

酷安网的发布后台

酷安网的发布后台

30000多行有效java代码

你可能觉得100多天发布29个版本并没有多频繁,但要知道我们都是有本职工作的,而且刚好那段时间公司的需求也特别多。所以我们只能在下班以后干,几乎每天都10点半下班,连续工作了至少一个月没休息。

我们接受用户的建议建了个QQ内测群,很快就聚集了很多可爱的基佬们,他们无私的帮助我们测试新版本,给我们提建议,还捐赠我们吃辣条,真的很感谢他们。有很多项改进都是根据这些热心用户的建议修改的。虽然回复QQ群消息也成了我们不小的负担,但也从他们身上学到不少知识,看到不少新思路。

Clipboard Plus很快也推出了点击取词和OCR功能。看来对方也不想坐以待毙呢。

我们还做了一件很鸡贼的事情:我们使用的是巨硬的OCR服务,但是因为我们并没有在软件中加入广告,所以并没有稳定的收益,负担不起颇为昂贵的服务费,当时可把我们苦恼了好几天。冥思苦想后突发一计:让用户自己去注册巨硬的开发者,获取免费体验OCR服务的key,然后填到软件中使用。Clipboard Plus估计也遇到了类似的问题,所以第二天就跟进了。

关于技术方面的总结,我另开了多篇文章总结,可以看文末的列表,源码也已经放在Github上了,感兴趣的同学可以移步查看。

我们拼命的coding,频繁的发包,其实也是有原因的。因为我发现,发新包就会出现在最近更新榜上,下载量就会大幅提升。不过这么拼也没有什么用,我们刚发布的时候,Clipboard Plus下载量(只算酷安上的)差不多4万,到现在我们的还是比对方少2万多,而对方12月中旬就停止更新了。

不是结束的结束

2017年1月3日,虽然还没有完善所有功能,但我们还是把代码稍作整理后,开源了

9天以后,锤子如约把原版Bigbang开源。我很不要脸的觉得,虽然它们在按压取词完爆我们,但是分词处理上可能还没我们做得好。不过他们的图片资源,我就老实不客气的笑纳了。

又经过一个月,我们把设想中的功能都完成了,bug基本上也修复了。虽然用户还给了我们很多建议,比如剪贴板管理的功能、类似fooview的截屏录屏、类似悬浮菜单的手势操作……但是我们觉得这不符合Bigbang的功能定位——给用户提供全面的选词、分词帮助,所以并没有盲目添加。

至此,开发上的工作基本上结束了,即使以后再有更新,可能也只是一些小修改而已,所以我们的Bigbang之旅差不多就到此结束了!感谢一同开发的小伙伴,感谢支持我们的用户,感谢其他所有给我们帮助的人!

总结

做Bigbang的过程中,我不仅仅是作为一个程序员,我扮演的角色还包括产品、测试和用户运营。甚至我还在知乎强行当了一次市场运营,结果被人骂成狗……

稍微总结一下收获:

  1. 产品的功能很重要,但是更重要的是界面UI和细节,因为用户接触得到的就是UI,除非功能不可替代,否则分分钟换掉你!

  2. 传媒的力量非常大,以前听说大作家在报纸上对骂觉得不理解,现在才稍微有点懂了,稍微。所以运营的重要性可见一斑。

  3. 构想产品的时候要有用户思维,可能自己头脑风暴自嗨到高潮,但是用户不喜欢就是白搭。

  4. 但是产品又要有自己的思考,因为用户并不知道他想要的究竟是什么。

  5. **自己做的狗屎自己一定要吃!**我跟同事一开始都是使用iphone做常用机的,所以自己做的应用自己没有长期的使用,这对我们做产品带来了不少麻烦,后来我们都换成了使用Android手机。

这几点虽然是我的一些心得收获,但直到最后我们也没能做好,如果要我给自己这段经历打分,及格分都得不到。

最后说句鸡汤的话——虽然结果不甚完美,但是这一段经历确实是我很喜欢的过程,因为每天都很有干劲,每天脑子里都只想着产品,每天都能对自己产生认同感。

一切经历都是经验,抵达终点是为了再次出发!我要做出更棒的应用!

广告

如果你对我们的开源代码感兴趣,可以移步github:Bigbang

如果你对应用中用到的技术感兴趣,可以参考以下文章:

通过辅助模式获取点击的文字
使用辅助服务实现全局复制
使用辅助服务监听系统按键
如何通过Xposed框架获取点击的文字
使用Xposed框架实现全局复制
在onLayout中实现简单的微动效
如何使用Android的拖拽接口实现拖拽功能
通过ContentProvider多进程共享SharedPreferences数据
Android上如何实现矩形区域截屏
Android如何判断NavigationBar是否显示(获取屏幕真实的高度)
如何在Bitmap截取任意形状
4种获取前台应用的方法(肯定有你不知道的)
android7.0 通过代码 分享图片到朋友圈
Android中如何正确的获得所有App列表
Android的supportV7中默认按钮的颜色设置
Android沉浸式与SearchView的坑
Android中“强制停止”和广播保活的一个小坑
Xposed大法好,教你实现ForceTouch炫酷功能
如何实现android炫酷悬浮球菜单

如果你对这款应用感兴趣,可以下载:锤子Bigbang

如果你是使用Xposed框架的,可以下载锤子BigBang_XP专版

如果你只想使用Xposed的全局复制,可以下载全局复制xposed版

如果你是个手机控,并苦恼于此的话,可以下载不做手机控