五月团队项目收获
我们的团队项目是U-Help快递代领app,前期一直在做调研和计划,直到5月才开始写具体的代码。五月我们主要完成的是登录和注册界面的编写,万事开头难,登录和注册都涉及到界面设计、事件响应、界面切换以及前后端通信,看似简单的一张界面以及涉及到了本项目中大部分技术框架,所以这部分的工作对于技术框架的学习与掌握有极大的收获。
界面设计方面我们一开始采用的方法是人工写xml文件的方式,后来发现远不如拖动控件的自动设计方式高效,但拖动控件生成的界面在虚拟机上运行时会乱成一团,后来发现需要把constraint layout改为relative layout才行。事件响应和界面切换都使用的是安卓原生功能,真正复杂的是前后端通信。
为了实现注册、登录功能,需要在使用服务器上的数据库,于是我在服务器上安装了mysql server,并将服务器端脚本确定为python flask框架。flask框架十分简洁,能够将客户端请求分配至不同路由,即根据不同客户端请求执行相应函数,登陆注册界面需要分别编写login和register函数。需要注意的是,flask设置的host和port参数分别是指监听的ip范围和自己的服务端口,所以host应该设为0.0.0.0以监听所有ip地址。
为了操纵数据库,使用了mysql.connector框架,这是python访问mysql数据库的一种常用框架,使用方法简洁,通过sql语句字符串作为参数提供给相应函数,对应的命令便会执行。在做插入操作的时候,sql语句需要其他参数,这时需要在sql字符串中用'%s'来表示参数(‘ ’不可省略),然后在字符串后用%(参数)来传参。其中还有一些坑,最好的解决方式是遵守http协议和看别人的博客。
最后是安卓端访问服务器的框架,采用了okhttp3,并与服务器端约定使用json传递数据(post方式),将用户登录或注册的信息存为json格式并发送给服务器端,然后在安卓端使用异步处理方式定义响应函数,由此完成前后端交互。okhttp3的坑很多,很容易出现各种问题,有时到了最后交互时没有任何问题但就是连不上服务器,很可能是okhttp3的两个依赖关系不匹配,此时看看别人博客里添加的两个依赖关系的版本都是什么,不要从不同的博客里分别选取包的版本。
以上是技术框架上的收获,这为团队项目的开展奠定了基础。而在代码管理方面,我花了不少时间彻底掌握了github的使用方式,大家统一使用git来个管理代码(github上添加了ssh),每个人在github上都有各自的分支防止污染代码,并定下了合并代码的准则以减少合并冲突。
至于团队合作方面,由于大二的同学忙于考试,大三的同学忙于暑研准备,时间安排上很难一致,所以容易出现一方进度拉下的情况,如何协调大家的时间使得写代码的效率很高是一个需要解决的问题。