
.ipa vs .apk vs .aab: Mobile App File Formats Explained (2026)

An .ipa is an iOS app package, an .apk is an installable Android package, and an .aab is an Android publishing format that Google Play turns into APKs. The one that surprises people: you can install an .ipa or an .apk directly, but you can't install an .aab — you have to generate an APK from it first. Here's each format, side by side.
The comparison
| Format | Platform | Directly installable? | Used for | Store requirement |
|---|---|---|---|---|
| .ipa | iOS | Yes (signed for the device) | Distributing/installing iOS apps | App Store accepts it |
| .apk | Android | Yes | Installing Android apps directly | Allowed, but new apps upload .aab |
| .aab | Android | No | Uploading to Google Play | Required for new Play apps |
.ipa — the iOS package
An .ipa (iOS App Store Package) is a ZIP archive containing the built app, its Info.plist, an embedded provisioning profile and the code signature. It installs on a device if it's signed correctly for that device. See what's inside an .ipa for the full anatomy.
.apk — the installable Android package
An .apk (Android Package) is the classic installable Android format. Hand someone an APK and — with unknown-sources allowed — they install it directly. It's what you distribute for off-Play testing.
.aab — the Android publishing format
An .aab (Android App Bundle) is what you upload to Google Play. Play uses it to generate optimized APKs tailored to each device (the smaller downloads users get). New apps on Play must be uploaded as an .aab. But it is not installable — which is the single most common Android distribution gotcha.
You can't install an .aab — use a universal APK
Because Play generates the installable APKs on its side, distributing off-Play means building one yourself. Use Google's bundletool to produce a universal APK that runs on any device:
bundletool build-apks --bundle=app.aab --output=app.apks --mode=universal
unzip -p app.apks universal.apk > app.apk
Don't distribute split APKs to testers — they fail to install on Android 10+ without their companion splits. The universal APK avoids that. See distributing an Android app without the Play Store and Play testing tracks.
What this means for distribution
When you send builds to testers off-store, you send an .ipa (iOS) and an .apk (Android) — never an .aab. A distribution tool like Appisto accepts both and installs them over the air, so you don't have to think about the format beyond producing a universal APK for Android.
Frequently asked questions
Can I install an .aab file?
No — it's a publishing format Play uses to generate APKs. Build a universal APK with bundletool and install that.
What's the difference between APK and AAB? An APK is directly installable; an AAB is an upload format Play turns into per-device APKs and isn't installable itself. New Play apps must upload an AAB.
How do I convert an AAB to an APK?
Run bundletool build-apks --mode=universal to produce a single installable APK, then extract it from the .apks archive.
Key takeaways
.ipa= iOS, installable when signed;.apk= Android, installable;.aab= Android publishing format, not installable.- New Google Play apps must be uploaded as an
.aab. - For off-Play testing, build a universal APK with
bundletool— never distribute an.aabor bare split APKs. - Tools like Appisto install
.ipaand.apkbuilds over the air. See what is an .ipa file.
Ready to streamline your internal app distribution?
Start sharing your app builds with your team and clients today.
No app store reviews, no waiting times.