使用local.properties存API_KEY打包APK时遇';'预期错误求助
解决方案
首先保持local.properties里的API密钥不带任何引号:
API_YOUTUBE = xyxyxyxyxyxxyxyxyxyx--xyxyxyxyxxyxyxy
接下来修改build.gradle中的buildConfigField配置,手动给获取到的密钥值加上转义的双引号:
buildConfigField "String", "API_YOUTUBE", "\"${properties.getProperty('API_YOUTUBE')}\""
这样配置后,生成的BuildConfig.java会自动带上正确的双引号:
public static final String API_YOUTUBE = "xyxyxyxyxyxxyxyxyxyx--xyxyxyxyxxyxyxy";
如果你的API密钥里包含特殊字符(比如反斜杠、引号),建议用escapeJavaString()方法做自动转义,更稳妥:
buildConfigField "String", "API_YOUTUBE", "\"${properties.getProperty('API_YOUTUBE').escapeJavaString()}\""
原理很直接:buildConfigField的第三个参数会直接作为Java代码片段写入BuildConfig,所以必须确保它是合法的字符串字面量——也就是被双引号包裹的内容。直接在gradle里用转义双引号\"包裹属性值,就能避免local.properties里加引号导致的解析错误,同时生成正确的Java代码。
内容的提问来源于stack exchange,提问作者PPavesi
相关产品推荐
相关产品推荐

