相对路径上一级及上上级目录的表示方法

问题引入,绝对路径的缺点

在Android开发中我会把keystore签名文件放在项目根目录下,然后在build.gradle中配置release包的签名配置,这样每次可以一键打包,不要要再选择签名输入密码等,配置如下所示

1
2
3
4
5
6
7
8
signingConfigs {
release {
keyAlias 'keyAlias'
keyPassword 'keyPassword'
storeFile file('D:/workspace/MyProject/mykeystore.jks')
storePassword 'storePassword'
}
}

Click and drag to move

但是签名文件位置D:/workspace/MyProject/mykeystore.jks之前是用绝对路径写死的,因为签名文件是放在项目根路径的,如果项目移动到其他路径,相应的也要修改签名文件的路径配置。或者与团队协同开发,同个项目不同的人从SVN或者Git上check out出来项目存放在本地的路径可能不一样,那么也要修改这个绝对路径的值。

相对路径出场

以上问题用相对路径就可以解决,因为该签名文件始终是存放在项目根目录下的,相对于module的builde.grale文件而言,是在builde.grale文件的上一级目录下,而上一级目录可以用../表示,所以可以用如下相对路径表示签名文件的位置,而且不管你把项目放在哪个路径下都不需要再修改该值。

1
../mykeystore.jks'

Click and drag to move

所以修改后的配置如下

1
2
3
4
5
6
7
8
signingConfigs {
release {
keyAlias 'xindeco'
keyPassword 'xindeco'
storeFile file('../mykeystore.jks')
storePassword 'xindeco'
}
}

Click and drag to move

上上级路径的表示方法

当然相对路径还可以表示上上级、上上上级、上上上上级目录等

上上级:../../

上上上级:../../../

上上上上级:../../../../

相对路径也可以表示上级目录下的不同子目录和文件,例如:

../../subdir/subsubdir/test.txt:表示当前文件的上上级目录下的subdir目录下的subsubdir目录里面的test.txt文件

是不是绕晕了,其实认真理解下还是很清晰的