在 build.gradle 中的相对路径在 Windows 和 OS X 之间存在差异

14

我的项目有一个包含密钥库文件(file.keystore)的文件夹。这是它的结构:

+---.gradle
|   \---2.2
|       \---taskArtifacts
+---.idea
|   +---copyright
|   \---libraries
+---app
|   +---build
|   |   +---generated
|   +---libs
|   \---src
|       +---androidTest
|       \---main
+---build
|   \---intermediates
|       \---dex-cache
+---gradle
|   \---wrapper
\---keystore

我在 build.gradle 中使用它的方法如下:

signingConfigs {
    project {
        keyAlias 'project'
        keyPassword 'blabla'
        storeFile file('keystore\\file.keystore')
        storePassword 'blabla'
    }
在Windows操作系统中一切正常,因为它搜索的目录是:

/project/keystore/file.keystore

但在OS X操作系统中,它会搜索:

/project/app/keystore/file.keystore

我应该如何在build.gradle文件中编写代码?

4
你是否尝试过使用storeFile file(rootProject.projectDir.absolutePath + '\\keystore\\file.keystore')?这行代码用于存储文件并指定路径,其中rootProject.projectDir.absolutePath表示项目根目录的绝对路径,\\keystore\\file.keystore为keystore文件的相对路径。 - Master_T
3
尝试存储文件 file('../keystore/file.keystore')。 - Gabriele Mariotti
3个回答

26

尝试

project {
    keyAlias 'project'
    keyPassword 'blabla'
    storeFile file('../keystore/file.keystore')
    storePassword 'blabla'
}

我认为现在已经太晚了,但或许这可以帮助有相同问题的人。


什么是太晚了? - David Makogon

22

使用 Groovy 字符串插值 $rootDir 属性。

project {
   ...     
   storeFile file("$rootDir\keystore\file.keystore")
   ...
}

请注意它使用“双引号”


1
Linh Nguyen Vu是正确的!测试下面!关键字是已解决:{{link1:测试解决方案}}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接