FirebaseRemoteConfig Error "No value of type 'String' exists for parameter key"

AndroidFirebaseFirebase Remote-Config

Android Problem Overview


I am using Firebase Core and some other Features, but not Remote Config. Multiple times a second the following Output is on Logcat.

Where can I disable the Remote Config functionality or even set those non-existing values?

Dependencies:

// Project
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.google.gms:google-services:4.2.0'
classpath 'com.google.firebase:firebase-plugins:1.2.0'

classpath 'io.fabric.tools:gradle:1.26.1'

// Module
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:support-vector-drawable:28.0.0'
implementation 'com.android.support:preference-v7:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'org.jsoup:jsoup:1.11.3'
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.android.support:cardview-v7:28.0.0'

implementation 'com.google.firebase:firebase-core:16.0.8'
implementation 'com.google.firebase:firebase-messaging:17.5.0'
implementation 'com.google.firebase:firebase-perf:16.2.4'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.jsibbold:zoomage:1.2.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.squareup.picasso:picasso:2.71828'

implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
W/FirebaseRemoteConfig: No value of type 'String' exists for parameter key 'sessions_max_length_minutes'.
W/FirebaseRemoteConfig: No value of type 'String' exists for parameter key 'sessions_max_length_minutes'.
W/FirebaseRemoteConfig: No value of type 'String' exists for parameter key 'sessions_feature_enabled'.
W/FirebaseRemoteConfig: No value of type 'String' exists for parameter key 'sessions_max_length_minutes'.
W/FirebaseRemoteConfig: No value of type 'String' exists for parameter key 'fpr_vc_trace_sampling_rate'.
W/FirebaseRemoteConfig: No value of type 'String' exists for parameter key 'sessions_feature_enabled'.
W/FirebaseRemoteConfig: No value of type 'String' exists for parameter key 'fpr_vc_trace_sampling_rate'.

It is not causing any problems I think, just annoying that it spams the Console.

Android Solutions


Solution 1 - Android

Firebase answer to my bug report:

It seems that you're getting some warning about Remote Config. We managed to reproduce on our end, and our engineers have confirmed that this is working as intended. This happens because the Performance Monitoring SDK was added on your app. This is because Performance Monitoring uses Firebase Remote Config internally. However, our engineers have confirmed that they will try to reduce these warnings in the future. For now, you can ignore these as it's only a warning, and should not affect the app's performance.

Solution 2 - Android

It comes from last versions of firebase-perf (for example, 16.2.5), because it has internal firebase-remote-config dependency. I have the same issue, but I don't know how to properly fix this log spam (except "Fold lines like this" option in logcat). I hope Firebase team will fix it soon.

Solution 3 - Android

Solution

Firebase Performance released version 19.0.8 last week to address log spam issue. (see Release Note https://firebase.google.com/support/release-notes/android#2020-07-17) You can update your dependency com.google.firebase:firebase-perf to be the same or higher version to validate the fix.


Explaination

To explain more about the reason of this issue: Firebase Performance utilizes Firebase Remote Config to sample down number of events being sent to Firebase, so it will call Firebase Remote Config API getValue(String key) every time it needs the sampling configuration value.

However, Firebase Remote Config fetch happens every 12 hours. It is possible that configuration value doesn't exist by the time of development. In this case, Firebase Performance SDK will use default value.

When the configuration value doesn't exist, Firebase Remote Config will generate this log for warning, which is the source of log spam for Firebase Performance users. (See Source Code)

We have reduced Firebase Performance's call frequency to Firebase Remote Config to avoid triggering this log.

Solution 4 - Android

If you use Firebase Console, setting both values in the Remote Config tab stops the warnings.

I've used: (as string values)

  • Parameter key: sessions_max_length_minutes | Value: "15"
  • Parameter key: sessions_feature_enabled | Value: "true"

Not sure if there are any side effects, but (hopefully) it's an internal testing thing and doesn't change anything.

Solution 5 - Android

Firebase Performance Monitoring uses Firebase Remote Config internally. You can't change the output, but you can send feedback to the team using the link that I gave in the comment above.

Solution 6 - Android

> The Firebase Android library firebase-core is no longer needed. This > SDK included the Firebase SDK for Google Analytics.

Remove firebase-core in your build.gradle

Solution 7 - Android

This might be related to, or a result of:

W/zzd: Application name is not set. Call Builder#setApplicationName

disabling perf-plugin & firebase-perf removes the annoying log entries:

// classpath "com.google.firebase:perf-plugin:1.2.1"
// apply plugin: "com.google.firebase.firebase-perf"
// implementation "com.google.firebase:firebase-perf:17.0.0"

firebase-config works fine on it's own.

Solution 8 - Android

This was my observation:

If you have a specific key set up on RemoteConfig console & have not added a default key in the default xml (passed in setDefaultsAsync()).

And if, for some rare case,
either the there was No Connectivity or Firebase RemoteConfig failed to fetch the values & if that specific key was used to get a default value,
you might get that message in the Logcat.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPascal SymaView Question on Stackoverflow
Solution 1 - AndroidHrkView Answer on Stackoverflow
Solution 2 - AndroidRuslan BerozovView Answer on Stackoverflow
Solution 3 - AndroidJames LiuView Answer on Stackoverflow
Solution 4 - AndroidManuel RegoView Answer on Stackoverflow
Solution 5 - AndroidDoug StevensonView Answer on Stackoverflow
Solution 6 - AndroidCenk YAGMURView Answer on Stackoverflow
Solution 7 - AndroidMartin ZeitlerView Answer on Stackoverflow
Solution 8 - AndroidDarShanView Answer on Stackoverflow