Skip to content
CAI
Software that uses CAICheck a score

microg/GmsCore

30.1

Weak · 25 September 2026

186.3k

lines of production code

Java

with Kotlin

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a comprehensive, open-source implementation of Google Play Services, designed to provide a compatible API surface for Android applications on devices without official Google services. It implements a wide array of core platform features, including authentication, location services, advertising identifiers, and various ML Kit and Cast frameworks, often through stubbed or functional backend integrations. The codebase establishes the necessary inter-process communication contracts and data models to allow standard Android apps to function correctly within this alternative environment.

How it got here

2014–2020 — Initial scaffolding and API stubbing

41 changes.

The project established its foundational Gradle build infrastructure and removed legacy mapping code to prepare for a modern architecture. This period focused on implementing core base services, such as authentication, location, and tasks, while adding extensive API stubs and AIDL interfaces for a wide range of Google Play Services features including Cast, Wear, Wallet, and Vision.

2021–2023 — comprehensive API implementation and service expansion

74 changes.

This period focused on implementing a wide array of Google Play Services APIs, including authentication, location, maps, and advertising, within the microG framework. Significant work involved establishing core infrastructure for inter-process communication via AIDL, introducing new service modules like DroidGuard and FIDO2, and adding stubbed or functional backends for features such as Cast, SafetyNet, and Vision. The effort also included foundational updates to device profiling, settings management, and UI components to support these expanding service capabilities.

2024–2026 — API surface expansion and stubbing

31 changes.

This period focused on defining the structural API contracts for a wide array of Google Play Services features, including authentication, location, fitness, and ads. The work primarily involved adding AIDL interfaces, data models, and placeholder implementations to establish the service surface without yet providing full functional logic.

Features

Add AIDL interfaces for Work Account service

This change introduces the Android Interface Definition Language (AIDL) contracts for the Work Account service, specifically defining the IWorkAccountService and IWorkAccountCallback interfaces. These interfaces enable applications to manage work profile accounts by enabling/disabling the work authenticator, and by adding or removing work accounts with callback notifications for success or failure.

play-services-auth-workaccount · high confidence

Add Advertising ID service implementation

The Advertising ID service is now implemented in the core module, providing the underlying logic for generating, retrieving, and managing advertising identifiers. This includes support for per-app and global ad-tracking limits, debug logging, and ID reset functionality, all secured by the necessary Google package permissions.

play-services-ads-identifier/core/src/main/kotlin · high confidence

Add FIDO2 hybrid (cross-device) authentication support

The FIDO2 core module now supports hybrid cross-device authentication, allowing users to authenticate on one device using a passkey stored on another. This change introduces the necessary Bluetooth Low Energy (BLE) advertising and scanning components, a WebSocket-based tunnel transport, and the Noise protocol handshake logic required to establish a secure link between devices. It also registers the new \HybridAuthenticateActivity\ in the manifest to handle the incoming hybrid authentication flow and exposes the corresponding FIDO2 API features.

play-services-fido/core · high confidence

The firebase-dynamic-links module now includes the core implementation for Firebase Dynamic Links, enabling the resolution of dynamic links and the creation of short dynamic links. This change introduces the necessary AIDL interfaces (IDynamicLinksService, IDynamicLinksCallbacks) and data models (DynamicLinkData, ShortDynamicLinkImpl, WarningImpl) to support these operations, along with the public ShortDynamicLink interface for accessing short links, preview links, and warnings.

firebase-dynamic-links · high confidence

Add Google Sign-In account and options data models

The library introduces the core data structures for Google Sign-In, including \GoogleSignInAccount\ to hold user profile details (ID, email, scopes) and \GoogleSignInOptions\ to configure sign-in requests (scopes, ID tokens, server client IDs). It also adds supporting classes for API extensions (\GoogleSignInOptionsExtension\), internal parcelable wrappers, and a \Storage\ component that persists the default signed-in account and options to local SharedPreferences for session management.

play-services-base/src/main/java/com · high confidence

Add HMS-based Maps implementation

This change introduces a new implementation of the Google Maps API using Huawei Mobile Services (HMS) as the backend. It adds the necessary AndroidManifest permissions, a Dynamite module descriptor, and core implementation classes (CreatorImpl, GoogleMapImpl, MapFragmentImpl, MapViewImpl) that bridge Google Maps SDK calls to the Huawei Maps SDK. This allows applications relying on Google Maps to function on devices without Google Play Services by utilizing HMS Maps instead.

play-services-maps/core/hms · high confidence

Add HomeInteractionService AIDL interfaces and data classes

The Home module now includes the necessary AIDL definitions and Java data classes to support the HomeInteractionService. This adds the \OnRequestParams\ parcelable for carrying request data, status callbacks, and completion callbacks, along with the \ICompletionCallback\ and \IInteractionService\ interfaces required for inter-process communication within the Home interaction subsystem.

play-services-api/src/main/aidl/com/google/android/gms/home, play-services-api/src/main/java/com/google/android/gms/home · high confidence

Add Huawei-specific fake signature support

The fake-signature module now includes a dedicated Huawei flavor that implements a differentiated signature capability. This adds a background service and content provider to manage a local database of apps that should use fake versus real signatures, ensuring the service starts reliably on boot and after package replacements. The implementation restricts access to system-level UIDs and provides a specific AIDL interface for querying signature overrides, improving compatibility with Huawei devices.

fake-signature · high confidence

Add IdentityCredentialApiService dummy and supporting data structures

This change introduces the \IdentityCredentialApiService\ stub along with the necessary AIDL interfaces (\IIdentityCredentialService\, \IIdentityCredentialCallbacks\) and request/response parcelables (such as \ClearCreationOptionsRequest\, \CreateCredentialRequest\, and \GetCredentialRequest\) required to support the Identity Credentials API. It also includes the \CallingAppInfoParcelable\ class to provide information about the calling application, enabling the underlying service infrastructure to handle credential operations.

play-services-identity-credentials · high confidence

Add OSS Licenses library and UI components

This change introduces the play-services-oss-licenses module, providing the core service implementation (OssLicensesService) and client-side UI activities (OssLicensesMenuActivity, OssLicensesActivity) to display third-party open-source license information. It includes the necessary AIDL interfaces, Java/Kotlin implementation classes for license retrieval and sorting, and localized string resources for the license display interface.

play-services-oss-licenses · high confidence

Add SMS Retriever API implementation

This change introduces the core logic for the SMS Retriever API, enabling apps to automatically retrieve one-time verification codes sent via SMS without requiring the user to manually copy and paste them. The implementation includes \SmsRetrieverCore\ to manage background listeners and timeouts, \AskPermissionActivity\ to handle the necessary runtime permissions (RECEIVE\_SMS, READ\_CONTACTS), and \UserConsentPromptActivity\ to present a system-level dialog for user consent when required by the API. It also adds support for handling SMS messages without a sender number and correctly processes long SMS messages, ensuring compatibility with the Google Play Services API contract.

play-services-auth-api-phone/core/src/main/kotlin · high confidence

Add SMS Retriever and SMS Code Autofill APIs

This update introduces the SMS Retriever API, allowing apps to retrieve SMS verification codes without requiring the READ\_SMS or RECEIVE\_SMS permissions, and adds the SMS Code Autofill and Browser APIs, enabling designated autofill services and default browser apps to automatically retrieve and fill SMS-based one-time passcodes.

play-services-auth-api-phone · high confidence

Add VTM-based offline map rendering backend

The maps module now includes a new VTM (Vector Tile Map) implementation that provides offline map rendering capabilities. This change introduces a complete rendering stack including a custom microG map theme, transit and location symbols, and a shared tile provider service. It also adds the necessary Java components to bridge the VTM engine with the Google Maps API, such as context wrappers, map view implementations, and projection helpers, allowing the application to display maps without relying on online tile services.

play-services-maps · high confidence

Add barcode and face detection capabilities to the Vision module

The core Vision module now includes implementations for barcode scanning and face detection. Barcode scanning is supported via the MLKit Vision Barcode API and a local ZXing-based decoder, enabling the detection of various barcode formats and the parsing of structured data like contacts and URLs. Face detection is implemented using OpenCV and a bundled ONNX model (yunet), providing face bounding boxes, landmarks, and attributes such as smiling and eye-open probability. The module also registers the necessary Dynamite and MLKit module descriptors and creators to expose these capabilities to the system.

play-services-vision/core · high confidence

Add base AIDL interfaces and parcelable models for internal measurement service communication

The play-services-measurement-base module now includes the foundational AIDL definitions and Java model classes required for internal communication with the measurement service. This adds the IAppMeasurementDynamiteService interface, which exposes methods for initializing the service, logging events, managing user properties, handling session timeouts, tracking screen views, and managing consent. Supporting interfaces (IBundleReceiver, IDynamiteUploadBatchesCallback, IEventHandlerProxy, IStringProvider) and parcelable data structures (InitializationParams, ScionActivityInfo) are also introduced to facilitate data transfer and event handling between the app and the measurement backend.

play-services-measurement-base · high confidence

Add base data models for Google Account authentication and proxy services

This update introduces a set of new serializable data classes within the \play-services-auth-base\ module to support account change events, hub token retrieval, capability checks, and HTTP proxy requests. Specifically, it adds \AccountChangeEvent\, \AccountChangeEventsRequest\, and \AccountChangeEventsResponse\ to handle account synchronization events, alongside \GetHubTokenRequest\ and \GetHubTokenInternalResponse\ for internal token management. It also includes \ProxyRequest\ and \ProxyResponse\ for proxying HTTP calls, \TokenData\ for storing OAuth tokens, and various \folsom\-scoped classes (\ProductKey\, \SharedKey\, \SecurityDomainMember\, etc.) likely supporting newer authentication protocols or device management features.

play-services-auth-base/src/main/java · high confidence

Add core Ads service and Dynamite module initialization

The ads core module now registers an AdRequestService to handle ad requests and includes a Dynamite ModuleDescriptor that initializes the user-agent in shared preferences to prevent potential deadlocks during ad loading.

play-services-ads/core · high confidence

Add core Chimera service infrastructure for DroidGuard compatibility

This change introduces the foundational classes for the Chimera service architecture within play-services-chimera-core, specifically to support DroidGuard compatibility. It adds a new AndroidManifest, a base Service class that acts as a proxy wrapper, an IntentService implementation for background tasks, and an InstanceProvider interface. Additionally, it includes Kotlin utilities (ServiceLoader, ServiceProxy, StaticServiceLoader) that enable the dynamic loading and proxying of services, allowing the application to delegate service lifecycle events to underlying implementations.

play-services-chimera-core · high confidence

Add initial play-services-vision-common client library

This change introduces the core components of the Google Play Services Vision client library within the play-services-vision-common module. It adds the foundational classes required for camera-based detection, including CameraSource for managing camera preview and frame streaming, Detector as the base class for implementing specific detection logic (such as face or barcode detection), and Frame for encapsulating image data and metadata. The implementation also includes the necessary AIDL definitions (FrameMetadataParcel) and AndroidManifest to support these vision capabilities.

play-services-vision-common · high confidence

Add local-only Block Store API stubs

This change introduces the initial local-only implementation of the Block Store API, providing the public client interface and data models required for device-to-device data transfer. It adds the \Blockstore\ entry point and \BlockstoreClient\ interface, which expose methods for storing, retrieving, and deleting small byte blobs (up to 1024 bytes) to enable seamless sign-in on new devices. The diff includes the necessary parcelable data classes (\StoreBytesData\, \RetrieveBytesRequest\, \RetrieveBytesResponse\, \DeleteBytesRequest\) and AIDL interfaces to define the service contract, along with specific status codes for quota and feature support errors. Note that the client implementation currently throws \UnsupportedOperationException\, indicating this is a structural addition pending backend wiring.

play-services-auth-blockstore · high confidence

Add location sharing and reporting data models

The API module now includes a set of new SafeParcelable data classes to support location sharing and reporting features. These include request and response models for uploading location data (LocationUploadRequest, LocationUploadResponse, PeriodicLocationUploadRequest), controls for starting and stopping reporting (StartLocationReportingRequest, StopLocationReportingRequest), and supporting structures for sharing configuration (LocationShare, LocationCollectionReason) and status reporting (LocationReportingStatus, IneligibilityRationale, PeriodicLocationReportingIssues).

play-services-api/src/main/java/com/google/android/gms/locationsharingreporter · high confidence

Add microG Instance ID (IID) client implementation

The play-services-iid module now includes a new implementation of the Instance ID API, providing the core classes (InstanceID, InstanceIDListenerService) and supporting infrastructure (InstanceIdStore, InstanceIdRpc, MessengerCompat) required for app instance identification and GCM token management. This change introduces the necessary AndroidManifest permissions and AIDL interfaces to support IID functionality within the microG framework.

play-services-iid · high confidence

Add microG implementation for Android Advertising ID service

This change introduces the \play-services-ads-identifier\ module, providing a stub implementation of the Google Play Services Advertising ID API. The \AdvertisingIdClient\ now returns a fixed zeroed-out advertising ID and always reports that ad tracking is limited, ensuring apps requesting this identifier do not crash on microG systems while respecting user privacy preferences by default.

play-services-ads-identifier · high confidence

Add placeholder implementation for the deprecated Panorama API

This change introduces a stub implementation for the Google Panorama service, allowing applications that depend on the deprecated Panorama API to resolve the service without crashing. The core module registers a \PanoramaService\ that handles the \com.google.android.gms.panorama.service.START\ intent and returns a success status, while the actual \loadPanoramaInfo\ method logs that it is not implemented and returns null results. The public-facing \Panorama\ and \PanoramaApi\ classes are also added as deprecated stubs to maintain API compatibility.

play-services-panorama, play-services-panorama/core · high confidence

Add semantic location data models for Google Maps Timeline

This change introduces a comprehensive set of Android parcelable data structures in the \com.google.android.gms.semanticlocation\ package to support the Google Maps Timeline feature. The new classes define the schema for semantic location events, including place transitions (enter, exit, ongoing) and activity states (start, end, ongoing), along with supporting models for trips, visits, parking, paths, and debug data. These API models enable the serialization and transmission of detailed location history and activity inference data.

play-services-api/src/main/java/com/google/android/gms/semanticlocation · high confidence

Added AIDL interface and data model for logging audit records

This change introduces the \IAuditService\ AIDL interface and the \LogAuditRecordsRequest\ parcelable class within the \com.google.android.gms.audit\ package. The new interface defines a \logAuditRecords\ method that accepts a \LogAuditRecordsRequest\ and an \IStatusCallback\, enabling the transmission of audit data. The request model includes fields for write mode, component ID, account name, audit records, and security tokens (trace and audit), providing the necessary structure for clients to submit audit logs via the service.

play-services-api/src/main/aidl/com/google/android/gms/audit, play-services-api/src/main/java/com/google/android/gms/audit · high confidence

Added AIDL interfaces and device info collector for Wallet and Icing services

This change introduces new AIDL interface definitions for the Icing service (IAppIndexingService) and several Wallet-related parcelables (WalletCustomTheme, SecurePaymentsData, SecurePaymentsPayload, ApplicationParameters, BuyFlowConfig) to support inter-process communication. Additionally, it adds a Kotlin-based DeviceInfoCollector that gathers device metrics such as display info, battery level, network status, and Android ID, providing the underlying data structure for device identification and status reporting.

play-services-api/src/main/aidl/com/google/android/gms/icing, play-services-base/core/src/main/kotlin/org/microg/gms/deviceinfo, play-services-base/src/main/aidl/com/google/android/gms/wallet · high confidence

Added AIDL interfaces for Credential Manager service communication

New AIDL definitions have been added to the \play-services-api\ module to support the internal IPC mechanism for the Credential Manager service. This includes \ICredentialManagerService\ as the main service interface, along with supporting callback interfaces (\IPendingIntentCallback\, \ISettingsCallback\) and the \CredentialManagerInvocationParams\ parcelable, enabling the system to handle credential retrieval and settings updates via pending intents and direct callbacks.

play-services-api/src/main/aidl/com/google/android/gms/credential · high confidence

Added AIDL interfaces for Google Identity and Credentials services

The \play-services-auth\ module now includes the AIDL definitions required for inter-process communication with Google's Identity and Credentials services. This adds the internal service and callback interfaces (\IAuthorizationService\, \ISignInService\, \ICredentialsService\, etc.) and their associated request/result parcelables (such as \BeginSignInRequest\, \AuthorizationRequest\, and \Credential\), enabling the library to communicate with the underlying system services for sign-in, authorization, and credential management.

play-services-auth/src/main/aidl · high confidence

Added AIDL interfaces for Google Sign-In, account data, and Folsom key management

This change introduces a comprehensive set of new AIDL (Android Interface Definition Language) files in the \play-services-auth-base\ module, establishing the IPC contracts for several authentication capabilities. It defines the \IAuthManagerService\ and \IGoogleAuthService\ interfaces to handle core Sign-In operations such as token retrieval, account change events, and hub token access. Additionally, it adds the \IKeyRetrievalService\ and associated request/response parcelables (e.g., \RecoveryRequest\, \SharedKey\) to support the Folsom security domain and key management features, alongside internal proxy and callback interfaces required for these interactions.

play-services-auth-base/src/main/aidl · high confidence

Added AIDL interfaces for Wallet token and payment readiness APIs

New AIDL definitions have been added to the play-services-api module to support Wallet integration. This includes parcelable request and response types (GetClientTokenRequest, GetClientTokenResponse, IsReadyToPayRequest) and the internal service interface IOwService, which exposes methods for checking payment readiness (isReadyToPay) and retrieving client tokens (getClientToken) via the IWalletServiceCallbacks interface.

play-services-api/src/main/aidl/com/google/android/gms/wallet · high confidence

Added AIDL interfaces for location sharing reporter service

This change introduces the Android Interface Definition Language (AIDL) contracts for the \locationsharingreporter\ module, enabling the underlying infrastructure for location sharing features. The diff adds parcelable data types including \IneligibilityRationale\, \LocationReportingStatus\, \LocationShare\, \LocationUploadRequest\, \LocationUploadResponse\, \NoticeAckedUpdateRequest\, \PeriodicLocationReportingIssues\, \PeriodicLocationUploadRequest\, \StartLocationReportingRequest\, and \StopLocationReportingRequest\. It also defines the internal service interface \ILocationSharingReporterService\ which exposes methods for uploading location data, managing reporting status (start/stop/sync), handling periodic uploads, updating notice states, and retrieving reporting issues. Additionally, callback interfaces (\ILocationUploadCallbacks\, \ILocationReportingStatusCallbacks\, \ILocationReportingIssuesCallback\) are added to handle asynchronous responses from the service.

play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter · high confidence

Added AIDL stubs for Google Sign-In, Module Install, and Telemetry services

This change introduces a set of new AIDL interface and parcelable definitions within the play-services-base module, enabling inter-process communication for several Google Play services capabilities. Specifically, it adds the \GoogleSignInAccount\ and \GoogleSignInOptions\ parcelables to support the Auth/Sign-In APIs, defines the \IModuleInstallService\ and related callback/response types to allow applications to check availability, install, and release optional Play services modules, and includes \IClientTelemetryService\ along with \TelemetryData\ to support client-side telemetry logging. Additionally, it renames \IGmsCallbacks\ to \IResolveAccountCallbacks\ and clears its method signature, reflecting a structural update to account resolution callbacks.

play-services-base/src/main/aidl/com/google/android/gms/common · high confidence

Added API models for Credential Manager invocation context

New parcelable data classes (CallerInfo, CredentialManagerAccount, CredentialManagerInvocationParams) were added to the play-services-api credential package to support passing invocation context and account details for Google Password Manager access via web view.

play-services-api/src/main/java/com/google/android/gms/credential · high confidence

Added Android interface stubs for Google Drive

The play-services-drive module now includes the AIDL definitions and Java model classes required to communicate with the Google Drive service. This adds the internal IPC interface (IDriveService) and its associated request and response objects (such as CreateFileRequest, GetMetadataRequest, and DriveId), enabling applications to interact with Drive features like file management, permissions, and real-time sync.

play-services-drive · high confidence

Added App Data Search API data models

The \play-services-api\ module now includes the necessary data structures for the App Data Search feature, enabling applications to interact with search and suggestion capabilities. This change introduces new \AutoSafeParcelable\ classes to handle serialization for search operations, including \QuerySpecification\ and \SuggestSpecification\ for defining search requests, \SearchResults\ and \SuggestionResults\ for returning query and suggestion data, and \CorpusStatus\ for tracking indexing state. It also adds \PIMEUpdate\ and \PIMEUpdateResponse\ to support Personalized Input Method Editor updates, along with \RequestIndexingSpecification\ and \UsageInfo\ to manage indexing requests and usage statistics.

play-services-api/src/main/java/com/google/android/gms/appdatasearch · high confidence

Added Clearcut logging data models and AIDL interfaces

The play-services-clearcut module now includes the core data structures and service interfaces required for Google Play logging. This adds the \LogEventParcelable\ and \PlayLoggerContext\ classes to handle log event payloads and context metadata, alongside AIDL definitions for the \IClearcutLoggerService\ and \IBootCountService\. These changes establish the underlying protocol for logging events and tracking device boot counts within the microG implementation.

play-services-clearcut · high confidence

Added FACS cache IPC interfaces and data types

New AIDL definitions have been added to the FACS (Feature and Configuration Service) cache layer, introducing the internal IPC contracts for cache operations. This includes the \IFacsCacheService\ interface, which exposes methods to force cache refreshes, update and retrieve activity controls settings, and read or write device-level settings. Supporting this are the \IFacsCacheCallbacks\ interface for asynchronous result delivery and several new parcelable data types (\FacsCacheCallOptions\, \ForceSettingsCacheRefreshResult\, \GetActivityControlsSettingsResult\, \ReadDeviceLevelSettingsResult\, and \UpdateActivityControlsSettingsResult\) that define the structure of the data exchanged during these cache interactions.

play-services-api/src/main/aidl/com/google/android/gms/facs · high confidence

Added Find My Device Spot API definitions

This change introduces the AIDL interfaces and Java parcelable models for the Find My Device Spot feature, enabling device management and location reporting. The new API includes services for managing owner keys (get, set, import, sync), retrieving and changing Find My Device settings, and handling location reports and state. Users interacting with this API can now manage device ownership, configure network settings, and control location reporting states via the new \ISpotManagementService\ and \ISpotLocationReportService\ interfaces.

play-services-api/src/main/aidl/com/google/android/gms/findmydevice, play-services-api/src/main/java/com/google/android/gms/findmydevice · high confidence

Added Google Sign-In API implementation classes

This location introduces the core public API classes for the Google Sign-In feature, including GoogleSignIn, GoogleSignInClient, GoogleSignInResult, and GoogleSignInStatusCodes, along with internal parcelable types like SignInConfiguration. These classes provide the entry points for initiating sign-in flows, managing user sessions, and handling authentication results, effectively implementing the deprecated Google Sign-In API surface.

play-services-auth/src/main/java/com/google/android/gms/auth/api/signin · high confidence

Added IDL parcelable classes for Firebase Database connection

The Firebase Database API surface now includes new IDL (Interface Definition Language) parcelable classes—CompoundHashParcelable, ConnectionConfig, and RangeParcelable—located in the com.google.firebase.database.connection.idl package. These classes, which extend AutoSafeParcelable, provide the necessary data structures for serializing connection configuration and range/hash data across process boundaries, supporting the underlying communication protocol for the Firebase Database service.

play-services-api/src/main/java/com/google/firebase · high confidence

Added Language Profile service API stubs

This change introduces the AIDL interfaces and data models for the new Language Profile service in Google Play Services. It adds the \ILanguageProfileService\ interface, which exposes methods for retrieving and managing language preferences and fluency data for a specific account, along with the corresponding \ILanguageProfileCallbacks\ interface for handling asynchronous responses. The diff also includes the necessary parcelable data classes (\ClientLanguageSettings\, \LanguageFluency\, \LanguagePreference\, and their respective parameter classes) required to serialize these objects across process boundaries.

play-services-api/src/main/aidl/com/google/android/gms/languageprofile, play-services-api/src/main/java/com/google/android/gms/languageprofile · high confidence

Added ML Kit face detection module

The play-services-mlkit/face-detection module has been implemented, introducing support for detecting faces in images. This addition includes the core API classes such as Face, FaceLandmark, and FaceContour, along with configuration options in FaceDetectionOptions for enabling features like landmark detection, contour tracking, classification (smiling/eye open probability), and performance modes. The module also establishes the necessary AIDL interfaces (IFaceDetector, IFaceDetectorCreator) and parcelable data structures to facilitate communication with the underlying detection service.

face-detection, play-services-mlkit/face-detection · high confidence

Added Mapbox Maps core module with font assets and manifest

The play-services-maps/core/mapbox module has been introduced, providing the foundational resources for the Mapbox-based map implementation. This includes an AndroidManifest.xml declaring necessary permissions (location, network, storage) and overriding the Mapbox SDK library requirements, alongside a comprehensive set of Roboto Bold font binary files (PBF) to support text rendering on the map.

play-services-maps/core/mapbox · high confidence

Added ModuleInstall API stub and profile provider

The play-services-base core package now includes a new AndroidManifest.xml registering the ProfileProvider and the ModuleInstallService. The ModuleInstallService acts as a stub implementation for the Module Install API, exposing the service endpoint and handling requests with placeholder responses (logging 'Not yet implemented') for module availability checks, installation, intent retrieval, and listener management.

play-services-base/core/package · high confidence

Added Omid API interface for ad measurement

The Ads API surface now includes the IOmid AIDL interface, enabling integration with the Omid ad measurement standard. This addition exposes methods for initializing Omid, creating HTML and JavaScript ad sessions (with support for partner names, impression types, and creative types), and managing ad session lifecycles such as starting, finishing, and registering friendly obstructions.

play-services-api/src/main/aidl/com/google/android/gms/ads · high confidence

Added People API model classes for account metadata and image loading

The People API now includes new model classes to support account metadata and image loading options. Specifically, \AccountMetadata\ exposes flags indicating the presence of Google+ and other features, \AvatarReference\ provides source and location details for avatars, and \ParcelableLoadImageOptions\ allows configuration of image size, avatar options, and whether to use large pictures for certain image types. These classes are implemented using the safe-parcel mechanism for serialization.

play-services-api/src/main/java/com/google/android/gms/people · high confidence

Added Play Services basement stubs and AIDL interfaces

The play-services-basement module now includes a comprehensive set of stub implementations and AIDL interfaces for Google Play services, including ConnectionResult, GoogleCertificatesLookup, and the IGmsServiceBroker. This enables applications to interact with core Play services APIs, such as service discovery and certificate verification, even when the official Google Play services are not present on the device.

play-services-basement · high confidence

Added PoToken API definitions

The Play Services API module now includes the interface definitions for the PoToken feature. This change introduces the \PoToken\ parcelable class to hold token data, along with the \IPoTokensService\ and \ITokenCallbacks\ AIDL interfaces that define the communication protocol for requesting and receiving PoTokens.

play-services-api/src/main/aidl/com/google/android/gms/potokens, play-services-api/src/main/java/com/google/android/gms/potokens · high confidence

Added Wallet API request/response models and constants

The \play-services-api\ module now includes the \GetClientTokenRequest\ and \GetClientTokenResponse\ classes, as well as the \IsReadyToPayRequest\ and \IsReadyToPayResponse\ classes, which provide the necessary data structures for client token retrieval and payment readiness checks. Additionally, \WalletConstants\ has been added to define supported card networks (e.g., Visa, Mastercard, Amex), payment methods, and tokenization types, establishing the foundational API contracts for these wallet features.

play-services-api/src/main/java/com/google/android/gms/wallet · high confidence

Added credential request and hint request models for identity provider selection

The \com.google.android.gms.auth.api.credentials\ package now includes \CredentialRequest\ and \HintRequest\ classes, allowing applications to specify which identity providers (via \accountTypes\) are supported and to configure the credential picker dialog behavior through \CredentialPickerConfig\. \HintRequest\ additionally supports requesting ID tokens for account verification and filtering by email or phone number identifiers, enabling more flexible and secure sign-in hint flows.

play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials · high confidence

Added data models for Google Play Phenotype API

This change introduces the core data structures required for the Google Play Phenotype API within the microG Play Services implementation. New classes including Configurations, DogfoodsToken, FlagOverrides, and RegistrationInfo have been added to the API layer. These classes define the parcelable data formats (using AutoSafeParcelable) used to exchange configuration states, flag overrides, and registration details between the client and the service, laying the groundwork for the Phenotype feature.

play-services-api/src/main/java/com/google/android/gms/phenotype · high confidence

Added dummy implementations for Google Play Services Feedback API

This change introduces placeholder (dummy) classes and AIDL interfaces for the \com.google.android.gms.feedback\ package, including \ErrorReport\, \FeedbackOptions\, \FileTeleporter\, \LogOptions\, and \ThemeSettings\, along with the \IFeedbackService\ and \IFeedbackCallbacks\ interfaces. These additions provide the necessary API surface for the Google Help and Feedback service, allowing applications to reference these types even if the underlying implementation is not yet fully functional or is stubbed out.

play-services-api/src/main/aidl/com/google/android/gms/feedback, play-services-api/src/main/java/com/google/android/gms/feedback · high confidence

Added empty API stubs for identity and Plus services

The play-services-api module now includes a set of new, empty Java classes serving as API stubs for the Google Identity and Google+ services. Specifically, this adds placeholder classes for account data (AccountData), user address and country specification (UserAddress, CountrySpecification), internal session and extras handling (PlusSession, PlusCommonExtras), smart profile request/response models (CardsRequest, CardsResponse, PeopleForProfilesRequest, PeopleForProfilesResponse), and post-related models (Post, Comment, Settings). These additions establish the structural foundation for these APIs without implementing any functional logic.

play-services-api/src/main/java/com/google/android/gms/identity, play-services-api/src/main/java/com/google/android/gms/plus · high confidence

Added first-party Auth API data models for account and token management

The \play-services-api\ module now includes a set of new serializable data classes in the \com.google.android.gms.auth.firstparty\ package to support the Auth API's internal data service and delegate workflows. These additions include request and response models for account recovery (\AccountRecoveryGuidanceRequest\), account removal (\AccountRemovalRequest\), and credential confirmation (\ConfirmCredentialsRequest\, \ConfirmCredentialsWorkflowRequest\), as well as token handling structures (\TokenRequest\, \TokenResponse\). The update also introduces configuration models for access control (\FACLConfig\, \PACLConfig\) and shared entities like \AccountCredentials\, \AppDescription\, and \CaptchaSolution\, enabling the serialization of complex authentication states and permissions via SafeParcel.

play-services-api/src/main/java/com/google/android/gms/auth · high confidence

Added initial Phenotype API data model classes

This change introduces the core data structures for the new \play-services-phenotype\ module, including \Configuration\, \ExperimentTokens\, \Flag\, and \GenericDimension\. These classes define the schema for experiment configurations and token data, enabling the underlying implementation to serialize and deserialize phenotype-related information.

play-services-phenotype · high confidence

Added internal AIDL interfaces and parcelable classes for ad request services

The play-services-ads module now includes the necessary AIDL definitions and Java implementations for internal ad request communication. This adds the \IAdRequestService\ interface, which exposes methods for getting ad requests, signals, and cache keys via streaming responses, along with supporting parcelable classes (\NonagonRequestParcel\, \ExceptionParcel\) and the \INonagonStreamingResponseListener\ interface to handle success and exception callbacks. These changes establish the underlying IPC mechanism for the ads service.

play-services-ads · high confidence

Added internal AIDL interfaces for Sign-In service communication

New AIDL definitions have been added to the \play-services-base\ module to support internal Sign-In and Auth operations. This includes the \ISignInService\ interface, which exposes methods for account resolution, sign-in requests, consent recording, and session management, along with the \ISignInCallbacks\ interface for handling asynchronous responses. Supporting parcelable data structures such as \SignInRequest\, \SignInResponse\, \AuthAccountResult\, and various consent-related request/response objects have also been introduced to facilitate this inter-process communication.

play-services-base/src/main/aidl/com/google/android/gms/signin · high confidence

Added internal AIDL interfaces for usage reporting opt-in management

New internal AIDL stubs have been added to the \play-services-api\ module to support the usage reporting opt-in feature. This includes the \UsageReportingOptInOptions\ data class and a set of internal service interfaces (\IUsageReportingService\, \IUsageReportingCallbacks\, and \IUsageReportingOptInOptionsChangedListener\) that define the IPC contract for getting, setting, and listening to changes in usage reporting opt-in preferences.

play-services-api/src/main/aidl/com/google/android/gms/usagereporting, play-services-api/src/main/java/com/google/android/gms/usagereporting · high confidence

Added internal Measurement API AIDL stubs

New AIDL interface definitions have been added to the \play-services-api\ module to support the internal Google Analytics measurement service. This includes the \IMeasurementService\ interface, which exposes methods for sending events, user properties, app launch data, and consent settings, along with supporting parcelable types such as \AppMetadata\, \EventParcel\, \UserAttributeParcel\, and \ConsentParcel\, as well as callback interfaces for upload batches and trigger URIs.

play-services-api/src/main/aidl/com/google/android/gms/measurement · high confidence

Added internal data models and AIDL interfaces for MLKit Barcode Scanning

This change introduces the foundational internal components for the MLKit Vision Barcode API within the barcode-scanning module. It adds AIDL interfaces (IBarcodeScanner, IBarcodeScannerCreator) to define the remote procedure calls for initializing and using the scanner, along with a set of internal Java data classes (such as Barcode, BarcodeScannerOptions, ImageMetadata, and various payload types like Email, Phone, and WiFi) that are parcelable and required for passing barcode detection results and configuration options across process boundaries.

play-services-mlkit/barcode-scanning · high confidence

Added proto definitions for billing, authentication, and device synchronization

This update introduces a comprehensive set of Protocol Buffer definitions for the play-services-core-proto module. It adds Purchase.proto to support Google Play billing flows, including SKU details and payment actions, and auth.proto to handle OAuth tokens, consent data, and nonces. It also includes account\_state.proto for capability synchronization, apitoken.proto for Maps API token generation, and appcert.proto for device key management. Furthermore, it adds batchsync.proto for Google Assistant data synchronization, checkin.proto for device check-in procedures, controlsettings.proto for activity controls, and a full suite of cryptauth proto files (enrollment, devicesync, directives, and metadata) to support multi-device features like Better Together and Easy Unlock.

play-services-core-proto · high confidence

Added stub implementation for Thread Network API

This change introduces the initial stub implementation for the Thread Network service in the play-services-threadnetwork module. It adds the necessary AndroidManifest, AIDL interfaces (including IThreadNetworkService and credential callbacks), and Java data models such as ThreadBorderAgent, ThreadNetworkCredentials, and IsPreferredCredentialsResult. These files define the structure for managing Thread network credentials and border agents, establishing the API surface for future implementation.

play-services-threadnetwork · high confidence

Added stubbed Google Help and Feedback API interfaces

This change introduces the AIDL interfaces and data models for the Google Help and Feedback service within the Play Services API layer. It defines the \IGoogleHelpService\ and \IGoogleHelpCallbacks\ interfaces to handle operations such as processing help requests, saving feedback data, requesting chat or C2C support, and retrieving suggestions. Corresponding Parcelable data classes like \GoogleHelp\, \InProductHelp\, \SupportRequestHelp\, and \ND4CSettings\ are added to structure the data passed between the client and the service, enabling the plumbing for help and feedback features.

play-services-api/src/main/aidl/com/google/android/gms/googlehelp, play-services-api/src/main/java/com/google/android/gms/googlehelp · high confidence

Automated cross-profile data access setup on managed profile initialization

On Android 10 (API 30) and above, the system now automatically establishes access to the primary profile's data when a managed (work) profile is set up. This is achieved through a new background flow: a broadcast receiver detects the managed profile initialization and triggers a request activity, which coordinates with the primary profile to obtain a persistent URI for the settings provider. The work profile then stores this URI, enabling seamless cross-profile data sharing without requiring manual user intervention or privileged permissions.

play-services-base/core/src/main/kotlin/org/microg/gms/crossprofile · high confidence

Family Sharing: Add settings

This change introduces the underlying data models required for the Family Sharing settings feature. Specifically, it adds \MemberDataModel\ to represent family member details (including roles, invitation status, and supervision type), and a set of v2 model classes (\PageData\, \HelpData\, \BulletPoint\) to structure help content and UI sections for the settings interface.

play-services-api/src/main/java/com/google/android/gms/family · high confidence

Firebase Auth core adds ReCaptcha support for phone verification

The firebase-auth/core module now includes the necessary components to handle invisible ReCaptcha challenges required by Firebase Phone Authentication. This change introduces a new AndroidManifest declaring the AuthService, ReCaptchaActivity, and ReCaptchaOverlayService, alongside Kotlin implementations for both an Activity-based and an Overlay-based ReCaptcha UI. It also adds the IdentityToolkitClient for communicating with Google's Identity Toolkit API and a static HTML asset embedding the Firebase JS SDK to render the invisible ReCaptcha. This enables the library to complete phone number sign-in flows that previously might have failed due to missing ReCaptcha handling.

firebase-auth/core · high confidence

Initial AIDL definitions for the Reminders API

This change introduces the internal Android Interface Definition Language (AIDL) contracts for the new Reminders feature. It defines the \IRemindersService\ interface, which exposes methods for core reminder operations such as loading, creating, updating, deleting, and bumping reminders, as well as managing recurring tasks and customized snooze presets. The diff also adds the necessary data models (like \TaskEntity\, \TaskIdEntity\, and \CustomizedSnoozePresetEntity\) and callback interfaces (\IRemindersCallbacks\, \IRemindersListener\) required for cross-process communication, laying the groundwork for the service-side implementation of the reminders capability.

play-services-api/src/main/aidl/com/google/android/gms/reminders · high confidence

Initial API stubs for the Reminders service

This change introduces the foundational API layer for the Reminders feature within the Google Play Services API module. It adds several new Java classes in the \com.google.android.gms.reminders\ package, including \AccountState\, \CreateReminderOptionsInternal\, \LoadRemindersOptions\, \ReindexDueDatesOptions\, and \UpdateRecurrenceOptions\, as well as model entities like \TaskEntity\, \TaskIdEntity\, and \CustomizedSnoozePresetEntity\. These classes extend \AutoSafeParcelable\ and serve as the data structures and options containers required for interacting with the reminders backend, effectively laying the groundwork for future implementation of reminder creation, loading, and management capabilities.

play-services-api/src/main/java/com/google/android/gms/reminders · high confidence

Initial Exposure Notification API implementation

The Nearby module now includes the core data structures, AIDL interfaces, and service entry points for the Exposure Notification API. This adds support for managing exposure windows, daily summaries, and diagnosis key mappings, enabling apps to integrate with the system's exposure notification service.

play-services-nearby · high confidence

Initial FIDO2 API implementation for microG

This change introduces the initial implementation of the FIDO2 API support in the microG Play Services framework. It adds the core client entry points (\Fido2ApiClient\ and \Fido2PrivilegedApiClient\) which allow applications to initiate FIDO2 registration and signing requests via PendingIntents, check for platform authenticator availability, and retrieve credential lists. The update also includes the necessary AIDL interfaces for communication with the underlying FIDO service, data models for public key credentials and options, and support for various transport mechanisms (Bluetooth, NFC, USB, Hybrid) and attachment types (Platform, Cross-Platform).

play-services-fido · high confidence

Initial Play Games library support added

The play-services-games module has been introduced to the project, providing the foundational API surface for Google Play Games integration. This includes the definition of core data models such as Player, Game, and CurrentPlayerInfo, along with their corresponding entity implementations for serialization. The update also establishes the internal communication layer via AIDL interfaces (IGamesService, IGamesConnectService) and defines status codes and columns required for achievements, leaderboards, snapshots, and multiplayer features.

play-services-games · high confidence

Initial Tap and Pay service implementation with dummy responses

The Tap and Pay core module now includes a new Android service (TapAndPayService) that exposes the GMS Tap and Pay API. The service registers a set of features (e.g., tokenization, wallet management, issuer APIs) and implements the corresponding interface methods. Currently, most methods return dummy or placeholder responses (e.g., empty card lists, 'no active wallet' errors, or success without actual logic), effectively providing a stubbed implementation for the Tap and Pay functionality.

play-services-tapandpay/core · high confidence

Initial Tap and Pay service stubs and API definitions

This change introduces the foundational structure for the Tap and Pay service within the microG Play Services implementation. It adds the necessary AIDL interfaces (such as \ITapAndPayService\ and \ITapAndPayServiceCallbacks\) to define the inter-process communication contract, along with Java classes for data models like \CardInfo\, \AccountInfo\, and \BadgeInfo\. The public API surface is established through the \TapAndPay\ and \TapAndPayClient\ classes, which expose methods for wallet operations like tokenization, card listing, and status checks, supported by specific status codes in \TapAndPayStatusCodes\. These files serve as the interface layer and data definitions for the feature, with the actual backend logic implemented elsewhere.

play-services-tapandpay · high confidence

Initial implementation of Cast Framework, Places, and AppInvite service stubs

This change introduces the foundational internal service implementations and data models for Google Play Services modules, specifically Cast Framework, Places, AppInvite, GMS Compliance, and Cronet. For Cast Framework, it adds the core internal logic in \CastContextImpl\, \SessionManagerImpl\, and \SessionImpl\ to manage device discovery, session lifecycle, and media routing, alongside the necessary AIDL interfaces for inter-process communication. For Places, it defines the public data models such as \Place\, \PlaceFilter\, and \AutocompleteFilter\, along with the internal service contracts (\IGooglePlacesService\) required for place detection and autocomplete features. Additionally, it includes the AppInvite callback interfaces, GMS device compliance response structures, and the Cronet dynamite module descriptor, establishing the baseline architecture for these services.

(repo-wide) · high confidence

Initial implementation of Exposure Notification core services

The play-services-nearby/core module now includes the foundational components for the Exposure Notification API, introducing a new AndroidManifest with necessary permissions and service declarations. This change adds the core Kotlin implementation files, including ExposureNotificationService and ExposureNotificationServiceImpl to handle API requests, AdvertiserService and ScannerService for Bluetooth advertising and scanning, and CleanupService for data maintenance. It also introduces supporting infrastructure such as ExposureDatabase for local storage, Crypto for key generation and encryption, and ExposurePreferences for user settings, effectively establishing the backend logic for proximity tracing.

play-services-nearby/core · high confidence

Initial implementation of Google Cast API stubs

This change introduces the foundational structure for the Google Cast API within the microG library. It adds the core Java classes (such as Cast, CastDevice, ApplicationMetadata, and LaunchOptions) and AIDL interfaces required to interact with Cast devices. The implementation currently provides the public API surface and data models but contains stubbed method bodies that return default values or null, serving as a placeholder for future functional integration.

play-services-cast · high confidence

Initial implementation of Google Cast core services

The play-services-cast/core module now includes the foundational components for Google Cast support, introducing the CastMediaRouteProviderService and CastDeviceControllerService. These services enable device discovery via mDNS (NsdManager) and provide the necessary bindings for controlling Cast devices, including the CastDeviceControllerImpl for managing sessions and media status.

play-services-cast/core · high confidence

Initial implementation of Google Cloud Messaging (GCM) client library

This change introduces the core components of the GCM client library within the play-services-gcm module, enabling apps to receive push notifications and schedule background network tasks. The implementation adds the necessary AndroidManifest permissions for receiving C2DM messages and internet access, along with key classes such as GcmListenerService for handling incoming messages, GcmNetworkManager for scheduling one-off and periodic tasks, GcmPubSub for topic subscriptions, and GoogleCloudMessaging for legacy registration and upstream messaging.

play-services-gcm · high confidence

Initial implementation of Google Fit data models and IPC interfaces

This change introduces the foundational structure for the Google Fitness service in microG. It adds the necessary AIDL interfaces for internal communication, including History, Recording, Sessions, and Configuration APIs, along with their corresponding request and result parcelables. Additionally, it implements core data model classes such as Application, Bucket, DataPoint, and DataSet, enabling the framework to serialize and deserialize fitness data for client applications.

play-services-fitness · high confidence

Initial implementation of Google Play Tasks API

The play-services-tasks module now provides a complete implementation of the Google Play Tasks API, enabling asynchronous operations with support for success, failure, and cancellation listeners. This includes the core Task and TaskCompletionSource classes, cancellation tokens, and utility methods for chaining continuations and awaiting results, allowing applications to handle background tasks and their outcomes effectively.

play-services-tasks · high confidence

Initial implementation of Google Sign-In API stubs

The Google Sign-In integration now includes new implementation classes (GoogleSignInApiImpl, GoogleSignInCommon, GoogleSignInGmsClientImpl) that establish the basic wiring for the authentication service. While core flows like retrieving sign-in results from intents are now supported, key actions such as obtaining the sign-in intent, revoking access, signing out, and performing silent sign-in currently throw UnsupportedOperationException, indicating that full functionality is not yet available.

play-services-auth/src/main/java/org · high confidence

Initial implementation of Mapbox-based map rendering

This change introduces the core Mapbox integration for the maps module, adding new Kotlin source files that implement the Google Maps API delegate layer using Mapbox SDK components. The update includes the AbstractGoogleMap base class for managing map state and listeners, LiteGoogleMapImpl for lightweight map rendering, and model classes for markers, polylines, circles, and info windows. It also adds style handling via Styles.kt to support custom map themes and camera positioning logic in CameraBoundsWithSizeUpdate.kt.

mapbox · high confidence

Initial implementation of ReCaptcha support in microG

This change introduces the core components for ReCaptcha verification within the microG Play Services implementation. It adds a new Android service (\RecaptchaService\) running in a separate UI process to handle web-based interactions, alongside Kotlin implementations (\RecaptchaGuardImpl\ and \RecaptchaWebImpl\) that manage the initialization, execution, and closure of ReCaptcha challenges. The implementation utilizes Volley for network requests to the ReCaptcha API and includes a custom WebView-based approach for handling JavaScript-heavy challenges, supported by new Protocol Buffer definitions for request and response structures.

play-services-recaptcha/core · high confidence

Initial implementation of the Cast Framework module

The play-services-cast-framework module has been added, providing the core classes and interfaces for Google Cast integration. This includes the main entry point CastContext, session management via SessionManager and DiscoveryManager, configuration options (CastOptions, CastMediaOptions), and the necessary AIDL interfaces to communicate with the internal Cast Dynamite module. The module also registers required Android components such as the MediaIntentReceiver, MediaNotificationService, and ReconnectionService in its manifest.

play-services-cast-framework · high confidence

Initial implementation of the SafetyNet client library

This change introduces the core implementation for the SafetyNet API, enabling device attestation, reCAPTCHA verification, and Verify Apps functionality. It adds the necessary Android components, including a background service and a reCAPTCHA UI activity, along with the data models and protocol buffers required for communication. The public API surface is established via the SafetyNetClient class, which provides methods for attesting device integrity, verifying users with reCAPTCHA, and managing Verify Apps settings.

play-services-safetynet · high confidence

Initial implementation of the Wearable API stubs

This change introduces the foundational stubs for the Google Play Services Wearable API, enabling applications to interact with wearable devices. The update adds the core Java interfaces and data models required for Wear capabilities, including the Capability API for discovering device capabilities, the Channel API for bidirectional data streams, and the Asset class for handling binary data. It also includes the necessary AIDL definitions for the underlying \IWearableService\ IPC interface and registers the \AndroidManifest.xml\ for the module.

play-services-wearable · high confidence

Initial implementation of the Wearable service core

This change introduces the foundational components for the Google Play Services Wearable API within the microG framework. It adds the \WearableService\ entry point, which registers a comprehensive set of supported features (such as \wear3\_oem\_companion\, \wear\_fast\pair\\*\, and \wear\consent\\*\) and initializes the backend implementation. The core logic includes \WearableImpl\ for managing connections and data synchronization, \MessageHandler\ for processing wearable protocol messages (assets, data items, RPCs), and persistent storage helpers (\NodeDatabaseHelper\, \ConfigurationDatabaseHelper\) for managing nodes, data items, and connection configurations. Additionally, it provides \CapabilityManager\ for handling device capabilities and \ClockworkNodePreferences\ for generating stable local node identifiers.

play-services-wearable/core · high confidence

Initial implementation of the play-services-location AIDL interface and client APIs

The play-services-location module now includes the foundational AIDL definitions and Java client classes required to communicate with the Google Location Services backend. This change introduces the \IGoogleLocationManagerService\ interface, which exposes methods for core location features including fused location updates, geofencing, activity recognition, and device orientation. It also adds the corresponding public-facing client classes such as \ActivityRecognitionClient\ and data models like \ActivityRecognitionResult\, enabling applications to request location data and detect user activities.

play-services-location · high confidence

Initial microG Vending app stubs and service definitions

The vending-app module is introduced as a new component, providing the foundational Android manifest, ProGuard rules, and a comprehensive set of AIDL interfaces that define the communication contracts for Google Play services. This includes the core In-App Billing service (IInAppBillingService), licensing (ILicensingService), asset modules, app updates, Play Integrity, age signals, and various other Play Store subsystems, effectively establishing the structural basis for the microG Vending implementation.

vending-app · high confidence

Initial project scaffolding and build configuration

The repository is initialized with core documentation files (LICENSE, README, TRANSLATION) and a Gradle wrapper to standardize the build environment. The build system is configured to compile the GmsCore application via Gradle within an AOSP context, including specific ProGuard rules to preserve necessary Google Play Services classes and form data structures.

(repo-wide) · high confidence

Initial stub implementation of Google Pay services

This change introduces the core infrastructure for the Google Pay API within microG, including the \PayService\ and \ThirdPartyPayService\ components. The \PayService\ registers a comprehensive list of supported features (such as \pay\_payment\_method\, \pay\_save\_passes\, and \pay\_transactions\) but currently returns errors for most operations, indicating they are not yet implemented. The \ThirdPartyPayService\ provides stubs for third-party integrations, explicitly reporting \NOT\_ELIGIBLE\ for API availability and \SERVICE\_MISSING\ for pass saving. The implementation is supported by a new \AndroidManifest.xml\ defining the necessary activities and services, along with a large set of AIDL interfaces and Java data classes (e.g., \GetPaymentMethodsRequest\, \EmoneyReadiness\) to handle the protocol communication.

play-services-pay · high confidence

Initial support for Google Play Services reCAPTCHA API

This change introduces the initial implementation of the reCAPTCHA module within the microG Play Services compatibility layer. It adds the public API entry points (\Recaptcha.getClient\) and client interface (\RecaptchaClient\) that allow applications to initialize reCAPTCHA handles, execute actions to obtain tokens, and manage the service lifecycle. The implementation includes the necessary AIDL interfaces and data models to communicate with the underlying reCAPTCHA service, enabling apps to integrate reCAPTCHA protection for login, signup, and other workflows.

play-services-recaptcha · high confidence

Initial support for Vision Barcode and Face detection APIs

The play-services-vision module now includes the foundational client library for Google's Vision APIs, introducing support for barcode and face detection. This change adds the necessary AIDL interfaces and Java classes to enable barcode recognition (including formats like QR Code, EAN, and Code 128) and face detection features such as landmark tracking, contour detection, and classification. Applications can now utilize the BarcodeDetector and FaceDetector classes to process image frames, with the underlying implementation delegating to native detectors via the new internal client interfaces.

play-services-vision · high confidence

Introduce DroidGuard service API and client

This change adds the DroidGuard service API and client implementation to the play-services-droidguard module. It introduces a new AndroidManifest, AIDL interfaces (IDroidGuardService, IDroidGuardHandle, etc.), and Java/Kotlin classes (DroidGuard, DroidGuardClient, DroidGuardApiClient, HandleProxyFactory) to facilitate communication with the DroidGuard service. The client allows initializing handles, taking snapshots, and managing the lifecycle of DroidGuard operations, including caching and loading of APKs via HandleProxyFactory.

play-services-droidguard · high confidence

Introduce SafeParcelProcessor for compile-time Parcelable generation

The safe-parcel-processor module now provides a Java annotation processor that automatically generates the \Creator\ implementation for classes annotated with \@SafeParcelable\. By registering \org.microg.safeparcel.SafeParcelProcessor\ via standard Java SPI and Gradle incremental processing metadata, the processor scans for \@SafeParcelable\ classes at compile time and emits the corresponding \createFromParcel\ and \writeToParcel\ logic, replacing the need for manual boilerplate or runtime reflection for supported types.

safe-parcel-processor · high confidence

Introduction of work account authentication service and settings management

This change introduces the core components for handling work accounts within the authentication flow. It adds a new WorkAccountAuthenticatorService that binds to the AccountManager to facilitate work account authentication, and a WorkProfileSettings class that manages user preferences for work account creation via the system settings contract.

play-services-auth-workaccount/core/src/main/kotlin · high confidence

New API token service interface for Maps authentication

Added the IApiTokenService AIDL interface, enabling applications to request API tokens via the requestApiToken method. This provides a standardized mechanism for Maps authentication flows to obtain tokens using a Bundle of parameters.

play-services-api/src/main/aidl/com/google/android/gms/maps · high confidence

New Global Search API request and response models

The \play-services-api\ module now includes a new set of SafeParcel-based request and response classes for the Global Search API. This adds support for managing search corpora (clearing, retrieving info and status, requesting indexing), configuring global search sources, and handling experiment IDs (getting current/pending IDs, setting them, and toggling inclusion in global search). It also introduces the core \QueryRequest\ and \QueryResponse\ models for executing search queries against specified corpora.

play-services-api/src/main/java/com/google/android/gms/search · high confidence

New GoogleApiClient implementation and connection management infrastructure

This change introduces a new set of core classes in play-services-base to manage Google API client connections, including GoogleApiClientImpl, GmsClient, MultiConnectionKeeper, and GmsConnector. These components replace or supplement the legacy connection handling, providing a more robust mechanism for binding to GMS services, managing connection states, and forwarding callbacks. The addition of DummyApiClient and ForwardConnectionCallbacks/ForwardConnectionFailedListener suggests a shift towards a more modular and testable API client architecture, likely to support newer Google Play Services API revisions and improve stability in service binding.

play-services-base/src/main/java/org · high confidence

New IAppCertService AIDL interface for app certificate operations

A new AIDL interface, IAppCertService, has been added to the com.google.android.gms.auth.appcert package. This interface exposes two methods: fetchDeviceKey, which returns a boolean indicating success, and getSpatulaHeader, which retrieves a string header for a given package name. This change introduces the underlying IPC contract for app certificate functionality.

play-services-api/src/main/aidl/com/google/android/gms/auth · high confidence

New IGoogleHttpService AIDL interface for URL validation

A new AIDL interface, IGoogleHttpService, has been added to the Google Play Services API layer. This interface exposes a single method, checkUrl, which accepts a URL string and returns a Bundle, enabling remote clients to perform URL checks via IPC.

play-services-api/src/main/aidl/com/google/android/gms/http · high confidence

New Identity API client stubs and request models for sign-in and authorization

The \play-services-auth\ module now exposes the \com.google.android.gms.auth.api.identity\ package, providing the entry point \Identity\ and client interfaces \SignInClient\, \CredentialSavingClient\, and \AuthorizationClient\. These files introduce the request and result models (e.g., \BeginSignInRequest\, \AuthorizationRequest\, \ClearTokenRequest\) and options classes required to initiate sign-in flows, save credentials, and manage OAuth 2.0 authorization tokens. The client implementations currently throw \UnsupportedOperationException\, indicating this is a structural addition of the API surface rather than a functional implementation.

play-services-auth/src/main/java/com/google/android/gms/auth/api/identity · high confidence

New Semantic Location History API definitions

Added AIDL interfaces and parcelable types for the new Semantic Location History settings API, including the internal service contract (ISemanticLocationService) which exposes methods to register/unregister location events and toggle Incognito Mode, alongside supporting data structures like PlaceCandidate, SemanticLocationEventRequest, SemanticLocationState, and SemanticLocationParameters.

play-services-api/src/main/aidl/com/google/android/gms/semanticlocation · high confidence

New Semantic Location History API definitions added

The play-services-api module now includes the AIDL interfaces and SafeParcelable data models for the Semantic Location History service. This adds the internal service contract (ISemanticLocationHistoryService) and its callbacks, along with supporting types such as LocationHistorySegment, FrequentPlace, Persona, and LocationHistorySettings, enabling applications to interact with the new semantic location history features.

play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory, play-services-api/src/main/java/com/google/android/gms/semanticlocationhistory · high confidence

New auth preferences module for granular Google account settings

A new AuthPrefs utility class has been added to the auth module, providing static methods to read specific Google account settings from the system settings contract. This includes controls for trust permissions, UI visibility, Android ID inclusion, device name stripping, two-step verification handling, and Find My Device permissions, enabling more granular configuration of authentication behavior.

play-services-base/core/src/main/kotlin/org/microg/gms/auth · high confidence

New authentication and account management services

This update introduces several new GMS authentication and account services. Firebase Auth is now supported, enabling apps to use Firebase Authentication features. SMS Retriever API is implemented to allow automatic SMS code retrieval and user consent prompts. A local BlockStore implementation is added for secure, local storage of app-specific data. Additionally, Work Account support is introduced, allowing device administrators to create, manage, and remove work profile accounts, with proper security checks to ensure only authorized device admin apps can perform these actions.

core · high confidence

New core infrastructure classes for device configuration, identification, and service management

This change introduces several new foundational classes in the \org.microg.gms.common\ package. \DeviceConfiguration\ gathers and exposes device hardware details such as screen metrics, OpenGL extensions, and system features. \DeviceIdentifier\ and \PhoneInfo\ provide generated or static identifiers for Wi-Fi MAC, MEID, IMSI, and SIM operator, effectively mocking device identity. \ForegroundServiceContext\ and its associated \ForegroundServiceInfo\ annotation enable services to properly start and display notifications in foreground mode on Android 8.0 (API 26) and above, handling battery optimization checks. Additionally, \HttpFormClient\ provides a reflection-based HTTP client for form-encoded requests, \RemoteListenerProxy\ facilitates dynamic binding to remote AIDL services, and \PackageUtils\ contains utilities for checking Google package signatures and permissions.

play-services-base/core/src/main/java/org/microg/gms/common · high confidence

New core utility classes for package info, caching, and instance management

The \org.microg.gms.utils\ package now includes several new utility classes: \ExtendedPackageInfo\ for retrieving detailed package metadata and certificate hashes, \IntentCacheManager\ for persisting data across process restarts using alarms and pending intents, \SingleInstanceUtil\ for thread-safe singleton creation, \BinderUtils\ for logging binder transaction issues, \BitmapUtils\ for bitmap scaling, \FileXmlResourceParser\ for parsing XML files, and \PackageManagerUtils\/\PackageManagerWrapper\ for enhanced package manager interactions.

play-services-base/core/src/main/kotlin/org/microg/gms/utils · high confidence

New internal AIDL interfaces for Global Search administration and corpus management

This change introduces a new set of internal Android Interface Definition Language (AIDL) files within the \com.google.android.gms.search\ package, establishing the IPC contracts for the Global Search API. Specifically, it adds \IGlobalSearchAdminService\ and \ISearchCorporaService\ interfaces, along with their corresponding request/response parcelables and callback interfaces. These definitions enable system components to programmatically manage global search sources, configure experiment IDs, and perform corpus operations such as clearing data, requesting indexing, and retrieving status or info.

play-services-api/src/main/aidl/com/google/android/gms/search · high confidence

New internal AIDL interfaces for People service operations

The People service now exposes new internal IPC interfaces (IPeopleService and IPeopleCallbacks) that enable clients to load people data, manage circles, request account synchronization, and perform autocomplete searches. These interfaces define the contract for operations such as loading owners, fetching avatar images, and registering data change listeners, facilitating more structured communication between the app and the People service backend.

play-services-api/src/main/aidl/com/google/android/gms/people · high confidence

New internal ICheckinService AIDL interface added

An internal AIDL interface, ICheckinService, has been introduced in the com.google.android.gms.checkin.internal package. This interface exposes three methods—getDeviceDataVersionInfo, getLastCheckinSuccessTime, and getLastSimOperator—enabling clients to query device data versioning, the timestamp of the last successful check-in, and the last known SIM operator via the checkin service.

play-services-api/src/main/aidl/com/google/android/gms/checkin · high confidence

New location permission handling and backend infrastructure for Huawei devices

The Huawei-specific location module now includes a dedicated AndroidManifest and UI components to manage location permissions via a notification-based activity (AskPermissionNotificationActivity) and a standard permission request activity (AskPermissionActivity). This change introduces a new permission rationale UI with step-by-step instructions for granting 'Allow all the time' access, specifically addressing Huawei's permission notification behavior. Additionally, the core location service infrastructure is expanded with new classes like LastLocationCapsule for managing location caching and granularity, and LocationAppsDatabase for tracking app usage and last known locations, supporting more robust location reporting and permission management on Huawei variants.

play-services-location/core · high confidence

New location settings and extension utilities in core base module

The play-services-location/core/base module now includes a new LocationSettings class that exposes user-configurable options for Ichnaea backend contributions (WiFi and cell data caching, learning, and contribution toggles), custom endpoint configuration, and Google Maps Timeline functionality (enable and upload toggles). Additionally, new Kotlin extension functions and constants are provided for handling location elapsed time formatting, network location service intents, and detecting built-in network location services.

play-services-location/core/base · high confidence

New microG UI tools library for settings, self-check, and dashboard interfaces

This change introduces the microg-ui-tools library, providing a suite of reusable UI components for the microG application. It adds a Self-Check framework (PermissionCheckGroup, SelfCheckGroup) to verify permissions and system state, and a set of base UI classes (AbstractDashboardActivity, AbstractSettingsActivity, AbstractAboutFragment) to standardize the look and feel of settings and about screens. The library also includes custom preference widgets (DialogPreference, LongTextPreference, RadioButtonPreference), a SwitchBar component for settings toggles, and a Condition system for displaying dynamic status cards in the dashboard.

play-services-core/microg-ui-tools · high confidence

New microG map theme and exposure notification settings integration

This change introduces a new default map theme for the microG VTM map engine, defined in the new MicrogThemes enum which loads styles/microg.xml. It also adds a new DefaultBitmapDescriptor implementation for map markers that supports hue adjustment via color matrix filters. Additionally, it integrates exposure notification settings into the nearby services UI by adding an ExposureNotificationsSettingsProvider that registers a settings entry for exposure notifications, handling navigation and status display within the app's settings interface.

play-services-maps/core/vtm/microg-theme, play-services-nearby/core/package, vtm · high confidence

New network location provider module with fused location support

This change introduces a new \play-services-location/core/provider\ module that implements a network-based location provider. It registers \NetworkLocationProviderService\ and \FusedLocationProviderService\ to expose \com.android.location.service.v2.NetworkLocationProvider\, \com.android.location.service.v3.NetworkLocationProvider\, and \com.android.location.service.FusedLocationProvider\ intents, allowing the system to use network-derived locations. The module includes a \DatabaseExportFileProvider\ for exporting cell and Wi-Fi data, and integrates with the Ichnaea service client for geolocation lookups. It also handles cell and Wi-Fi details collection via \CellDetailsSource\ and \WifiDetailsSource\ (supporting both \WifiScanner\ and \WifiManager\ fallbacks), and manages passive GPS listener registration for location learning.

play-services-location/core/provider · high confidence

New play-services-ads-api package with stubbed ad implementations

The new play-services-ads-api package introduces core API stubs for the Google Mobile Ads SDK, including AIDL interfaces for ad loading, ad managers, and rewarded ads. The implementation provides legacy stubs for AdLoader and AdManager that return empty containers and report 'no fill' errors, while RewardedAd implementations explicitly fail to load ads. The package also includes a MobileAdsSettingManager that handles initialization callbacks and app settings, along with Chimera entry points for the AdMob SDK to load these components from the dynamite module.

play-services-ads-api, play-services-ads-api/core · high confidence

New self-check UI fragment for displaying system status

The microg-ui-tools module now includes AbstractSelfCheckFragment, a new UI component that renders a scrollable list of self-check groups. This fragment dynamically inflates check results (positive, negative, or unknown) and provides clickable resolution actions for failed checks, serving as the visual interface for the system's self-diagnostic capabilities.

microg-ui-tools · high confidence

Stub implementation of the Thread Network service

The Thread Network core module now includes a new AndroidManifest.xml and a Kotlin implementation of ThreadNetworkService. This service registers itself to handle the com.google.android.gms.threadnetwork.service.START intent and exposes a ThreadNetworkServiceImpl that defines the API surface for managing Thread network credentials (such as addCredentials, removeCredentials, and various getCredentials methods). Currently, all credential operations are stubs that log 'Not yet implemented' and return success or not-found statuses, effectively providing the structural foundation for the feature without actual network logic.

play-services-threadnetwork/core · high confidence

Stubbed App Set, GASS, and Pseudonymous ID APIs

This change adds placeholder implementations for the App Set, GASS, and Pseudonymous ID services. In the \play-services-appset\ module, it introduces the \AppSet\ entry point, \AppSetIdClient\ interface, and \AppSetIdInfo\ model (supporting \SCOPE\_APP\ and \SCOPE\_DEVELOPER\), along with the necessary AIDL interfaces (\IAppSetService\, \IAppSetIdCallback\) and parcelable classes (\AppSetIdRequestParams\, \AppSetInfoParcel\) to define the API contract. Similarly, it adds the \GassRequestParcel\ and \GassResponseParcel\ models and the \IGassService\ AIDL interface for GASS, as well as the \PseudonymousIdToken\ model and \IPseudonymousIdService\/\IPseudonymousIdCallbacks\ interfaces for Pseudonymous ID. These files establish the structural foundation for these APIs, though the actual service logic is not yet implemented.

(repo-wide) · high confidence

Support for configurable online location sources

The location provider now supports multiple online sources, allowing users to select from predefined providers or configure a custom endpoint. This change introduces logic to parse source configurations, match custom endpoints to known providers via host suffixes for automatic import, and determine the effective API endpoint based on the selected source.

base · high confidence

The App Invite module now handles the resolution and opening of App Invite and Firebase Dynamic Links. A new \AppInviteActivity\ processes incoming link intents by querying the DataMixer API to resolve the link target, then launches the associated app via an explicit intent or falls back to a browser if the app is not installed or the version is too old. This includes support for \DynamicLinkData\ payloads and ensures that the client platform and package signature are sent during the link resolution request.

play-services-appinvite/core/src/main/kotlin · high confidence

Removals

Removal of legacy Google Maps and GMS internal implementation classes

This change removes a large set of internal implementation classes from the \src/com/google/android/gms\ directory, including the \AbstractGmsServiceBroker\ and its AIDL interface, the \SafeParcelable\ serialization infrastructure (\SafeReader\, \SafeWriter\), and the \ObjectWrapper\ utility. It also deletes the core Google Maps implementation layer (\GoogleMapImpl\, \CameraUpdateFactoryImpl\) and various model classes (\GoogleMapOptions\, \CameraPosition\, \LatLng\, etc.) that relied on the removed serialization and wrapper components. This cleanup eliminates the legacy code path that wrapped \com.google.android.maps.MapView\ and its controller, indicating a shift away from this specific internal mapping architecture.

src/com · high confidence

API

Add AIDL interfaces for the Phenotype API

New AIDL definitions have been added to the \play-services-api\ module to expose the internal Phenotype service contract. This includes the \IPhenotypeService\ interface for client-to-service communication (covering registration, configuration snapshots, flag retrieval, and overrides) and the \IPhenotypeCallbacks\ interface for service-to-client responses. Several parcelable data types (\Configurations\, \DogfoodsToken\, \ExperimentTokens\, \Flag\, \FlagOverrides\, \RegistrationInfo\) are also defined to support these interactions.

play-services-api/src/main/aidl/com/google/android/gms/phenotype · high confidence

Added Firebase Database connection IDL interfaces

New AIDL interfaces and parcelables have been added to the Firebase Database API layer to support persistent connection management. This includes the main IPersistentConnection interface for operations like setup, listening, and data mutation, along with supporting interfaces for authentication (IConnectionAuthTokenProvider, IGetTokenCallback), hash providers (IListenHashProvider), and callbacks (IRequestResultCallback, IPersistentConnectionDelegate), as well as data structures like ConnectionConfig, CompoundHashParcelable, and RangeParcelable.

play-services-api/src/main/aidl/com/google/firebase · high confidence

New App Data Search IPC interfaces and parcelables added

The App Data Search API surface is expanded with new AIDL definitions for inter-process communication. This includes new parcelable types (CorpusStatus, PIMEUpdate, PIMEUpdateResponse, RequestIndexingSpecification, SuggestSpecification, SuggestionResults, UsageInfo) and internal binder interfaces (IAppDataSearch, ILightweightAppDataSearch, ILightweightAppDataSearchCallbacks). The IAppDataSearch interface now exposes methods for getting suggestions, requesting indexing, checking status, and requesting PIME updates, while ILightweightAppDataSearch adds a view method for tracking usage info. Additionally, the IPlusOneButtonCreator interface was moved to the new location with minor whitespace normalization.

play-services-api/src/main/aidl/com/google/android/gms/appdatasearch · high confidence

Architecture

Firebase Auth module restructured with new AIDL interfaces and data models

The firebase-auth module has been reorganized to support a new internal communication layer via AIDL. This change introduces a comprehensive set of AIDL interfaces (IFirebaseAuthService, IFirebaseAuthCallbacks) and request/response parcelables for operations such as sign-in, credential linking, MFA, and account management. Corresponding Java model classes (ActionCodeSettings, AuthCredential, EmailAuthCredential, PhoneAuthCredential, UserProfileChangeRequest) and empty request wrappers have been added to facilitate this new service contract.

firebase-auth · high confidence

Behavioural changes

Add DummyService stub for disabled GMS services

A new DummyService class has been added to the core module to handle requests for disabled GMS services. When a client attempts to connect to a service that is not enabled, this service now returns an API\_DISABLED status code, providing a consistent error response instead of potentially failing silently or with a generic error.

play-services-base/core/src/main/java/org/microg/gms · high confidence

Add stub implementations for Google Fit service brokers

The core module now registers four new Android services—FitConfigBroker, FitHistoryBroker, FitSessionsBroker, and FitRecordingBroker—via AndroidManifest.xml, each exposing intent filters for their respective Google Fit APIs (Config, History, Sessions, Recording). Corresponding Kotlin broker classes implement the internal IGoogleFit\*Api interfaces; most methods are currently stubs that log 'Not implemented' and return success or empty results, except FitConfigBroker which handles disableFit and FitRecordingBroker which accepts subscribe/unsubscribe requests. A shared FITNESS\_FEATURES array is also introduced to report feature flags (e.g., temp\_data\_point\_changelogs, local\_no\_account\_mode) to clients during service initialization.

play-services-fitness/core · high confidence

Added FACS cache result and option data models

This change introduces several new serializable data classes within the FACS (Feature Access Control Service) cache package to support settings management. Specifically, it adds \FacsCacheCallOptions\ to carry instance and version identifiers, and result wrappers for forcing cache refreshes (\ForceSettingsCacheRefreshResult\), reading device-level settings (\ReadDeviceLevelSettingsResult\), retrieving activity controls settings (\GetActivityControlsSettingsResult\), and updating activity controls settings (\UpdateActivityControlsSettingsResult\). These classes define the structure for cache-related API responses and requests.

play-services-api/src/main/java/com/google/android/gms/facs · high confidence

Added internal location system API classes for geofencing and provider properties

The system-api module now includes the \Geofence\ class, which represents circular geographical boundaries with validation for latitude, longitude, and radius, and the \ProviderProperties\ class, which encapsulates legacy location provider capabilities such as network/satellite requirements, accuracy, and power usage. These additions provide the underlying data structures required for internal location framework operations.

system-api · high confidence

Added internal measurement API data models

The \play-services-api\ module now includes a set of new internal parcelable classes for the Google Analytics measurement service, including \AppMetadata\, \BatchUploadStatusParcel\, \ConditionalUserPropertyParcel\, \ConsentParcel\, \EventParams\, \EventParcel\, \TriggerUriParcel\, \UploadBatchesCriteria\, and \UserAttributeParcel\. These classes define the data structures used for serializing app metadata, user consent settings, event parameters, and upload batch criteria, enabling the underlying implementation to handle these specific data types during measurement operations.

play-services-api/src/main/java/com/google/android/gms/measurement · high confidence

Added package documentation for Google Auth module

A package-info.java file has been added to the com.google.android.gms.auth package, providing Javadoc documentation that describes the package as containing classes for authenticating Google accounts. This change improves API discoverability and documentation for developers using the Google Play Services Auth library.

play-services-auth/src/main/java/com/google/android/gms/auth · high confidence

Adopts Conscrypt GMScore for TLS 1.3 support

The ProviderInstaller implementation now uses the Conscrypt GMScore library instead of the original Conscrypt, enabling the default TLS protocol to be set to TLSv1.3. This change also introduces a manual native library loader to extract and load the \libconscrypt\_gmscore\_jni.so\ from the APK when the default loader fails, ensuring the security provider initializes correctly on devices where standard linking is unavailable.

play-services-conscrypt-provider-core · high confidence

App Set ID service now returns a random identifier

The App Set service has been implemented to respond to requests for an App Set ID. Instead of returning a fixed or missing value, the service now generates a unique, random UUID for each request, allowing applications to obtain a consistent identifier scoped to the app.

play-services-appset/core · high confidence

DroidGuard core service and anti-abuse features

The DroidGuard core module now includes a dedicated service (DroidGuardChimeraService) that handles initialization, pinging, and request processing via a new AndroidManifest.xml. This update introduces hardware attestation blocking, which intercepts AndroidKeyStore calls to prevent DroidGuard from accessing certificate chains, and adds the ability to block the dump() method on specific system services (SurfaceFlinger, thermalservice) when the DUMP permission is missing. Additionally, the service now uses a local SQLite database (DgDatabaseHelper) with retry logic for lock contention to cache VM bytecode and keys, and implements a SerialUnflaky mechanism to stabilize Build.getSerial() calls.

play-services-droidguard/core · high confidence

Major rework of the network location provider with Ichnaea support and moving Wi-Fi enhancements

The network location provider has been significantly restructured to support the Ichnaea geolocation backend, introducing new data models for cell towers, Wi-Fi access points, and Bluetooth beacons, along with a new SQLite database schema (version 8) that adds altitude fields and cleans up invalid cache entries. Moving Wi-Fi support has been expanded with a comprehensive list of train and airline hotspots (including SNCF, Eurostar, and Swiss airlines), and the system now bypasses proxies and disables TLS certificate expiration checks for these connections to improve reliability. Additionally, a new OpenStreetMap Nominatim geocoder provider has been added for address resolution, and the network location service has been moved to an independent module with improved intent-based location reporting.

provider · high confidence

New device profile system with customizable build identifiers

The device profile mechanism has been rewritten to allow system and user profiles to override standard Android build identifiers (such as MODEL, MANUFACTURER, and SERIAL) via XML configuration files. This change introduces a new Build object that exposes these customizable fields and adds support for the DEVICE\_INITIAL\_SDK\_INT property, enabling apps to detect the Android version the device was originally shipped with rather than the current OS version. Users can now define custom device identities through system or user profile files, which are merged with real hardware data to present a consistent profile to applications.

play-services-base/core/src/main/kotlin/org/microg/gms/profile · high confidence

New settings infrastructure and Play Integrity data handling

The settings module now introduces a new \MetaDataPreferences\ class that reads default configuration values from Android application metadata, and a refactored \SettingsProvider\ that aggregates defaults from multiple sources (including product/system partitions and metadata) to provide a unified, process-safe settings interface. Additionally, a new \PlayIntegrityData\ class has been added to the vending package to manage and serialize Play Integrity check results (allowed status, package name, signature, and timestamps) for individual apps.

play-services-base/core/src/main/kotlin/org/microg/gms/settings · high confidence

Profile provider moved to core package

The ProfileProvider component, which exposes active profile data via a ContentProvider interface, has been relocated to the play-services-base-core-package. This change reorganizes the codebase structure without altering the provider's functionality, ensuring the profile data remains accessible through the same Android content URI mechanism.

package · high confidence

Refactored authentication request and response handling

The authentication module in play-services-base has been refactored to use new, dedicated \AuthRequest\ and \AuthResponse\ classes. \AuthRequest\ now explicitly defines fields for OAuth2 parameters (such as \oauth2\_include\_email\, \oauth2\_prompt\, and \include\_granted\_scopes\) and device context, while \AuthResponse\ provides a structured parser for server replies including consent and scope details. This change improves the clarity and maintainability of the auth flow by centralizing request construction and response parsing logic within these specific classes.

play-services-base/core/src/main/java/org/microg/gms/auth · high confidence

Unified settings UI with new preference components and Material 3 styling

The settings interface has been refactored to unify preference styling and align with the system settings appearance. This change introduces several new custom preference classes—AppHeadingPreference, AppIconPreference, AppPreference, FooterPreference, SwitchBarPreference, and TextPreference—to standardize how app details, icons, footers, and switch controls are rendered. It also includes utility functions for handling application info and navigation, while applying Material 3 design principles to ensure the UI matches the look and feel of the Google settings app.

play-services-base/core/src/main/kotlin/org/microg/gms/ui · high confidence

Fixes

Fixes crashes on legacy Android versions by keeping critical classes in the primary dex file

The play-services-core module now includes a multidex-keep configuration to ensure that the Maps library, the Chimera Dynamite Loader, and the Conscrypt security provider remain in the primary dex file. This change prevents class-loading errors and crashes on older Android versions that do not support multidex, ensuring that location services, dynamic module loading, and secure connections function correctly without requiring complex runtime dex installation.

play-services-core · high confidence

Dependencies

Add Gradle wrapper configuration for version 8.13

The project now includes a Gradle wrapper properties file that pins the build environment to Gradle 8.13. This ensures that all developers and CI systems use the same specific Gradle distribution, improving build consistency and reproducibility across the team.

gradle · high confidence

Migrate build system to Gradle with centralized dependency management

The project has transitioned from its previous build configuration to a standard Gradle structure, introducing a root \build.gradle\ that centralizes version definitions for Android build tools (8.13.2), Kotlin (1.9.22), and key libraries such as Ktor (2.3.13), Wire (6.4.6), and OkHttp (4.12.0). This change establishes a unified dependency management layer across all modules, including \play-services-basement\, \firebase-auth\, and \play-services-auth\, while also enabling Maven publishing capabilities for release artifacts.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 30.

Lenses

  • Code Health 86
  • Architecture 94
  • Maturity 35
  • Readiness 30
  • Security 10
  • Domain Modelling 100

Changes since last survey

  • 300 commits — 261 feature/other, 39 fixes

By area

  • play-services-core/src — 170 commits
  • play-services-fido/core — 22 commits
  • play-services-location/core — 19 commits
  • vending-app/src — 16 commits
  • play-services-base/core — 14 commits
  • .github/workflows — 9 commits
  • play-services-maps/core — 7 commits
  • play-services-droidguard/core — 6 commits
  • play-services-ads-identifier/core — 5 commits
  • play-services-api/src — 5 commits
  • (root) — 3 commits
  • play-services-auth-api-phone/core — 3 commits
  • play-services-ads-api/src — 2 commits
  • play-services-base/src — 2 commits
  • play-services-core/microg-ui-tools — 2 commits
  • gradle/publish-android.gradle — 1 commit
  • play-services-ads-lite/core — 1 commit
  • play-services-ads-lite/src — 1 commit
  • play-services-auth-blockstore/core — 1 commit
  • play-services-auth-workaccount/core — 1 commit

Notable commits

  • fix: Ads: Fix some API details
  • fix: Asset: Fixed game resource download issues (#3124)
  • fix: Auth: Fix AskPermission consent flow
  • fix: Auth: Fixed some login failure issues (#3143)
  • fix: DroidGuard: fix ServiceCallProxy Binder forwarding
  • fix: Fido: Fix PIN requirement for USB plugged after navigating to USB view (#3462)
  • fix: Fido: Fix credential assertion with Chromium-based browsers (add missing public key) (#3545)
  • fix: Fido: Fix relying party validation (#3460)
  • fix: Fido: Fix request with FidoAppIdExtension (#3544)
  • fix: Fix "Requires a newer version of Android Auto" prompt (#3491)
  • fix: Fix "Something went wrong" error in Google Passwords
  • fix: Fix COSE decoding with x-only keys
  • fix: Fix ConcurrentModificationException in MultiConnectionKeeper (#3553)
  • fix: Fix IAP payment card switching issue (#3649)
  • fix: Fix app licensing request returning invalid response (#3398)
  • fix: Fix entering account registration flow from microG signin (#3087)
  • fix: Fix screen-lock exclude credential check (#3752)
  • fix: Fix system profile behavior System profile was not read from xml because the logic fallback to realData getProfileResId() was returning 0 in that case.
  • fix: Fix the issue requiring a security verification flow for in-app subscriptions (#3507)
  • fix: Fix v2 licensing (#3084)
  • …and 280 more

Architecture

  • 0 containers · 41 bounded contexts · 73 dependency edges (baseline)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

microg/GmsCore was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 25 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit fcb2c20377eecacf23a6a6007a4be4f834cdfb3a — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-dd72cc24c749.