Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: Firebase remoteConfig getString() method is removing quotes from string inside default.xml

i have the following remote config_default.xml file

<?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>

Now when i try to access it using Firebase remote config getString() method, i always get the string without quotes

"[{title:TitleA,path:pathA,image_url: Some URL A},{title:TitleB,path:pathB,image_url: Some URL B}]"§

as seen in the image below

enter image description here

I put the same String on Firebase remote config console and once the app fetches it from there it places the double quotes in the string like i expect it.

I double checked this and it seems to be working fine when i use the following project gradle file

    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'
            }
        }
    }

But when i update the gradle to use new versions for all libraries The quotes seemed to be ignored only then. My new project gradle file

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'
        }
    }
}

I don't know which of the library is causing this to happen but it would be great if someone could point it out.

like image 287
Sheraz Ahmad Khilji Avatar asked Dec 13 '17 19:12

Sheraz Ahmad Khilji


2 Answers

Hi Sheraz Ahmad Khilji first of all, I apologize for the English, I don't know how to write english very well.

This problems occours because firebase has a bug when converting your xml in a Map, to contorn this problem, you can use a MAP instead of a xml.

sample:

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

This change will solve your problem with double quotes.

like image 50
Ruy Mesquita Avatar answered Nov 09 '22 00:11

Ruy Mesquita


I sent this issue to the firebase help team and got the following response:

This is actually a known issue on our end and our engineers are already working to fix the issue. I can't share any details or timeline when the fix be available, but please check our release notes for future updates.

Looks like there is a problem with Gradle tools version 3.0.1. The temporary workaround would be to use Gradle tools version 2.3.3.

In the project level build.gradle file:

Replace classpath 'com.android.tools.build:gradle:3.0.1' with

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

and

Relpace google() with

maven {
        url 'https://maven.google.com'
}
like image 44
Nabin Bhandari Avatar answered Nov 08 '22 22:11

Nabin Bhandari