Repository navigation
Conversation
When DeviceKey fetch fails, getSpatulaHeader already built a fallback SpatulaHeaderProto (packageInfo + androidId) but then returned null via an unfinished TODO. AuthProxy/AppCert callers therefore never received a Spatula header on that path. Return the encoded fallback instead, extract a small helper for clarity, and add JVM unit tests for the fallback wire shape. Related to microg#2994 (honest incremental AppCert gap; not full RCS).
) Replace DummyService API_DISABLED stub with a real play-services-constellation implementation: AIDL API surface, ConstellationApiService binder, gRPC/Wire client, TS.43/MO/MT SMS verifiers, IID token signing, and settings-backed PNV state. Adapted from high-signal open work toward microg#2994 (notably @opstic microg#3359 and hardening consolidated in microg#3808/microg#3784). Not a claim of end-to-end RCS on device.
Implement play-services-asterism with AIDL surface and AsterismApiService for get/setAsterismConsent and getIsPnvrConstellationDevice, including fail-closed RCS consent semantics and Samsung composite-token helpers. Adapted from @opstic microg#3360 with hardening from microg#3808/microg#3784. Depends on the Constellation module for shared RPC/client pieces.
Include the new modules in Gradle, depend on them from play-services-core, remove constellation/asterism actions from DummyService so the real services bind, add Constellation settings contract/provider keys for PNV prefs, and implement InstanceID.requestToken so getIidToken can register with GCM.
…icrog#2994) Add settings navigation to Constellation PNV preferences and request the READ_PHONE_NUMBERS/READ_SMS/SEND_SMS permissions Messages needs for RCS provisioning flows in SelfCheck.
…2994) Keep all Messages Bugle MLS/penpal flags under a single map entry (avoid Kotlin mapOf last-write-wins), add IMS library UPI-without-ACS flag, and add a JVM regression test for the Messages configuration shape.
…2994) Align VM cache dir with stock GMS (dg_cache), uppercase checksum cache keys for /proc/self/maps parity, report Google account presence when permitted, relax InitReply nullability to match binder parcels, and add JVM unit tests. These gaps commonly block Tachyon/Messages DroidGuard flows used by RCS.
Fix misplaced testImplementation that broke Gradle evaluation after the dg_cache unit-test wiring commit.
Port the alternate com.google.android.gms.auth.APP_CERT intent filter from @paulcakeface microg#3815 so Messages/clients that bind that action can reach AppCert. Constellation SpatulaHeaderProvider tries the classic be.appcert action then APP_CERT. Add AppCertManager Spatula fallback unit coverage aligned with microg#3808.
Port @paulcakeface microg#3818 (gcm_ver header/form = VERSION_CODE) and microg#3819 (explicit delete(true) unregister helper) with regression tests. Improves registration parity for Messages/IID paths used during RCS setup.
Port @paulcakeface microg#3817: advertise get_storage_info_api and return status 29514 on getStorageInfo, matching Messages' supported fallback. Preserves existing Messages MLS/penpal + IMS UPI configuration flags.
Document implemented RCS stack, gap vs microg#3360/microg#3808, build/test commands, logcat filters, and evidence Ayush must capture for BountyHub. Honest: still needs on-device E2E; no PR ready from this commit.
Member
|
Closing here, as you even included your LLMs |
woahwhattheheck
added a commit
to woahwhattheheck/GmsCore
that referenced
this pull request
Oct 4, 2026
Complete the focused fallback path identified in microG PR microg#3828 by @ayush8620.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Honest, focused incremental fix toward #2994 (RCS / Google Messages).
AppCertManager.getSpatulaHeaderalready constructed an Android-ID fallbackSpatulaHeaderProtowhen DeviceKey fetch failed, then discarded it withreturn null // TODO. AuthProxy / AppCert callers therefore always receivednullon that path.This PR returns the encoded fallback instead and adds JVM unit tests for the fallback wire shape.
This does not claim full RCS. Constellation / Asterism / Tachyon / carrier ACS provisioning remain out of scope. Existing mega-PRs (#3808, #3644, #3784, …) already cover large RCS surfaces; this isolates one incomplete AppCert path still present on current
master.Changes
play-services-core/.../AppCertManager.ktbuildFallbackSpatulaHeaderProto(...)play-services-core-protoSpatulaHeaderFallbackTest(round-trip + non-empty encode)compileTestJavaJVM target with Kotlin 1.8junittest dependencyWhy this gap
Google Messages RCS provisioning uses Spatula / AppCert in parts of the ACS / Jibe path. Returning
nullwhenever DeviceKey is unavailable is strictly worse than returning the Android-ID fallback the code already intended to build.Related focused AppCert work already open (not duplicated here):
APP_CERTactionTest plan
./gradlew :play-services-core-proto:testSpatulaHeaderFallbackTest— 2/2 passed (JVM, no device)device_key), call AuthProxygetSpatulaHeader/ AppCert service, confirm non-null Base64 Spatula is returnedOut of scope / still blocked for full RCS
DummyService→API_DISABLEDon master)dg_cache, uppercase VM keys, InitReply partial parcel, named classloader)Refs: #2994