BuildConfig.java,Android Studio上的非法转义字符

时间:2016-11-12 03:25:42

标签: android android-studio intellij-idea android-build android-buildconfig

我在Windows上使用Android studio 2.2.2克隆project,当我运行该项目时出现错误

BuildConfing.java文件上的

非法转义字符

原始开发可能在linux ubutu上使用IntelliJ IDEA。 我确实清理了项目并重建它,没有任何变化。

错误发生在以下一行

public static final String[] TRANSLATION_ARRAY = new String[]  {"G:\Developer\AndroidStudioProjects\gpslogger\gpslogger\src\main\res\values","G:\Developer.......,....,....};

BuildConfig.java是自动生成的文件,不应编辑。

为什么会这样?如何生成BuildConfig.java?

更新

@Vijai,非常感谢。 问题出在build.gradle文件中。 以下任务返回带有非法转义字符的字符串。

task buildTranslationArray << {
def foundLocales = new StringBuilder()
foundLocales.append("new String[]{")

fileTree("src/main/res").visit { FileVisitDetails details ->
    if(details.file.path.endsWith("strings.xml")){
        def languageCode = details.file.parent.tokenize('/').last().replaceAll('values-','').replaceAll('-r','-')
        languageCode = (languageCode == "values") ? "en" : languageCode;
        foundLocales.append("\"").append(languageCode).append("\"").append(",")
    }
}
foundLocales.append("}")
//Don't forget to remove the trailing comma
def foundLocalesString = foundLocales.toString().replaceAll(',}','}')
android.defaultConfig.buildConfigField "String[]", "TRANSLATION_ARRAY", foundLocalesString
}
preBuild.dependsOn buildTranslationArray

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

更新

抱歉,我没有看到问题出在BuildConfig。虽然它的没有建议来编辑BuildConfig.java,但它的内容确实来自build.gradle,你必须在那里转义角色

字符\是一个特殊字符,需要进行转义。将\的所有实例替换为\\,如

public static final String[] TRANSLATION_ARRAY = new String[]  {"G:\\Developer\\AndroidStudioProjects\\gpslogger\\gpslogger\\src\\main\\res\\values","G:\\Developer.......,....,....};