> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.qa.army/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.qa.army/_mcp/server.

# Android and iOS Testing

> Upload and verify immutable Android and iOS builds in a Mobile Project.

> **Warning**
>
> Build registration is available. Native device selection, execution, Live View,
> and replay are not available yet. A verified file does not mean a Test has passed.

## Upload a build

1. Open or create a **Mobile Project** in your Workspace.
2. On its **Tests** page, choose **Upload build** under **App builds**.
3. Select an Android `.apk` or an iOS simulator `.app.zip`, `.app.tar.gz`, or
   `.app.tgz` archive, up to 512 MiB.
4. Wait for **File verified**. Open **Build identity** to see the build ID and
   SHA-256 checksum. **Refresh builds** reloads the saved registrations.

Use a signed, installable APK for Android. An unsigned file from a build's
`intermediates` directory may upload successfully but cannot be installed.
For iOS, use a simulator app archive rather than an `.ipa`. Include the code and
assets needed to start without Expo Go or a Metro development server.

QA.army preserves the original file and verifies its size and checksum. Build
registration does not validate installation or app behavior. Registered bytes
cannot be overwritten; upload a new build when your app changes.

If an upload or verification is interrupted, refresh the list and select the
same original file to resume. Selecting the same file again reuses its
registration for your account and Project.

## Use the API, CLI, or MCP

Use an authenticated user session or profile API key with current Workspace
membership. Agent setup credentials cannot register builds.

The API provides `POST /v1/projects/{projectId}/builds` to reserve an upload,
`GET /v1/projects/{projectId}/builds` to list registrations, and
`POST /v1/builds/{buildId}/complete` to verify uploaded bytes. See the
[Product API contract](https://api.qa.army/v1/openapi.json) for metadata and responses.

The CLI provides `builds list`, `builds reserve`, and `builds complete`; follow
the [current CLI guide](/interfaces/cli) for installation. MCP exposes
`builds.list`, `builds.reserve`, and `builds.complete` from its current source.
Reserve with a stable request key, then PUT the exact original file to the
returned upload URL using its supplied headers. Do not send your Product API
bearer token to that storage URL. Complete registration after the upload.

## Prepare native journeys

Record operating-system requirements, device capabilities, account roles, and
any handoff to a browser or another app in your Test specification.

Keep payment, notification, camera, microphone, deep-link, and authentication
needs explicit. Mobile delivery-pipeline integrations and device-service
testing are also unavailable.