首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android: Firebase remoteConfig getString()方法正在从default.xml中的字符串中删除引号

Android: Firebase remoteConfig getString()方法正在从default.xml中的字符串中删除引号
EN

Stack Overflow用户
提问于 2017-12-13 19:24:08
回答 4查看 2.6K关注 0票数 15

我有以下远程config_default.xml文件

代码语言:javascript
复制
<?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远程配置getString()方法访问它时,我总是得到没有引号的字符串

代码语言:javascript
复制
"[{title:TitleA,path:pathA,image_url: Some URL A},{title:TitleB,path:pathB,image_url: Some URL B}]"§

如下图所示

我在Firebase远程配置控制台上放置了相同的字符串,一旦应用程序从那里获取它,它就会像我预期的那样在字符串中放置双引号。

我反复检查了它,当我使用下面的项目gradle文件时,它似乎工作得很好

代码语言:javascript
复制
    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'
            }
        }
    }

,但是当我更新gradle以使用所有库的新版本时,引号似乎只有在那时才被忽略。我的新项目分级文件

代码语言:javascript
复制
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'
        }
    }
}

我不知道哪个图书馆会导致这种情况发生,但如果有人能指出这一点,那就太好了。

EN

回答 4

Stack Overflow用户

发布于 2018-02-23 22:45:13

你好,谢拉兹·艾哈迈德·基尔吉,首先,我为英语道歉,我不知道怎么写英语很好。

这个问题会出现,因为在Map中转换xml时,firebase有一个bug,为了解决这个问题,您可以使用映射而不是xml。

样本:

firebaseConfig.setDefaults(Map<String, Object>);

此更改将解决您的双引号问题。

票数 2
EN

Stack Overflow用户

发布于 2018-01-03 06:30:35

我将这个问题发送给了firebase帮助小组,并得到了以下响应:

这实际上是一个已知的问题,我们的工程师已经在努力解决这个问题。我不能分享任何细节或时间表时,修复是可用的,但请检查我们的发行说明,为未来的更新。

看来,Gradle tools 3.0.1版存在问题。临时的解决方案将是使用Gradle工具版本2.3.3

在项目级别的build.gradle文件中:

classpath 'com.android.tools.build:gradle:3.0.1'替换为

classpath 'com.android.tools.build:gradle:2.3.3'

释放空间google()

代码语言:javascript
复制
maven {
        url 'https://maven.google.com'
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-22 04:30:25

这个问题有多种解决方案。

1.使用firebaseConfig.setDefaults(地图);用于设置默认配置。

2.在.xml文件中的字符串中,在双引号(“)之前使用反斜杠()。

3.将classpath 'com.android.tools.build:gradle:3.0.1‘替换为

代码语言:javascript
复制
*classpath 'com.android.tools.build:gradle:2.3.3'* 

and Relpace google() with
maven { url 'https://maven.google.com' }

4.在gradle.properties中添加android.enableAapt2 = false

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47800718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档