记一个简单Android图书阅读器的制作过程
记一个简单图书阅读器的制作过程
微澜 2018/9/27 qq:9611153
从有个想法,到到一个可用程序,断断续续几个月,花上不少的功夫,即便是简单的程序一个人写下来也是很难的。越写越是发现,想要做好一个东西,实在是没有尽头,匆匆打一个结,等到以后有时间了,有了足够多的时间和精力再去完善。
做程序,不管大小,在我看来,也无外乎:把想法变成计划,把计划变成框架,把框架变成成品,想变成商品还要宣传。
1、需求
从个人需求和角度出发,自己想要一个什么东西,获取别人也有类似的困惑和想法。
经常在网上看小说,有时候会觉得广告太多,运行太慢。无聊的时候看新闻,也会觉得不是很感兴趣的东西也会搜索到。于是想到了自己或许可以写个小程序,放一些自己感兴趣的东西。
总结下来,自己想要的东西无非就是两个:
1)、把自己感兴趣的书管理起来
2)、把感兴趣的新闻组管理起来
有时候,会觉得很简单,可是自己也是经历和很久,才知道自己到底想要什么。
2、计划
计划总是理想的东西,也算是目标,没有计划可能动力就会少很多。只有合理的计划,合理的目标才能一鼓作气完成。若是不切实际,不考虑自身条件和资源特质,想做一个好的东西,结果也只能像打水漂,一个个的飘过去,最后沉入水底。
不过我们都是人在职场,身不由己,不可能有完整的时间让你做自己的事情。
因此,自己使用了迭代的方法,不至于感觉到自己的想法太过渺茫。
1)、制定一个简单的框架
2)、建立后台查询webservice接口,能够查询数据列表,和文件位置。
3)、实现小文本书籍程序(一个唐诗三百首的简单程序)
4)、实现大文本书籍阅读(四大名著翻阅)
5)、实现新闻组阅读
6)、对几个小程序进行集成。
7)、后台使用sqlite数据库,支持基本数据存储。前台使用sqlite实现数据缓存支持离线阅读。
每一步都需要都需要在尽可能集中的时间尽快完成,不然就可能被打断。
3、构架
所谓麻雀虽小,五脏俱全,即便它很小,该有的总还是要有,只不过是缩减版。
做这个小程序,需要申请一个云服务器,最简单的那种,1元/天,作为学习和实验已经够用。不过所有的东西都要省着用,计算资源,网络资源依然是个负担,能不用尽量不用。有点像大城市的房子,如果只有巴掌大的地方,那么每个地方都要省着用。
如果从较大的视野看,这个程序算起来也实在是小,无外乎就是租用一个外部服务器,然后做一个webservice服务,然后在app上把数据展示出来。没有负载均衡,没有用大型数据库,没有文件服务器,没有复杂的业务逻辑,甚至也不敢采用未知的技术,然而就是这么说起来的一点点东西,那么实现其中的那么一点点,也是不容易的事情。
若是一定要说说框架,那就是:
- 软件采用webservice+app的结构,服务器采用spring+cxf通用构架,app采用mvp通用框架。
- 硬件从同单服务器+android设备
- 数据采用文件服务器+sqlite+数据缓存。
4、技术
受限于资源,不可能把程序做的很大,所用的技术也不用最新,深度难度深度不大,所求的不过是一个完整可用的程序。
这个程序没有使用H5,没有使用JNI,仅仅使用java去完成服务端和客户端的整个程序。
这个过程中依然遇到了一些通用的技术,比如:
服务器的搭建,tomcat的安装部署,spring+cxf服务搭建,日志部署,mybatis+sqlite的使用,json对象转换,MyBatisGeneratorTool表映射,数据查询,文本文件压缩加密分割等。
App框架选用,restful接口访问,分辨率自适应,程序升级,版本管理,阅读翻页,数据缓存,标签处理,greendao数据映射,数据列表拖动,以及各种各样的界面问题。
只要程序向前走总会遇到各种问题,而且一旦程序规模达到一定程序,那就不能随意的更改,只能是更加小心,实现备份,并且先进性适当的规划和预研才可以动手。
5、过程
软件开发的过程总是反反复复,想做的,设计的,实际完成的总会有很多的出入。今天想到的,明天可能有不同,实际做的时候,又发现因为其他的原因导致需要变通的去做。
从资源,时间和精力来说,在没有外力的情况下,一个人想把东西做好,可能性很小,那就存在适度的问题,到底做到何种程度才算结束,才算是一个里程碑。
我想基本上够用即可,不需要太多的功能,灵活的技巧,炫目的界面,自我认为可以了就结束了,毕竟这不是一个商业软件。
程序做到一定时间,或者环境和心理发生,或许暂时不适合继续做下去了,适当停一停。
预先想的索引,分类,黑夜模式,订阅处理,html缓存和截取,界面优化,添加评论,添加注解,更多配置,自定义添加文章,自定义插件,安全加固等等,都是没有做的。
6、总结
把这个小程序做一个结,虽然还有大量的想法没有实现,但没有关系了,以后有时间再说。
有时候坚持了,未必能够实现什么,若是能够实现什么,哪怕并不好,其实也没什么。做软件这一行,有时候感觉还不如卖包子,毕竟好与不好,都会有人去买,满足了别人的肚子也算是对世界的贡献。而我们呢,有时候做了很久也是对世界没什么贡献的。
做程序员这么久,反过来好像也没什么进步,如果他也能像个包子店,或许还是一件好事,但是它不是。如果自己的东西真的能够变成一个包子,其实倒也不错,也只能这么想了。
无厘头的说了这么多,也不见得会有人看,不过姑且作为对自己说的吧。井底之蛙让看官见笑了。
贴上apk网址,也许以后还会继续开发,有兴趣的朋友可以提点意见。
微澜电子书
https://pan.baidu.com/s/1VteoUBsas0XTlv4APiHcAA
前期两个铺垫
唐诗三百首
https://pan.baidu.com/s/1ey68_FjdwV2jr8txYGW80w
四大名著
https://pan.baidu.com/s/1teB1MODF5ntCW9_-miunsQ