使用Tortoise SVN版本控制Eclipse工作区的Android项目需要注意的地方:
1。不需要版本控制的目录:bin, gen
Eclipse中新建的Android项目,包含两个不需要也不能版本控制的目录:bin,gen。其中bin就是编译的二进制文件的存放路径,gen是Android需要的资源文件的源文件存放的目录(就是R.java存放的地方,具体是干什么的,可以参照Android的SDK,反正就是一个文件定义一个类,类中的变量对应了程序中的资源ID)。这两个文件夹每次build的时候都会清空,而Tortoise SVN进行版本控制就是靠在文件夹中存储一个隐藏的.svn文件夹来做的,这样只要一build,版本控制的信息就丢了,所以,这两个目录不可以版本控制。当然了,都是生成的东西,也不需要版本控制。故在提交项目的时候不要让bin和gen目录被提交。
想让eclipse自动屏蔽掉bin/gen目录,可参考以下方式:
用svn控制版本,svn本身是不会识别哪些该传,哪些不该传,这就导致有些关于路径的东西(比如拓展jar的路径)也被上传了,而当别人下载后,那个路径对于这个人可能完全不存在,项目编译就会出问题。用eclipse安装了svn插件,不能一股脑把android项目都传上去。
Android项目有以下文件内容不需要添加到版本控制:
- bin目录
- gen目录
- .classpath文件
- .project文件
要想在eclipse里屏蔽它们,需要这样操作:
- Click on Window -> Preferences
- Select Team -> Ignored Resources
- Click on Add Pattern and enter "bin"
- Click on Add Pattern and enter "target"
- Click on Add Pattern and enter "m2-target"
- Click on Add Pattern and enter "gen"
- Click on Add Pattern and enter ".classpath"
- Click on Add Pattern and enter ".project"
- Click on Apply and then OK
这样在以后提交时,这些都会自动屏蔽掉,不会更新上去。
还有一个问题是每次编译时,eclipse都会将src目录下的东西到考到bin里,这样.svn也会跟着进去,这样即使bin被屏蔽了,但还是在svn时有问题,解决方法:
菜单 - Project - Properties - Java Build Path - Source - xxx/src - Excluded,双击或点右边的编辑,在Exclusion patterns中加入"**/.svn/**",让Eclipse忽略.svn目录即可。
2。修改Build Path的设置
Eclipse默认会将src目录中的内容copy到bin文件夹中。如果按照第一步,没有对bin进行版本控制,但是对src等其他必要的目录进行了版本控制的话,就会莫名的发现bin的目录中多了一个.svn的文件夹,但是不像其他的同名文件夹,这个不是隐藏的。因为这个就是从src目录中copy过来的。
这会产生两个问题,一个是这个.svn文件夹,通过Tortoise SVN的命令,可以在bin中修改src的版本控制(因为是复制过来的么,简单理解可以认为是拷贝了另一个东西的指针过来),当然这个通过小心操作可以避免误操作。但是,另一个问题,就是Eclipse在编译的时候会去尝试处理.svn文件夹中的内容,这个就会出现许多莫名的错误,导致无法成功编译。
所以我们要避免从bin中copy src目录中的.svn文件夹,这个要在项目的Build Path设置中修改,在里面的Source标签中,找到src对应的Excluded进行编辑,Exclusion patterns添加**/.svn/**,即可忽略.svn文件夹。从而解决上面的问题。但是这个不能进行全局设置,对每个新项目都这么做一遍,也挺不人性化的。
另外,如果直接删除bin和gen的svn,有时连src下的文件也被删除了。
3。如果不幸因为.svn中的内容产生了错误却不能通过上面提到的方法解决,可以在Eclipse中删掉项目(别从硬盘上删掉……),然后选择File->Import,将硬盘上的项目重新导入,烦人的错误就消失了。(囧,不知道为什么这样会有用)。
源:(http://blog.sina.com.cn/s/blog_6231b8420100h4ws.html) - 使用Tortoise SVN版本控制Eclipse工作区的Android项目_孟昭俊_新浪博客