这是本教程的第一部分。

1.    写在前面

亲们,I am back again!

自从年初搞了一部移动签约的android手机,没装几个App,现在经常报“空间不足”,删了很多App也不见好:

Android 跳转浏览器下载pdf android 文件浏览器_服务器

因为自始至终我对Android系统里面的文件和文件夹都感觉挺神秘的,所以想一探究竟,搞清楚其中的奥秘,于是想到做一个文件浏览器。

与其自己从头开始,不如找一个开源的代码学习学习,在这个教程,我就是要和大家一起学习GitHub上一个文件浏览器的开源工程,该工程不算太复杂,代码风格颇佳,而且涉及到不少Android我们未曾接触过的知识,因此作为“解剖麻雀”的对象很是适宜!

该工程功能是这样的,启动后先显示一个Activity,该Activity只包含一个按钮:

Android 跳转浏览器下载pdf android 文件浏览器_服务器

点击”Choose a file”按钮后显示:

Android 跳转浏览器下载pdf android 文件浏览器_服务器

选择”Choose a file” Activity,出现了文件浏览器Activity,你可以浏览各个文件夹:

Android 跳转浏览器下载pdf android 文件浏览器_服务器

Android 跳转浏览器下载pdf android 文件浏览器_服务器

该Activity的Action Bar显示Logo和当前路径,然后显示当前路径下的文件夹和文件,选中一个文件后,文件浏览器Activity返回,在开始的Activity用Toast显示选中文件的路径:

Android 跳转浏览器下载pdf android 文件浏览器_服务器

2.    如何从GitHub下载开源代码

Android 跳转浏览器下载pdf android 文件浏览器_服务器

这一节将讨论如何从Github上下载我们要分析和学习的文件浏览器开源工程。

Github.com是一个开源工程托管的网站,上面的工程都是通过Git这个代码版本控制工具来管理。

如果你和其他人协作开发过软件,则应该会用到代码版本控制工具,例如Sourcesafe、SVN、CVS等,这几种工具的工作方式都是客户端-服务器的工作模式,见下图:

Android 跳转浏览器下载pdf android 文件浏览器_服务器

在这种模式下,我们一般先从服务器下载(Update/Sync/Get Latest)最新的代码,修改,然后提交(Commit)到服务器,如果服务器不能访问了,我们就没法更新代码或者提交我们的代码了。

Git使用不同的工作方式:它是一种分布式代码版本控制工具,见下图:

Android 跳转浏览器下载pdf android 文件浏览器_服务器

例如Github服务器上有一个开源工程的代码仓库(Remote Repository),我们想查看或者修改这个开源工程,我们第一步是要把这个远程的代码仓库克隆(clone)到本地,然后在本地修改,修改完提交到本地库(注意不能直接提交到远程的代码仓库),如果想提交到远程代码仓库,执行Git push命令。

克隆创建的本地库和远程库地位是平等的,这种工作方式的好处是我们的改动可以提交到本地库,在需要的时候push本地库的改动到远程库(是好处么?好吧,不管好不好我们先都接受吧)。

回到正题,我们这里要下载开源文件浏览器的代码,这个工程的地址为:

步骤:

1)注册Github账号。

Android 跳转浏览器下载pdf android 文件浏览器_服务器

3)打开新安装的GitHub,先登录进去:在页面左侧选择github/login in,在右侧输入用户名密码。

Android 跳转浏览器下载pdf android 文件浏览器_服务器

4) 登录完成后,我们可以设置默认的git本地库路径以及默认的git脚本执行工具(我这里选择PowerShell):

Android 跳转浏览器下载pdf android 文件浏览器_服务器

Android 跳转浏览器下载pdf android 文件浏览器_服务器

6)打开桌面上的”Git Shell”,可以看到默认到了我们先前设置的路径,运行命令:

完成后可以看到f:\git底下多了一个aFileChooser的文件夹,克隆库完成!

Android 跳转浏览器下载pdf android 文件浏览器_服务器

注意我们不能把本地的修改提交到远程库上,除非这个工程的创建者在GitHub上设置了你的账号可以提交代码。

赶紧用ADT打开这个工程看看吧!(什么?不会?在Eclipse的Project列表区右击选Import-->Android-->Existing Android Code Into Workspace,浏览到f:\git\aFileChooser)

(未完待续)