【问题标题】:illegal escape character on BuildConfig.java, Android StudioBuildConfig.java,Android Studio 上的非法转义字符
【发布时间】:2016-11-12 03:25:42
【问题描述】:

我在 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

我该如何解决这个问题?

【问题讨论】:

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


    【解决方案1】:

    更新

    抱歉,我没有读到问题出在BuildConfig。虽然确实不建议编辑 BuildConfig.java,但它的内容确实来自 build.gradle 的某个地方,您必须在那里转义字符


    字符\是特殊字符,需要转义。将\ 的所有实例替换为\\ 喜欢

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

    【讨论】:

    • 是的,我知道,我必须用“\\”替换所有“\”实例。但问题是 BuildConfig.java 文件是自动生成,我们应该不编辑文件,不能编辑它。
    • 虽然您确实不应该编辑 BuildConfig.java,但TRANSLATION_ARRAY 来自build.gradle。所以这将是你必须逃避角色的位置。更新了答案
    猜你喜欢
    • 2011-09-09
    • 2012-09-14
    • 1970-01-01
    • 2016-04-07
    • 2015-08-23
    • 2019-05-24
    • 2013-12-08
    • 1970-01-01
    相关资源
    最近更新 更多