Android 逃逸。(点)在渐变字符串中
我试图在创建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。所
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"