Upload a build
SpawnDroid accepts one APK or one AAB. Here is how to get a single APK from the bundles and archives you may already have.
SpawnDroid installs one APK or one AAB per upload. It does not unpack an XAPK, APKS or ZIP bundle. The upload dialog checks the archive before sending it, so a bundle is rejected before any bytes leave your browser.
What each file is
| File | What it is | Upload it? |
|---|---|---|
.apk | One installable Android package | Yes |
.aab | An Android App Bundle from the Play pipeline | Yes — SpawnDroid converts it on launch |
.xapk | A ZIP of a base APK plus split APKs and manifest.json | No |
.apks | A bundletool split archive with toc.pb | No |
.zip | A generic ZIP, a renamed bundle, or an app archive | No |
Android Studio
Build → Build Bundle(s) / APK(s) → Build APK(s) writes a debug APK to
app/build/outputs/apk/debug/. For a release build, use
Build → Generate Signed Bundle / APK → APK.
Gradle
# Debug APK
./gradlew assembleDebug
# app/build/outputs/apk/debug/app-debug.apk
# Release APK
./gradlew assembleRelease
# app/build/outputs/apk/release/app-release.apkbundleRelease writes an .aab under app/build/outputs/bundle/release/; that
is also accepted.
Flutter
flutter build apk --debug
# build/app/outputs/flutter-apk/app-debug.apk
flutter build appbundle
# build/app/outputs/bundle/release/app-release.aabflutter build apk --split-per-abi produces several APKs. Upload the one for
the device you are testing (usually app-arm64-v8a-release.apk), not the whole
output folder.
React Native and Expo
# Bare React Native
cd android && ./gradlew assembleDebug
# android/app/build/outputs/apk/debug/app-debug.apkFor an Expo project, eas build -p android --profile preview produces an APK
when the profile sets "android": { "buildType": "apk" }; the default
production profile produces an AAB.
If all you have is an XAPK or APKS
An XAPK is a container, not an installable package. Use the base APK inside it only when you know the app does not need its split APKs. For an APKS, ask bundletool for a universal APK:
bundletool build-apks --bundle=app-release.aab --output=app.apks \
--mode=universal
unzip app.apks universal.apkUpload universal.apk. If the app depends on Play Services or a split that is
not in the universal APK, it may not behave the same way; a single APK or the
AAB is the reliable path.
Renamed files
Changing .xapk to .apk does not change the archive. The upload check reads
the ZIP entries, so a renamed bundle is still rejected. Rename it back and use
the steps above.
Was this page helpful?