- Notifications
You must be signed in to change notification settings - Fork 642
Open
Description
- Android Studio version: Build #IU-252.23892.409, built on August 1, 2025
- Firebase Component: Performance
- Component version: Firebase BOM
33.16.0
[REQUIRED] Step 3: Describe the problem
AppStartTrace
produces strict mode DiskReadViolation
through RemoteConfigComponent
.
Steps to reproduce:
We observe the following error in our app:
13:27:55.677 D StrictMode policy violation; ~duration=27 ms: android.os.strictmode.DiskReadViolation at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1666) at android.app.SharedPreferencesImpl.awaitLoadedLocked(SharedPreferencesImpl.java:275) at android.app.SharedPreferencesImpl.getLong(SharedPreferencesImpl.java:328) at com.google.firebase.remoteconfig.internal.ConfigSharedPrefsClient.getFetchTimeoutInSeconds(ConfigSharedPrefsClient.java:110) at com.google.firebase.remoteconfig.RemoteConfigComponent.getFrcBackendApiClient(RemoteConfigComponent.java:264) at com.google.firebase.remoteconfig.RemoteConfigComponent.getFetchHandler(RemoteConfigComponent.java:280) at com.google.firebase.remoteconfig.RemoteConfigComponent.get(RemoteConfigComponent.java:190) at com.google.firebase.perf.config.RemoteConfigManager.isFirebaseRemoteConfigAvailable(RemoteConfigManager.java:401) at com.google.firebase.perf.config.RemoteConfigManager.triggerRemoteConfigFetchIfNecessary(RemoteConfigManager.java:337) at com.google.firebase.perf.config.RemoteConfigManager.getRemoteConfigValue(RemoteConfigManager.java:301) at com.google.firebase.perf.config.RemoteConfigManager.getBoolean(RemoteConfigManager.java:213) at com.google.firebase.perf.config.ConfigResolver.getRemoteConfigBoolean(ConfigResolver.java:880) at com.google.firebase.perf.config.ConfigResolver.getIsExperimentTTIDEnabled(ConfigResolver.java:839) at com.google.firebase.perf.metrics.AppStartTrace.onActivityResumed(AppStartTrace.java:355) at android.app.Application.dispatchActivityResumed(Application.java:431) at android.app.Activity.dispatchActivityResumed(Activity.java:1483) at android.app.Activity.onResume(Activity.java:2065) at androidx.fragment.app.FragmentActivity.onResume(FragmentActivity.java:309) at com.example.MainActivity.onResume(GrokActivity.kt:220) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1603) at android.app.Activity.performResume(Activity.java:8743) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4952) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4995) at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:57) at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:180) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:98) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:205) at android.os.Looper.loop(Looper.java:294) at android.app.ActivityThread.main(ActivityThread.java:8177) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Relevant Code:
In your Application class add the following code:
import android.app.Application import android.os.StrictMode class MyApp : Application() { override fun onCreate() { StrictMode.setThreadPolicy( StrictMode.ThreadPolicy.Builder() .detectAll() .penaltyLog() .penaltyDeath() .build(), ) StrictMode.setVmPolicy( StrictMode.VmPolicy.Builder() .detectAll() .penaltyLog() .penaltyDeath() .build() ) super.onCreate() } }