Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 逃逸。(点)在渐变字符串中_Android_Gradle_Android Studio 3.0 - Fatal编程技术网

Android 逃逸。(点)在渐变字符串中

Android 逃逸。(点)在渐变字符串中,android,gradle,android-studio-3.0,Android,Gradle,Android Studio 3.0,我试图在创建Android版本时更改输出文件名。这是我用于此的代码 applicationVariants.all { variant -> variant.outputs.all { def buildDate = getDate() outputFileName = "$variant.applicationId-$buildDate-$variant.buildType.name" } } 它工作正常,但输出文件没有扩展名.apk。所

我试图在创建Android版本时更改输出文件名。这是我用于此的代码

applicationVariants.all { variant ->
    variant.outputs.all {
        def buildDate = getDate()
        outputFileName = "$variant.applicationId-$buildDate-$variant.buildType.name"
    }
}
它工作正常,但输出文件没有扩展名
.apk
。所以我试图通过最后添加.apk来添加它

outputFileName ="$variant.applicationId-$buildDate-$variant.buildType.name.apk"
这显然不起作用。它产生了以下错误-

No such property: apk for class: java.lang.String
然后我尝试在
.apk
之前添加
\
,但在
.apk
之前生成了一个额外的
\
。与
\$
相同。我可以在
.apk
之前添加一个空格,但文件名中会有一个空格

我的类路径设置为-

classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.google.gms:google-services:3.1.0'

因此,我的问题是,我如何才能避开点字符,并按原样打印它。

因此,我的一位同事进来建议我这样做(他甚至不在Android或Java中工作)

它成功了。我真傻:-/

替代方法:
最后,我使用了以下方法(感谢):


我认为正在发生的是,
gradle
正在混淆它是变量的全名还是普通的
字符串

一种解决方案是将变量包装在大括号内,如下所示:

"${variant.buildType.name}.apk"

你试过用{}包装你的变量吗?@SarthakMittal你能把它作为答案发布吗。包装确实有效。那个科莱格以30秒的优势击败了我:-)哈哈,好的,谢谢。我不确定这是否是最优雅的方式,但我也会这么做;-)你应该遵循另一个答案。在这种情况下,使用串联非常难看,而且不必要地会降低性能。;-)@吸血鬼我用了花括号的方法,但这肯定是其中之一。@noob如果我没有从kotlin那里选择另一种方法,我也会用同样的方法。:)
outputFileName = "${variant.applicationId}-${buildDate}-${variant.buildType.name}.apk"
"${variant.buildType.name}.apk"