OTA app distribution
Over-the-air installation of an iOS or Android app via a link, bypassing the App Store and Play Store. Used for beta testing, ad-hoc builds, in-house enterprise apps, and pre-release QA. The developer uploads a build, a server generates an install manifest, and the link is shared with testers — who open it on their device and tap to install.
App On The Go is purpose-built for OTA: drop an .ipa, .apk, or .aab and get a shareable install link in seconds. See the full IPA OTA install guide for the technical flow.
IPA
An iOS app archive — a ZIP file containing the .app bundle plus its metadata. Produced by Xcode via Archive → Export, or by automation tools like Fastlane's gym. Installed over the air through Apple's signed plist + itms-services:// URL scheme.
An .ipa is signed at build time using a developer certificate and a .mobileprovision profile. Inspect any .ipa's metadata with the IPA Analyzer tool.
APK
An Android Package — a single signed archive containing the app's compiled code and resources. The classic Android distribution format, directly installable on any Android device by downloading + tapping.
APKs are signed with one or more of three signature schemes (v1, v2, v3). Inspect an APK's manifest, permissions, and SDK targets with the APK Analyzer tool.
AAB
The Android App Bundle — Google's modular publish format introduced in 2018. The .aab itself is not installable on a device; it's a packaging format the Play Store uses to generate per-device split APKs at install time.
To sideload or beta-distribute an .aab outside the Play Store, it must be converted to a universal APK using bundletool. App On The Go runs this conversion automatically on upload. See the AAB inspector + bundletool guide.
UDID
The Unique Device Identifier on iOS — a 40-character hexadecimal string that uniquely identifies an iPhone, iPad, or iPod. Required to register a device on an Ad Hoc provisioning profile, which is what lets a beta build install on that specific device.
Traditional ways to find a UDID (iTunes, Xcode, Finder) require a Mac and a USB cable. The Profile Service flow at apponthego.com/what-is-my-udid.php is the only Apple-sanctioned way to get one directly from a device, with no cable.
.mobileprovision (provisioning profile)
An iOS provisioning profile — a PKCS#7-signed envelope listing the team, app ID, entitlements, registered UDIDs, and signing certificates allowed to install a build onto registered devices. Generated in the Apple Developer Portal, embedded in every signed .ipa as embedded.mobileprovision.
Profile types: Development (debug builds on registered devices), Ad Hoc (release builds on registered devices, max 100 per device family per year), In-House (Enterprise builds on unlimited internal devices), App Store (production release).
Decode the contents of any .mobileprovision file with the .mobileprovision decoder.
bundletool
Google's official Java command-line tool that converts an Android App Bundle (.aab) into installable APK variants — split APKs per device, or a single universal APK suitable for sideloading.
Common commands:
bundletool build-apks --mode=universal— produce a single signed universal APKbundletool install-apks— push the split set to a connected device via adbbundletool extract-apks— pull a single APK out of a .apks zip
Download the latest bundletool.jar from github.com/google/bundletool/releases. App On The Go runs bundletool server-side on every .aab upload so you don't have to install Java on your machine.
Signed plist (manifest plist)
An XML property-list manifest signed and served over HTTPS. iOS uses it to install apps over the air — the plist points to the .ipa file, declares its bundle ID, version, and display name, and is referenced by the itms-services:// URL.
itms-services
Apple's URL scheme that triggers an over-the-air install on iOS. Format:
itms-services://?action=download-manifest&url=https://example.com/manifest.plist
Tapping a link with this scheme on iPhone or iPad makes iOS fetch the signed plist, prompt the user with "Install AppName?", and download + install the referenced .ipa. The host serving the plist must use HTTPS; iOS refuses plain HTTP.
Ad Hoc distribution
An iOS distribution mode for sharing builds with a fixed list of registered devices. Each device's UDID must be added to the provisioning profile before it can install. Apple caps each Developer Program team at 100 registered devices per device family per membership year.
In-House (Enterprise) distribution
An iOS distribution mode for organisations enrolled in the Apple Developer Enterprise Program. Allows unlimited internal devices to install without UDID registration. Costs $299/year and requires a D-U-N-S Number; Apple gates the program tightly to prevent abuse.
Sideload
Installing an app onto a device from any source other than the platform's official store. On Android this typically means downloading and tapping an .apk; on iOS it means using an OTA install link or running through Xcode on a connected device.
Bundle ID
The reverse-DNS identifier for an iOS or macOS app (e.g. com.example.myapp). Declared in the app's Info.plist as CFBundleIdentifier. Must match between the app binary, the provisioning profile, and the App Store Connect listing.
Package name
Android's equivalent of an iOS bundle ID — a reverse-DNS string declared in AndroidManifest.xml as the package attribute on the root <manifest> element. Must be unique on the device and on the Play Store.
Entitlements
Capability flags inside an iOS provisioning profile that grant the app access to specific system features. Common entitlements include:
aps-environment— Push Notificationscom.apple.developer.associated-domains— Universal Links / Web Credentialscom.apple.security.application-groups— App Groupscom.apple.developer.healthkit— HealthKit accesscom.apple.developer.icloud-container-identifiers— iCloud containers
Universal APK
A single APK produced from an .aab that contains code and resources for all device architectures (arm64-v8a, armeabi-v7a, x86_64, x86) and screen densities. Larger than per-device split APKs but installable on any Android device — the right format for sideloading and beta distribution.
Split APK
A per-device-config APK produced from an .aab — one per architecture, one per density, one per language. The Play Store streams the relevant splits to each device at install time. Not suitable for direct sideloading because the device installer expects a single self-contained file.
QR install link
A QR code that encodes an OTA install URL. Testers scan it with their device camera, tap the popup, and the install starts. Standard pattern for in-person beta hand-offs (offices, conferences, hardware-testing labs). Every install link generated on App On The Go also renders as a QR code automatically.
Stable install link
A developer-chosen install URL (e.g. https://i.apponthego.com/myapp-beta) that replaces its target build every time a new version is uploaded with the same slug. Testers always get the latest. Old per-build URLs keep working in parallel, so anyone with a direct link to v1.3 still gets v1.3 specifically.
TestFlight
Apple's official beta-distribution platform for iOS apps. Requires uploading the build to App Store Connect, passing Apple's Beta App Review, and managing testers via email invites. App On The Go is the faster alternative for ad-hoc and pre-TestFlight builds.
Play Internal Testing
Google Play's internal-tester distribution channel for Android. Faster than open testing but still requires a Play Console upload, tester-list management, and a Google account per tester.
Xcode
Apple's official IDE for iOS, macOS, watchOS, and tvOS development. Used to build, sign, and archive iOS apps into .ipa files.
Fastlane
An open-source automation toolchain for iOS and Android build and release tasks. Common lanes:
gym— build a signed .ipa from an Xcode projectmatch— sync signing certificates and provisioning profilespilot— upload a build to TestFlightsupply— upload an .aab or .apk to the Play Store
The Fastlane integration guide shows the exact lane to push every Fastlane-built .ipa to App On The Go automatically.