Randall | 一、从零起航
一、版本控制及项目托管
基本步骤:
- 注册github账号
- 安装git环境
- 创建android项目
- 生成本地git仓库
- 共享到github上
1.注册github账号——已有的话可跳过
点击这里打开注册页面

2.安装git环境——已配置的可跳过
点击这里打开git官方网站

3.创建android项目——使用Android Studio创建(简称AS)




4.生成本地仓库——使用命令行的可以跳过







在AS中,除了复杂的git操作之外,像常用的clone、push、pull、merge、commit、stash等,还是非常方便的,并且AS将日常操作简化为:update project和commit changes。对于其他项目,推荐使用git小乌龟操作git仓库。
.gitignore文件会使git忽略不相干文件目录的版本控制,如build、.gradle等,能够极大减少github上的仓库大小,从而使得开发保持纯粹。
5.共享到github上









二、项目依赖与开发模式
基本框架:
- Android官方
- 依赖注入
- 数据库、网络、图片加载、异步、网页解析
- 其他相关
1.官方框架
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
design兼容包用来实现低于5.0版本的material design(材料设计),会为我们带来v7和v4兼容包。
cardview兼容包是非常炫酷的卡片布局,值得引入。



这里有很多开发版/预览版提供试用,如果只是学习使用的工程,可以添加一些进来玩玩;若是开发的商业或开源app,那就要考虑稳定性了。
2.依赖注入框架
最初的依赖注入框架:Dagger
被谷歌接管之后:Dagger2
框架简介:A fast dependency injector for Android and Java.——来自Square主页的惊喜。
依赖注入是什么?简单来说,就是管理项目中,大量实例的生命周期,以及获取实例的方式。
Butter Knife从使用角度来看,就是完美的依赖注入框架。
你无需在Application的onCreate中,编写大量的getInstance方法。如果它们之间存在关联性,那么维护这些方法的调用顺序将会使其他开发者崩溃。而另一个令人绝望的地方在于,一段时间后你很有可能忘记getInstance的类名。依赖注入,将完美解决这些棘手而本不应该存在的问题。
3.数据库及网络框架
// 数据库框架
compile 'com.squareup.sqlbrite:sqlbrite:1.1.1'
// 网络框架
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-scalars:2.3.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.3.0'
// 网络请求日志
compile 'com.squareup.okhttp3:logging-interceptor:3.8.0'
// 图片加载框架
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'
// 一个对于构成使用的Java虚拟机观察序列异步和基于事件的程序库
compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.3.0'
// Json序列化工具
compile 'com.google.code.gson:gson:2.8.0'
// 网页内容解析器/装饰器
compile 'org.jsoup:jsoup:1.10.3'
【SqlBrite】是轻量级的数据库框架,搭配Rxjava后,要比其他ORM框架舒服很多。
【Retrofit】和【OkHttp】就不用多说了,火得一塌糊涂。
至于为什么用【Picasso】而不是Glide,一个原因是喜欢Square全家桶,另外一个则因为Picasso比较轻。
【RxJava】和【RxAndroid】对于异步任务来说,简直没有比它更优雅的了。
【Gson】上手简单,使用方便,稳定。
【Jsoup】是一款网页解析神器,很容易就把一个网页拆成无数的零件,然后开发者可以随意拼接为想要的模样。
PS:这里提一点,原本是想用simple-xml来解析网页内容的,这也是一个网页解析神器,使用注解的方式,直接将网页内容转换为对象,方便快捷强大,唯一的缺点是层级分明,导致无法提取出wml协议的文本内容。而在地狱之门游戏中,将有大量的文本内容分散在html元素节点之间,所以只好放弃这款神器,转而自己根据提取到的内容,去生成相应的对象。
4.其他相关
// 简单的调试日志工具
compile 'com.github.mrzhqiang:debug-log:1.1'
// 常用的开发辅助工具
compile 'com.github.mrzhqiang:helper:1.1'
debug-log用来兼容系统调试日志的简单工具,修复了系统日志功能上的短缺。
helper将包含很多很多,从其他开源项目、第三方开源框架中,收集到的一些静态工厂方法,以及个人开发的一些小工具。
因为它们非常地纯粹——都是静态工厂方法,并且需要不断地更新,所以作为第三方框架来依赖,会比较友好。
三、总结
至此,一个新项目应有的基本要素,都已经具备,下面将通过 Dagger2 建立全局的基本依赖。