[READ] Step 1: Are you in the right place?
Yes, this is a runtime crash whose stack trace originates entirely inside play-services-measurement-base (this repo). No frames from our application code appear in the trace, so we cannot work around it from app code.
[REQUIRED] Step 2: Describe your environment
- Android Studio version: Android Studio Otter 3 Feature Drop | 2025.2.3
- Firebase Component: Analytics (play-services-measurement-base)
- Component version: 23.2.0 (Firebase BoM 34.11.0; also reproduces on 34.12.0 which keeps analytics at 23.2.0)
Additional: minSdk 26, targetSdk 36, Gradle 9.1.0, AGP 9.0.1, Kotlin 2.3.20.
[REQUIRED] Step 3: Describe the problem
A java.lang.SecurityException: GoogleCertificatesRslt: not allowed is thrown on a Google Play Services internal HandlerThread during zack.registerListener after zabq.onConnected.
Crashes are exclusive to app version 1.5.0 (versionCode 17 + 18) — the first build to ship BoM 34.11.0. The prior version 1.4.x (BoM 34.8.0, analytics 23.0.0, identical Analytics code paths) shows zero crashes with this signature. The SHA-256 reported in the error matches our Play App Signing certificate, so these are not repackaged APKs; affected devices are stock retail flagships running Android 14/15/16: Samsung Galaxy S23 Ultra, S24 Ultra, S24+, Xiaomi Redmi 12, Tecno Camon 20 Pro. Affected GMS version on those devices: 261631035.true (≈ 26.16.31).
BoM 34.12.0 does not bump firebase-analytics (still 23.2.0) and the signature continues unchanged on 34.12.0.
Steps to reproduce:
Not reproduced on internal QA devices — surfaces only in the field via Crashlytics. The trigger appears to be the GMS measurement client connecting and registering its listener for the first time during a session, not a specific logEvent callsite.
Observed conditions, all required together:
- App built with Firebase BoM 34.11.0 or 34.12.0 (analytics / measurement-base 23.2.0).
- Analytics initialized via
FirebaseAnalytics.getInstance(application) + setAnalyticsCollectionEnabled(true).
- Stock retail device on Android 14/15/16 (e.g. Galaxy S23/S24 Ultra, S24+, Redmi 12, Camon 20 Pro).
- Device GMS version
261631035.true (≈ 26.16.31).
Crash signature from Crashlytics (package and SHA-256 redacted per org policy; can share privately if needed):
Fatal Exception: java.lang.SecurityException
GoogleCertificatesRslt: not allowed: pkg=<our.package>, sha256=[<redacted>], atk=false, ver=261631035.true (go/gsrlt)
at android.os.Parcel.createExceptionOrNull(Parcel.java:3354)
at android.os.Parcel.createException(Parcel.java:3338)
at android.os.Parcel.readException(Parcel.java:3321)
at android.os.Parcel.readException(Parcel.java:3263)
at com.google.android.gms.internal.measurement.zzbl.zzc(com.google.android.gms:play-services-measurement-base@@23.2.0:3)
at com.google.android.gms.internal.measurement.zzkt.zzj(zzkt.java:4)
at com.google.android.gms.internal.measurement.zzkg.accept(zzkg.java:2)
at com.google.android.gms.common.api.internal.zack.registerListener(zack.java:1)
at com.google.android.gms.common.api.internal.zabq.zaH(com.google.android.gms:play-services-base@@18.4.0:9)
at com.google.android.gms.common.api.internal.zabq.onConnected(com.google.android.gms:play-services-base@@18.4.0:2)
at com.google.android.gms.common.internal.zah.onConnected(zah.java:1)
at com.google.android.gms.common.internal.zzf.zza(com.google.android.gms:play-services-basement@@18.10.0:10)
at com.google.android.gms.common.internal.zza.zzc(zza.java:2)
at com.google.android.gms.common.internal.zzc.zzd(zzc.java:3)
at com.google.android.gms.common.internal.zzb.handleMessage(com.google.android.gms:play-services-basement@@18.10.0:33)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loopOnce(Looper.java:273)
at android.os.Looper.loop(Looper.java:363)
at android.os.HandlerThread.run(HandlerThread.java:85)
We are planning to downgrade to BoM 34.10.0 to confirm the regression boundary, but would prefer a forward fix.
Question: is this a known regression in play-services-measurement-base 23.2.0's GMS connection / listener-registration path, or in the GMS certificate-verification side it now invokes? If it's a GMS-side bug exposed by 23.2.0, what's the recommended path — pin to BoM 34.10.0 / analytics 23.0.0 until a fix ships, or wait for a specific GMS rollout?
Relevant Code:
The only Analytics setup in our DI graph:
@Provides
@Singleton
fun provideFirebaseAnalytics(application: Application): FirebaseAnalytics {
val analytics = FirebaseAnalytics.getInstance(application)
analytics.setAnalyticsCollectionEnabled(true)
return analytics
}
Standard firebaseAnalytics.logEvent(name, bundle) is used elsewhere. No Analytics-related manifest meta-data is set.
[READ] Step 1: Are you in the right place?
Yes, this is a runtime crash whose stack trace originates entirely inside
play-services-measurement-base(this repo). No frames from our application code appear in the trace, so we cannot work around it from app code.[REQUIRED] Step 2: Describe your environment
Additional: minSdk 26, targetSdk 36, Gradle 9.1.0, AGP 9.0.1, Kotlin 2.3.20.
[REQUIRED] Step 3: Describe the problem
A
java.lang.SecurityException: GoogleCertificatesRslt: not allowedis thrown on a Google Play Services internalHandlerThreadduringzack.registerListenerafterzabq.onConnected.Crashes are exclusive to app version 1.5.0 (versionCode 17 + 18) — the first build to ship BoM 34.11.0. The prior version 1.4.x (BoM 34.8.0, analytics 23.0.0, identical Analytics code paths) shows zero crashes with this signature. The SHA-256 reported in the error matches our Play App Signing certificate, so these are not repackaged APKs; affected devices are stock retail flagships running Android 14/15/16: Samsung Galaxy S23 Ultra, S24 Ultra, S24+, Xiaomi Redmi 12, Tecno Camon 20 Pro. Affected GMS version on those devices:
261631035.true(≈ 26.16.31).BoM 34.12.0 does not bump
firebase-analytics(still 23.2.0) and the signature continues unchanged on 34.12.0.Steps to reproduce:
Not reproduced on internal QA devices — surfaces only in the field via Crashlytics. The trigger appears to be the GMS measurement client connecting and registering its listener for the first time during a session, not a specific
logEventcallsite.Observed conditions, all required together:
FirebaseAnalytics.getInstance(application)+setAnalyticsCollectionEnabled(true).261631035.true(≈ 26.16.31).Crash signature from Crashlytics (package and SHA-256 redacted per org policy; can share privately if needed):
We are planning to downgrade to BoM 34.10.0 to confirm the regression boundary, but would prefer a forward fix.
Question: is this a known regression in
play-services-measurement-base 23.2.0's GMS connection / listener-registration path, or in the GMS certificate-verification side it now invokes? If it's a GMS-side bug exposed by 23.2.0, what's the recommended path — pin to BoM 34.10.0 / analytics 23.0.0 until a fix ships, or wait for a specific GMS rollout?Relevant Code:
The only Analytics setup in our DI graph:
Standard
firebaseAnalytics.logEvent(name, bundle)is used elsewhere. No Analytics-related manifest meta-data is set.