Android:Firebase remoteConfig getString()方法正在从default.xml中的字符串中删除引号
我有以下远程config\u default.xml文件Android:Firebase remoteConfig getString()方法正在从default.xml中的字符串中删除引号,android,firebase,android-gradle-plugin,firebase-remote-config,android-gradle-3.0,Android,Firebase,Android Gradle Plugin,Firebase Remote Config,Android Gradle 3.0,我有以下远程config\u default.xml文件 <?xml version="1.0" encoding="utf-8"?> <defaultsMap> <entry> <key>LOCAL_JSON</key> <value>[{"title":"TitleA","path":"pathA","image_url":" Some URL A"},{"t
<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
<entry>
<key>LOCAL_JSON</key>
<value>[{"title":"TitleA","path":"pathA","image_url":" Some URL A"},{"title":"TitleB","path":"pathB","image_url":" Some URL B"}]</value>
</entry>
</defaultsMap>
如下图所示
我将相同的字符串放在Firebase remote config console上,一旦应用程序从那里获取该字符串,它就会像我预期的那样将双引号放在字符串中
我仔细检查了这一点,当我使用下面的project gradle文件时,它似乎工作正常
apply plugin: 'com.github.ben-manes.versions'
buildscript {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'me.tatarka:gradle-retrolambda:3.6.1'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.13.0'
classpath 'com.stanfy.spoon:spoon-gradle-plugin:1.2.1'
classpath 'com.google.gms:google-services:3.1.0'
classpath 'com.google.firebase:firebase-plugins:1.0.5'
}
}
allprojects {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
maven { url "http://oss.sonatype.org/content/repositories/snapshots" }
maven { url "https://jitpack.io" }
jcenter()
flatDir {
dirs 'libs'
}
}
}
apply plugin: 'com.github.ben-manes.versions'
buildscript {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.13.0'
classpath 'com.stanfy.spoon:spoon-gradle-plugin:1.2.1'
classpath 'com.google.gms:google-services:3.1.2'
classpath ('com.google.firebase:firebase-plugins:1.0.5')
}
}
allprojects {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
maven { url "http://oss.sonatype.org/content/repositories/snapshots" }
maven { url "https://jitpack.io" }
jcenter()
google()
flatDir {
dirs 'libs'
}
}
}
但是当我更新gradle以对所有库使用新版本时,引号似乎只有在那时才被忽略。
我的新项目梯度文件
apply plugin: 'com.github.ben-manes.versions'
buildscript {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'me.tatarka:gradle-retrolambda:3.6.1'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.13.0'
classpath 'com.stanfy.spoon:spoon-gradle-plugin:1.2.1'
classpath 'com.google.gms:google-services:3.1.0'
classpath 'com.google.firebase:firebase-plugins:1.0.5'
}
}
allprojects {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
maven { url "http://oss.sonatype.org/content/repositories/snapshots" }
maven { url "https://jitpack.io" }
jcenter()
flatDir {
dirs 'libs'
}
}
}
apply plugin: 'com.github.ben-manes.versions'
buildscript {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.13.0'
classpath 'com.stanfy.spoon:spoon-gradle-plugin:1.2.1'
classpath 'com.google.gms:google-services:3.1.2'
classpath ('com.google.firebase:firebase-plugins:1.0.5')
}
}
allprojects {
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
maven { url "http://oss.sonatype.org/content/repositories/snapshots" }
maven { url "https://jitpack.io" }
jcenter()
google()
flatDir {
dirs 'libs'
}
}
}
我不知道是哪个库导致了这种情况,但如果有人能指出这一点,那就太好了。我将此问题发送给firebase帮助团队,并得到以下响应: 这实际上是我们这边的一个已知问题,我们的工程师已经在努力解决这个问题。修复可用时,我无法共享任何详细信息或时间线,但请查看我们的发行说明以了解将来的更新 Gradle tools 3.0.1版似乎有问题。临时解决办法是使用Gradle tools版本2.3.3 在项目级
build.gradle
文件中:
将classpath'com.android.tools.build:gradle:3.0.1'
替换为
maven {
url 'https://maven.google.com'
}
classpath'com.android.tools.build:gradle:2.3.3'
及
用
maven {
url 'https://maven.google.com'
}
嗨Sheraz Ahmad Khilji首先,我为我的英语道歉,我不知道如何把英语写得很好 这是一个问题,因为firebase在地图中转换xml时有一个bug,要解决这个问题,可以使用地图而不是xml 样本:
firebaseConfig.setDefaults(映射);
此更改将使用双引号解决您的问题。此问题有多种解决方案
1.使用firebaseConfig.setDefaults(映射);用于设置默认配置
2。在.xml文件中的字符串中,在双引号(“)之前使用反斜杠(\)
3.将classpath'com.android.tools.build:gradle:3.0.1'替换为
4.在gradle.properties中添加android.enableapt2=false如果在默认xml文件中使用三重反斜杠作为转义序列,则它可以工作:
{\\\“someKey\\\”:\\\“someValue\\\”}
将生成
{“someKey”:“someValue”}
作为FirebaseRemoteConfig的getString()
方法的输出。尝试通过说“而不是”来转义您的引用。@DougStevenson尝试了它,但仍然没有改变输出:(我建议您提交一份错误报告,以增加问题的分量。默认远程配置中的引号是一个已知问题,我们正在进行修复。服务器参数中的引号与预期一样工作。问题仅限于默认XML中的引号。官方答复为+1,但我认为由于这一点而降级是不值得的。幸运的是,我能够重新表述字符串值并删除所有引号。@gswierczynski我同意你的看法。或者你可以使用一些编码,如Base64。此外,问题只存在于配置的本地副本中,从远程接收的数据不受影响。对于任何查看上述答案的人,第二个取消引号的建议是错误的而且不起作用。