一、AS环境部署
由于小米便签项目是用eclipse开发的,与Android studio的工程结构不同,所以需要将其转化为gradle项目,才能在AS中运行。
点击Import Project:
然后一直默认选择,下一步就可以。
可能会出现以下错误(由于再配置的时候没有截图,以下引用别人的图)
根据搜索的资料,我的方法是用手机流量进行下载或者多尝试几次。
还有可能会出现报错乱码,则需要在项目的build.gradle文件中添加以下代码
还有会出现以下报错,这是因为小米便签依赖于一个httpcomponents-client组件,用来执行网络服务
所以需要到网站Index of /apache/httpcomponents/httpclient/binary (tsinghua.edu.cn)下载组件,并导入到项目中
有时候会出现超时的报错,需要在项目的build.gradle文件中添加以下两行google()代码
并在build.gradle(:app)中添加以下依赖
以上是遇到的大部分问题。解决完即可运行:
二、源码组织方式——gitee
- 创建针对本作业的项目和软件版本库,在版本库中建立“src”和“doc”两个文件夹,分别存储软件系统的源代码和报告文档
- 建立master、develop以及成员分支(a_branch),将当前版本存入master目录下
- 实践操作参考:组长组员两个人协同开发:组长负责维护开发分支dev,组员向dev上传提交;当dev测试合适后,组长有唯一权限向master上传作为最终结果。
- 远程仓库有master和dev两个分支
- 组长本地有master和dev分支,分别关联对应的远程分支
- 组员本地只有一个分支,关联远程dev分支【可以选择clone某一个远程分支到本地】
克隆dev分支到本地:
验证:
7.具体开发流程是:组长和组员分别在各自的本地dev分支开发,有阶段性成果后push到远程dev【若有冲突,解决冲突再合并】
- 推送代码到dev分支:
- 推送成功
当开发完成、结果稳定后,组长将本地的master和dev分支merge,再把master分支push上去
将本地的master和dev分支merge:
把master分支push上去:
在gitee的结果:
三、泛读小米便签代码代码
1.小米便签功能介绍
1)应用入口
第一次进入系统时,应用会自动创建一个便签
2)便签-编辑
3) 便签 -菜单-删除
菜单功能-删除
4)便签-菜单-设置文本大小
5)便签-菜单-提醒我-闹钟
6)便签-更换便签背景,只有5种颜色
7) 便签-列表
8) 便签-清单模式
9) 右键菜单-gtask设置和同步
同步数据到gtask,需要输入账号和密码,但是这个功能好像用不了。
10) 右键菜单-导出到文本,这个功能我也觉得好像用不了
11) 右键菜单-搜索便签
12) 右键菜单-新建文件夹
13) 便签-菜单-添加注释
14) 便签-菜单-分享,可以分享到email或messaging
15) 便签-菜单-发送到主页,成功后,便签就能直接在主页查看了
16) 右键菜单-设置
2.绘制用例图(UML)
2.1 用例图概念
2.2 绘制小米便签用例图
在完整阅读完小米便签代码后,分析并掌握小米便签系统的功能,进一步学习理解UML图的绘制
3.绘制体系结构图
项目目录
小米便签系统Java代码分为data,gtask,model,tool,ui,widget六个模块
3.1 tool包
BackupUtils提供备份工具的功能
DataUtils处理便签数据的工具
GTaskStringUtils定义了很多的静态字符串,目的就是为了提供jsonObject中相应字符串的"key"。把这些静态的定义单独写到了一个类里面,这是非常好的编程规范
ResourceParser字面意义是资源分析器,实际上就是获取资源并且在程序中使用,比如颜色图片等
3.2 model包
Note管理便签的数据和操作
WorkingNote管理工作中的便签包含各种相关属性和方法
3.3 data包
Contact获取联系人信息
Notes定义一些常量和标识符
NotesDatabaseHelper用于管理便签应用的数据库
NotesProvider用于向数据库提供各种功能(增,删,改,查)
3.4 gtask包
gtask.data包
MetaData用于管理任务的元数据 (?)
abstract class Node抽象类Node,用于表示各种数据对象
SqlData用于处理数据库的数据
SqlNote用于处理数据库的便签数据,和sqlnote的关系上是子集关系,即data是note的子集(节点)。
Task用于表示任务对象
TaskList用于表示任务列表对象,包括获得任务数量、添加删除移动任务等方法
gtask.exception包
ActionFailureException支持小米便签运行过程中的运行异常处理。
NetworkFailureException支持小米便签运行过程中的网络异常处理。
gtask.remote包
GTaskASyncTask实现GTask的异步操作过程
GTaskClient实现GTASK的登录操作,进行GTASK任务的创建,创建任务列表,从网络上获取任务和任务列表的内容
GTaskManager可以实现本地同步和远端同步等方法
GTaskSyncService是在一段不定的时间运行在后台,不和用户交互的应用组件
3.5 widget包
3.6 ui包
4.类之间的关系调用图
通过绘制类之间的调用关系图来掌握小米便签的具体设计;
要绘制一个项目中各类的关系图,首先必须了解类间关系的种类,它分为六个分类:继承(泛化)、实现、关联、聚合、组合、依赖;
ui里的继承类间关系
ui里的实现类间关系
data的类之间的调用关系图:
gtask的类之间的调用关系图:
5. 核心类的主要作用:通过给出核心类的主要作用来进一步加深对软件设计的理解。
我认为核心类有两个,一个是model包下的Note类,还有一个是data包下的NotesProvider类。
Note类表示应用中的单个便签的实体对象,它主要通过两个成员变量mNoteDiffValues和mNoteData储存和管理便签信息和数据(如便签的创建日期、修改日期、类型等),通过与用户的交互,处理文本和通话数据、执行批量操作、处理异常以及记录日志等功能,确保应用能够高效地存储、搜索和更新便签数据。
NotesProvider类,它继承自Android的ContentProvider类。ContentProvider是Android四大组件之一,用于在不同的应用之间共享数据。NotesProvider类通过UriMatcher,根据不同的URI请求执行不同的操作,用于向数据库提供各种功能(增,删,改,查)。