Prototype SDK support matrix¶
SDK availability depends on the system image, installed providers and account state. Package or framework presence establishes a prerequisite, not successful SDK behavior. The matrix records captured evidence only; it does not guarantee prototype runtime support.
Support matrix¶
| Feature | AOSP default |
google_apis (AutoMobile default image) |
google_apis, GMS disabled |
google_apis_playstore |
Physical Android | iOS Simulator (iOS 26/27) | Physical iPhone |
|---|---|---|---|---|---|---|---|
| MapLibre | unverified | unverified | unverified | unverified | unverified, needs account/hardware | unverified | unverified, needs account/hardware |
| Google Maps SDK | impossible (A: no GMS on API 30) | unverified | unverified | unverified | unverified, needs account/hardware | unverified | unverified, needs account/hardware |
| MapKit | unverified | unverified | unverified | unverified | unverified, needs account/hardware | unverified | unverified, needs account/hardware |
| Android System WebView / WKWebView | unverified | unverified | unverified | unverified | unverified, needs account/hardware | unverified | unverified, needs account/hardware |
| Play Billing | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware |
| Google Pay TEST environment | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware |
| Apple Pay sheet | unverified | unverified | unverified | unverified | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware |
| StoreKit Testing | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware |
| Credential Manager | impossible (A: API 30 predates provider API) | unverified | unverified | unverified | unverified, needs account/hardware | unverified | unverified, needs account/hardware |
| Sign in with Apple | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware |
| Custom Tabs / ASWebAuthenticationSession | impossible (A: no Custom Tabs service) | unverified | unverified | unverified | unverified, needs account/hardware | unverified | unverified, needs account/hardware |
| ML Kit bundled models | unverified | unverified | unverified | unverified | unverified, needs account/hardware | unverified | unverified, needs account/hardware |
| ML Kit unbundled models | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware | unverified, needs account/hardware |
| Apple Vision | unverified | unverified | unverified | unverified | unverified, needs account/hardware | unverified | unverified, needs account/hardware |
| Glance / Quick Settings tiles / WidgetKit | unverified | unverified | unverified | unverified | unverified, needs account/hardware | unverified | unverified, needs account/hardware |
default evidence is API 30 only (A); API 36 AOSP was not installed on the host.
The Google image columns are API 36 (B), with a separate disable probe (C).
The iOS column covers on-disk iOS 26.5/27.0 frameworks (D), not exercised SDK behavior.
All other unverified cells lack an SDK host-app run: this includes MapLibre,
MapKit, WebView rendering, Google Maps rendering, bundled ML Kit, Apple Vision,
widgets and tiles. No cross-platform implementation is inferred from an SDK name.
Account, purchase, model-download and physical-device checks were not exercised;
the account/hardware label does not imply compatibility on every platform.
Captured prerequisites¶
| Evidence | Runtime | Captured fact and its boundary |
|---|---|---|
| A | AOSP default, API 30, arm64 Android 11 |
Package queries found no GMS, Play Store, Maps, Wallet, Chrome or Google WebView. The WebView provider is the AOSP com.android.webview, which is not updatable. This is not API 36 evidence. |
| A | AOSP default, API 30 |
CustomTabsService resolution found no service; HTTPS VIEW resolves to the WebView shell. There is no billing service and no credential_service (API 30 predates Credential Manager), and no account is signed in. Glance and tiles are not exercised. |
| B | API 36 google_apis / google_apis_playstore, arm64 Android 16 |
GMS and Maps packages are present. Without an SDK app or API key these prerequisites do not establish Maps SDK rendering. |
| B | Both API 36 images | The WebView provider is com.google.android.webview, which is updatable, and Chrome supplies the Custom Tabs service. Embedding and provider updates are not exercised. |
| B | Both API 36 images | credential_service_primary names com.google.android.gms/.auth.api.credentials.credman.service.PasswordAndPasskeyService. This is a provider setting, not a completed credential flow. |
| B | API 36 billing and payment prerequisites | google_apis ships a Play Store stub with no InAppBillingService.BIND service; google_apis_playstore supplies it. Neither has an account, a Wallet package or NFC/HCE features. Purchases and Google Pay TEST are not exercised. |
| B | API 36 model delivery | No standalone ML Kit/barcode package is installed; GMS package metadata mentions barcode/ML Kit modules. Bundled inference, unbundled downloads and code-scanner behavior are not exercised. |
| B | API 36 build access | google_apis is a userdebug build and allows adb root. The Play Store image is a user build. |
| C | API 36 google_apis, GMS disabled |
Disabling GMS for user 0 with pm disable-user does not clear the Credential Manager provider setting: it can still name the disabled GMS service, and the resulting behavior is not tested. Billing stays absent. |
| D | iOS 26.5 (23F77), 27.0 (24A434) | Runtime roots contain MapKit, WebKit, StoreKit, PassKit, AuthenticationServices, PhotosUI, Vision, VisionKit, AVFoundation, CoreNFC and WidgetKit, and the Maps, Photos and Preferences apps are present. This is framework presence only; SDK behavior is not exercised. |
| D | iOS WebKit and StoreKit | MobileSafari’s version is not a WKWebView version probe. StoreKitTest is a toolchain framework and is absent from runtime roots; SKTestSession and StoreKit Testing CLI synchronization are not exercised. |
Provisioning¶
ANDROID_TAG_PREFERENCE in src/devices/deviceProvisioning.ts ranks
google_apis > default > google_apis_playstore when comparing images of equal
API level and ABI. The default preference therefore supplies GMS but does not
supply a working Play Billing service on the API 36 google_apis image. See
device resources for googlePlayServices disabling.
Provisioning does not switch to google_apis_playstore for a session that wants
Play-dependent features. That image is a user build that refuses adb root, and
Play Billing on it still needs a signed-in Google account, which no captured image
has (evidence B). Choosing it automatically would give up root without making a
purchase flow work.
Backend advertisement (#14302, contract only)¶
A spec picks an SDK backend only through its module’s own backend field, such as
the map node’s backend (#14308) or the commerce catalog’s backend (#14314). It
never names an SDK or a URL. Runtimes advertise backends as capability strings, and
the report carries no separate backend field:
- The module’s default backend (
autofor maps,fakefor commerce) needs only the module capabilityprototype_platform_<module>_v1. A module without abackendfield, such as fake sign-in (auth, #14303), has only its default. - Each other backend is one capability string,
prototype_platform_<module>_<backend>_v1, for exampleprototype_platform_map_google_v1orprototype_platform_commerce_storeKitTest_v1. The backend name is spelled as in the spec’sbackendvalue. - A runtime advertises a backend capability only while that backend can work on
this device. Google Maps needs a host-configured key and GMS; Play Billing needs
an image that serves
InAppBillingService.BIND. A backend that becomes usable later appears in the next capability report. The spec does not change. - The
platformModulestable inschemas/prototype-spec-contract.jsonlists each module’s non-default backends and their capabilities next to its calls. The generated platform gates then refuseshow,patchandreplaceNodefor abackendvalue whose capability is absent, with the field path, as they do for per-call capabilities. ProtoViewerbundle.jsonrequireslists the same strings.
No module defines a non-default backend yet, so no gate exists. The module that adds the first one adds its table entry and gate.