在开发Android 的 程序员中,应该说使用Eclipse或者Netbean的是最多的。考虑到Google推出了一整套开发插件,让用户从项目到写代码到编译运行链接模拟器 一气呵成,用Eclipse这样的IDE无可厚非。不过,总有一些用户不喜欢IDE,不想用类似于Eclipse的方式开发,他们的想法包括
- 任何编辑器都比不上vim/emacs
- 我电脑太慢,不想跑IDE
- 纯命令行形式,我就喜欢,每天打10000个命令我也喜欢,反正我选择,我喜欢
^_^
而本文 , 就是为这部分用户而写。其实对于Google这样的Linux气氛浓厚的公司,它本身提供的命令行工具就已经足够你脱离IDE了,就是编辑上,很多 Eclipse优秀的功能都没有。但是,配合本文介绍的eclim,你会发现,你把Eclipse嵌进了vim中!现在,建立项目之后,从编辑源代码到编 译到管理项目最后到安装程序到模拟器,所有任务都可以在一个vim里面完成 ,我们真正把vim当成了IDE!
注:我不是一个Cmd盲目爱好者,在我看来,如果真的想开发Android应用而非小打小闹,那么IDE还是有点用处的:
- 当你项目很大,要管理的东西很多时。用Vim开发任何语言的程序都会面临scalable的问题
- 当你硬着头皮找bug时。DDMS配合Eclipse确实比其他方式都要方便得多。
所以我自己是Cmd加IDE配合着用
实现本文所讲述内容的关键,就是eclim这个开源软件。你可以从eclim官方站点 了解并下载。接下来,就针对eclim来讲解具体的安装使用步骤。
安装
安装之前要确认,你的系统有
- JDK1.5或者更高
- Eclipse 3.5.x
- vim 7.1.x,并且vimrc里面要set nocompatible并打开filetype plugin on
首先下载,我们可以从下载页面看到,有三种包,exe是windows的,tar.gz是源码,sh是Linux/Mac下安装脚本。由于源码包需要有Ant来配置安装,还得花心思去看版本对不对,所以我们可以直接下载sh文件来安装。
下载sh文件后,执行,会弹出安装的图形界面,一路next即可。注意,请事先备份你的~/.vim目录下的所有原有插件,因为eclim默认是覆盖安装插件到这个目录下的。你可以安装之后再把备份的原有插件copy回去即可。
好,假设我们已经安装完成了,怎么用eclimd呢?eclimd有两种最方面的模式,一种是在eclipse里面用vim,一种是在vim里面享受eclipse的功能。这里主要说一说以vim/gvim为主环境的配置。
首先,eclim和其他很多程序一样,有一个daemon守护程序,所以每次想使用的时候,都必须把这个daemon守护程序打开。打开这个程序靠 eclimd这个脚本,通常都在你的~/.eclipse/xxxxxx目录下,具体在哪里取决于你安装时候指定的eclipse配置文件目录。如果是在 忘了,用
find /home -name eclimd 2>/dev/null
找。一旦找到,建议把路径加到path里面去,然后将这个命令设置为开机启动,如果你会经常用的话。
好,现在daemon程序跑起来了,打开vim,用命令
:PingEclim
如果一切正常,则会出现eclim以及eclipse的版本号。否则,则可能是daemon运作不正常。
使用
好,假设到这里,一切都正常,我们就开始用eclim来进行Android工程了。下面的内容,就是今天要说的核心部分。
eclim本身支持五种工程的创建,c/c++, java, php, python, ruby,工程创建方法请参见官方网页的说明。但是,我们这里并不用eclim本身来创建工程。因为Android SDK本身已经提供这个功能了,而且SDK创建出的工程才有那一套文件个目录。记住,我们用eclim是为了给Android开发提供便捷的,所以整体流 程还是走Android那套。所以,我们还是先创建project
Android create project -n test –activity demo –package cn.forwind.myproject –target 3 –path ./myproject
这样就在本地目录下创建了工程目录myproject。你进去之后用la命令就会发现,这本质上不是一个eclipse的java工程,因为没 有.project和.classpath两个文件。而eclim本质上是遵循eclipse规范的,怎么办呢?没关系,我们可以这样做。到 myproject目录的上一层目录,打开vim,输入
:ProjectCreate ./myproject -n java
什么意思呢?就是说我们要在./myproject目录下建立一个java对应的eclipse工程。而./myproject目录已经有 Android所建立的所有文件了,所以这时,双方需要的文件就都有了。用la看看,现在是不是又有.project又有.classpath了?而且 src目录也被自动加进classpath了!
注:似乎现在eclim还有一个bug,就是建立project的时候path不能太深,超过5层就error了。我用的 解决方法是把包含project的目录放在home目录下,保证路径不会很深。你也可以通过eclipse读取一次这个Android工程,它就会自动帮 你创建.project和.classpath。也不麻烦,因为对一个project只需要做一次即可。
好,现在我们就把新project建立好了,接下来建立一个avd
Android create avd -n forwind.cn
这样,该做的准备工作就完成了。现在进入myproject目录,打开vim。
首先在vim里面用
:ProjectList
命令,确认一下,myproject这个project是被认出来了的。好,我们现在试着运行
:ProjectTree myproject
看看,是不是左边出现了整个project的层级架构?怎么操作,我相信所有的vimer都应该会,就不讲解了。你还可以把这个命令定义成快捷键,后面不用加project名称,因为默认打开当前project的树状图。
你还可以用
:ProjectsTree
来打开所有的Project的树状图。如果想打开一个文件,就自动打开对应的project的树状图,就在你的vimrc文件里面添加这么一句
let g:EclimProjectTreeAutoOpen=1
:%JavaFormat
:Validate
:JavaCorrect
最后再介绍一下大家都会很关心的代码补全。eclim的代码补全,用的是相当标准的Vim补全方法,快捷键就是 ”Ctrl x Ctrl u”。我们都知道U表示user define。效果如何呢?看看下面这张示意图:)
我用过Vim不少代码补全插件,有针对语言的,有通用的。应该是eclim是我用过对Java语言支持最好的。当然前面介绍过了,eclim对其他语言也有很好的支持,有兴趣的朋友去官网看看。
好,代码编辑部分就介绍到这里。应该说,eclim的功能实在太多了,大多数eclipse能有的,你都能在eclim里面找到。我这里就不继续介绍了,喜欢这个玩意的朋友,可以去看看这张cheatsheet ,常用功能就基本包括完了。
那么编辑完代码,接下来干嘛呢?去emulator上测试啊。首先你要打开刚才建立的avd
emulator -avn AVD_NAME
然后编译安装。在Android SDK中,你可以用ant debug来编译debug版本的程序,然后adb install name.apk 安装,也可以用ant install安装。而eclim牛逼之处在于,它内建支持ant!也就是说,你在vim里面把代码写完,根本不用推出,直接一个ant install,就可以在模拟器里面看效果了。而且,ant对应的build.xml,你也可以直接编辑,eclim同样提供了代码补全和检查基本语法的 功能!
怎么样,看见上面的介绍,有没有一点心动啊?再说一遍,eclim真的是一个很牛逼的工具,建议所有有兴趣用它的人,都去官网上自习读document,保证你会发现,你越来越不需要eclipse了。(除了调试:P)。
最后说一下,eclim还支持单独的配置文件,你可以在home目录下建一个~/.eclimrc,性质就和.gvimrc一样的。
最后的最后,恩,我没有介绍用eclim编辑界面XML,因为我用DroidDraw来画界面。不过你习惯了文本编辑的话,其实道理是一样的。