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

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

Jan Thalheim
Jan Thalheim
6 min read

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 .aab or bare split APKs.
  • Tools like Appisto install .ipa and .apk builds 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.