From 0246254c1e577b5563d47bd76cd503be8c1ca8a1 Mon Sep 17 00:00:00 2001 From: orozcosilverio Date: Tue, 7 Oct 2025 20:03:42 +0000 Subject: [PATCH 1/2] As reported in #7340, RemoteConfig interactions are removed from AppStartTrace (RemoteConfig is no longer supported, thus is safe to delete). --- .../firebase/perf/config/ConfigResolver.java | 29 +++++-------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/firebase-perf/src/main/java/com/google/firebase/perf/config/ConfigResolver.java b/firebase-perf/src/main/java/com/google/firebase/perf/config/ConfigResolver.java index 1ee9d395e03..5ac3ecfc282 100644 --- a/firebase-perf/src/main/java/com/google/firebase/perf/config/ConfigResolver.java +++ b/firebase-perf/src/main/java/com/google/firebase/perf/config/ConfigResolver.java @@ -820,35 +820,22 @@ public double getFragmentSamplingRate() { return config.getDefault(); } - /** Returns if _experiment_app_start_ttid should be captured. */ + /** + * Returns if _experiment_app_start_ttid should be captured. This experiment is disabled. + * Therefore, interactions with Remote Config and the cached layer are no longer necessary, + * preventing unnecessary StrictMode DiskReadViolation penalties. + * {@see https://github.com/firebase/firebase-android-sdk/issues/7340} + */ public boolean getIsExperimentTTIDEnabled() { - // Order of precedence is: - // 1. If the value exists in Android Manifest, return this value. - // 2. If the value exists through Firebase Remote Config, cache and return this value. - // 3. If the value exists in device cache, return this value. - // 4. Otherwise, return default value. ExperimentTTID config = ExperimentTTID.getInstance(); - // 1. Reads value in Android Manifest (it is set by developers during build time). + // Reads value in Android Manifest (it is set by developers during build time). Optional metadataValue = getMetadataBoolean(config); if (metadataValue.isAvailable()) { return metadataValue.get(); } - // 2. Reads value from Firebase Remote Config, saves this value in cache layer if valid. - Optional rcValue = getRemoteConfigBoolean(config); - if (rcValue.isAvailable()) { - deviceCacheManager.setValue(config.getDeviceCacheFlag(), rcValue.get()); - return rcValue.get(); - } - - // 3. Reads value from cache layer. - Optional deviceCacheValue = getDeviceCacheBoolean(config); - if (deviceCacheValue.isAvailable()) { - return deviceCacheValue.get(); - } - - // 4. Returns default value if there is no valid value from above approaches. + // Returns default value if there is no valid value from above approaches. return config.getDefault(); } From b87c20f70eff57df9a148d225a06877b848de746 Mon Sep 17 00:00:00 2001 From: orozcosilverio Date: Fri, 17 Oct 2025 18:19:43 +0000 Subject: [PATCH 2/2] Updating CHANGELOG.md --- firebase-perf/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/firebase-perf/CHANGELOG.md b/firebase-perf/CHANGELOG.md index 71fb3dce42d..3f558e5f20a 100644 --- a/firebase-perf/CHANGELOG.md +++ b/firebase-perf/CHANGELOG.md @@ -4,6 +4,7 @@ on OkHTTP version 3.x the change is both binary- and Java source-compatible, with a few small exceptions. See https://square.github.io/okhttp/changelogs/upgrading_to_okhttp_4/ for more details. +- [fixed] Fixed StrictMode DiskReadViolation prompted by AppStartTrace setup. [#7340] # 22.0.2