iOS
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
.ipa archives are not supported. If your CI produces an .ipa, you’ll need
a parallel simulator-slice job to upload to Revyl.Android
Three requirements:- Upload one installable
.apkartifact..aab,.apks, APK Set archives, and split APK archives are not supported. - Native libraries must include a supported 64-bit ABI. Revyl accepts
x86_64andarm64-v8a. APKs without native libraries are also supported. - APK must be debuggable (
android:debuggable="true"in the merged manifest).
Why a supported 64-bit ABI
Cloud emulators runx86_64 Android images with Android’s NDK translation layer enabled for arm64-v8a native code. APKs with either 64-bit ABI can run; APKs whose native libraries are only x86 or armeabi-v7a cannot. Default debug builds from every framework usually include a compatible ABI, so this mainly matters 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
Custom
abiFilters is the most common reason a build fails to install on Revyl.
If you’ve narrowed the ABI set for size reasons, include x86_64 or
arm64-v8a, or produce a separate Revyl-targeted APK variant with at least
one of them. Do not upload .apks files or ZIPs containing multiple split
APKs; Revyl does not install APK sets.Artifact size
Build artifacts may be up to 5 GiB. Revyl enforces this limit from the bytes it receives or reads from storage, regardless of any size reported by the upload client or source server. Validation uses a bounded 8 GiB temporary workspace for the artifact and any files extracted or repackaged from it. A compressed archive below 5 GiB can still be rejected if processing it would exceed that workspace.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 a simulator slice / supported Android ABI?
Why does Revyl insist on a simulator slice / supported Android ABI?
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.
Include
x86_64 or arm64-v8a, or produce a separate Revyl-targeted
variant with at least one of them. You do not need both ABIs in the same APK.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.