Revyl runs tests on cloud simulators (iOS) and emulators (Android), not physical devices. That single fact drives every requirement below.Documentation Index
Fetch the complete documentation index at: https://docs.revyl.com/llms.txt
Use this file to discover all available pages before exploring further.
iOS
| Required | Recommended |
|---|---|
Simulator-slice .app (or zipped .app). Built against the iphonesimulator SDK, not iphoneos. | Debug configuration. |
Why
Cloud simulators run a different CPU slice than physical iPhones. An.ipa produced for device distribution will not install on a simulator — simctl install rejects it with an arch mismatch. You need the .app bundle that Xcode/EAS produces when targeting the simulator.
How to satisfy it
| Framework | Knob |
|---|---|
| Xcode / Swift | xcodebuild -sdk iphonesimulator -configuration Debug |
| Expo (EAS) | ios.simulator: true on your build profile in eas.json |
| React Native (bare) | xcodebuild -sdk iphonesimulator (Pods + workspace) |
| Flutter | flutter build ios --simulator --debug |
.ipa archives are not supported. If your CI produces an .ipa, you’ll need
a parallel simulator-slice job to upload to Revyl.Android
Two requirements:- APK must include
x86_64in its ABI set. Revyl’s cloud emulators arex86_64;arm64-v8a-only APKs won’t install. - APK must be debuggable (
android:debuggable="true"in the merged manifest).
Why x86_64
Cloud emulators run a Google Playx86_64 system image. Install fails immediately if the APK has no x86_64 native libs. Default debug builds from every framework include all ABIs in one fat APK, so this only bites if you’ve narrowed abiFilters or android.ndkAbiFilters.
Why debuggable
Debuggable builds (android:debuggable="true" in the merged manifest) are what allow Revyl to walk the app sandbox via run-as <pkg> — the platform only permits that against debuggable apps on non-rooted (Play-image) emulators. That sandbox access powers the State tab: SharedPreferences, Jetpack DataStore, and your app’s SQLite databases. It also keeps a number of test-execution paths fast and reliable.
The runtime will install a non-debuggable release APK — tests still execute, video records, logs flow. You lose the State tab, and a class of debugging-dependent features. Don’t ship a release APK to Revyl by default; produce a debuggable variant for testing alongside whatever you ship to users.
How to satisfy it
| Framework | Knob |
|---|---|
| Gradle / Kotlin / Java | ./gradlew assembleDebug — debuggable + all ABIs by default |
| React Native (bare) | cd android && ./gradlew assembleDebug |
| Flutter | flutter build apk --debug |
| Expo (EAS) | The development profile (developmentClient: true, android.buildType: "apk") is debuggable and ships all ABIs |
Custom
abiFilters is the most common reason a build fails to install on Revyl.
If you’ve narrowed the ABI set for size reasons, keep x86_64 in it or produce
a separate Revyl-targeted variant. The full ABI set is only ~10–20 MB larger.FAQ
Can I use a physical-device archive (.ipa / non-debuggable release APK)?
Can I use a physical-device archive (.ipa / non-debuggable release APK)?
No.
.ipa won’t install on simulators. Release APKs install but lose the
State tab and other debugging-dependent paths. Use a debug build for Revyl.Why does Revyl insist on the simulator slice / x86_64?
Why does Revyl insist on the simulator slice / x86_64?
Cloud test infra runs on shared hosts. Simulators (iOS) and emulators
(Android) give us isolation and snapshot-restore. Physical-device farms
exist but aren’t what Revyl is.
What about Apple Silicon arm64 simulators?
What about Apple Silicon arm64 simulators?
Xcode produces a fat simulator
.app (x86_64 + arm64) by default.
Both slices are accepted; Revyl picks the right one at install time.My CI only produces release/production builds. What now?
My CI only produces release/production builds. What now?
Add a parallel debug job for Revyl. Most Gradle / Xcode / EAS projects
need only a single extra task or profile.
My build uses abiFilters for size reasons.
My build uses abiFilters for size reasons.
Add
x86_64 to the filter set, or produce a separate Revyl-targeted
variant that includes it. The full ABI set is only ~10–20 MB larger.Related
Framework Build Guides
Platform-specific build commands for Xcode, Gradle, RN, Flutter, Expo.
Apps & Builds
Upload, activate, and manage builds in your Revyl app.