一、背景
安卓项目中,有时会存在通用的项目技术文件结构,和依据现实需要组织的文件结构矛盾的情况。如Gradle插件在开发过程中通常放在项目的buildSrc目录下,版本稳定后再发布到Maven。但同时,在特定的需求背景下,又经常存在一些特定化的目录层次,如将Gradle插件目录以其他名称命名,甚至在其他的文件路径中。再如:开源库中经常存在主工程目录下是源码,Demo的App并非主工程的App,而是以二级目录结构存在,等等。
最近在看开源项目时,发现一些工程在面对此类矛盾时,采用了软件的处理方式,感觉很有技巧性,非常实用,决定Mark下。
二、方案
软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
在某些需求场景下,可以通过软链,达到想要的结果。
软链的生成方式非常简单,简单点可以理解成Windows上的快捷方式,可以直接通过如下命令形成软链关系。
ln -s ~/original ~/symlink
其中,original作为原始文件,symlin作为新生成的软链文件,可以直接链接到原始文件中去。
例如,上述中的Gradle插件开发中的问题,可以直接生成一个buildSrc软链:
ln -s ~/xxx/graldePluginDir ~/ttt/buildSrc
注,实际项目开发中,我们应该使用相对路径。否则其他同事构建项目时会出现问题。
相对路径形式的命令写法如下:
ln -s graldePluginDir buildSrc
可以通过ll直接看一下他们之间的差异:
绝对路径形式生成的软链:
相对路径形式生成的软链:
如此,插件开发过程中,就可以很方便的开发调试等。
其他类似的需求场景都可以采用此种方案。
end~