问题引入,绝对路径的缺点
在Android开发中我会把keystore签名文件放在项目根目录下,然后在build.gradle中配置release包的签名配置,这样每次可以一键打包,不要要再选择签名输入密码等,配置如下所示
1 | signingConfigs { |
但是签名文件位置D:/workspace/MyProject/mykeystore.jks之前是用绝对路径写死的,因为签名文件是放在项目根路径的,如果项目移动到其他路径,相应的也要修改签名文件的路径配置。或者与团队协同开发,同个项目不同的人从SVN或者Git上check out出来项目存放在本地的路径可能不一样,那么也要修改这个绝对路径的值。
相对路径出场
以上问题用相对路径就可以解决,因为该签名文件始终是存放在项目根目录下的,相对于module的builde.grale文件而言,是在builde.grale文件的上一级目录下,而上一级目录可以用../表示,所以可以用如下相对路径表示签名文件的位置,而且不管你把项目放在哪个路径下都不需要再修改该值。
1 | ../mykeystore.jks' |
所以修改后的配置如下
1 | signingConfigs { |
上上级路径的表示方法
当然相对路径还可以表示上上级、上上上级、上上上上级目录等
上上级:../../
上上上级:../../../
上上上上级:../../../../
相对路径也可以表示上级目录下的不同子目录和文件,例如:
../../subdir/subsubdir/test.txt:表示当前文件的上上级目录下的subdir目录下的subsubdir目录里面的test.txt文件
是不是绕晕了,其实认真理解下还是很清晰的