Skip to content

App Distribution

App Distribution lets you build and publish native iOS and Android apps directly from the admin panel. Configure your signing credentials, upload the required files, and trigger builds with one click.

App Distribution

Before distributing your app, complete these steps in App Configuration:

RequirementWhere to Set
App NameApp Configuration
App IconApp Configuration → Branding Assets
App LogoApp Configuration → Branding Assets
Privacy Policy URLApp Configuration → URLs
Website URLApp Configuration → URLs

Setting up iOS distribution requires an Apple Developer account and several signing files. Follow each step in order.

If you haven’t already, enroll at developer.apple.com/programs. The annual membership ($99/year) is required to distribute apps on the App Store.

An App ID (bundle identifier) uniquely identifies your app on the App Store.

  1. Go to developer.apple.com/account/resources/identifiers

  2. Click the + button to register a new identifier

  3. Select App IDs and click Continue

  4. Select App as the type and click Continue

  5. Enter a Description (e.g., “My Streaming App”) and an Explicit Bundle ID (e.g., com.yourcompany.yourapp)

  6. Click Register

A distribution certificate signs your app binary so Apple can verify it came from you.

  1. Go to developer.apple.com/account/resources/certificates

  2. Click the + button to create a new certificate

  3. Select Apple Distribution and click Continue

  4. You’ll need a Certificate Signing Request (CSR). On your Mac, open Keychain Access → Certificate Assistant → Request a Certificate from a Certificate Authority

  5. Enter your email, leave CA Email blank, select Saved to disk, and click Continue

  6. Upload the .certSigningRequest file to the Apple Developer portal and click Continue

  7. Download the generated .cer file and double-click it to install in Keychain Access

The build system needs the certificate in .p12 format (which includes the private key).

  1. Open Keychain Access on your Mac

  2. In the login keychain, find your distribution certificate under My Certificates (it will say “Apple Distribution: Your Name”)

  3. Right-click the certificate and select Export

  4. Choose Personal Information Exchange (.p12) as the format

  5. When prompted for a password, leave the password field blank and click OK. The build system expects a .p12 exported with no password.

  6. Save the .p12 file

The API key allows the build system to upload your app to App Store Connect and manage TestFlight.

  1. Go to appstoreconnect.apple.com/access/integrations/api

  2. Click the + button to generate a new key

  3. Enter a name (e.g., “CI Build Key”) and select the App Manager role

  4. Click Generate

  5. Download the .p8 key file immediately — you can only download it once

  6. Note the Key ID (shown in the keys list) and the Issuer ID (shown at the top of the page)

Upload your signing files to the platform:

  1. In the admin panel, go to App Studio → Distribution → iOS
  2. Upload the following files:
FileDescription
.p12Distribution certificate
.p8App Store Connect API key

In App Studio → Distribution → iOS, enter the following settings:

SettingValueExample
Bundle IDThe bundle identifier registered in step 2com.yourcompany.yourapp
Development Team IDYour Apple Developer team ID (10-character alphanumeric)WUZNCH97X6
API Key IDThe Key ID from step 4ABC1234DEF
API Key Issuer IDThe Issuer ID from step 412345678-...

Setting up Android distribution requires a Google Play Developer account. The signing keystore is automatically generated by the platform.

If you haven’t already, register at play.google.com/console/signup. There is a one-time $25 registration fee.

  1. Go to play.google.com/console

  2. Click Create app

  3. Fill in the app name, default language, app type (App), and whether it’s free or paid

  4. Accept the declarations and click Create app

A service account allows the build system to upload your app to Google Play automatically.

  1. Go to console.cloud.google.com

  2. Create a new project (or select an existing one)

  3. Enable the Google Play Android Developer API:

    • Go to APIs & Services → Library
    • Search for “Google Play Android Developer API”
    • Click Enable
  4. Create a service account:

    • Go to APIs & Services → Credentials
    • Click Create Credentials → Service Account
    • Enter a name (e.g., “Play Store Upload”) and click Create and Continue
    • Skip the optional role and user access steps
    • Click Done
  5. Create a JSON key:

    • Click on the service account you just created
    • Go to the Keys tab
    • Click Add Key → Create new key
    • Select JSON and click Create
    • Save the downloaded GoogleCloudServiceKey.json file
  6. Link the service account to Google Play Console:

    • Go to play.google.com/consoleUsers and permissions
    • Click Invite new users
    • In the email address field, enter the service account email (found on the service account details page in Google Cloud Console, e.g. [email protected])
    • Under App permissions, select your app and click Apply
    • Under Account permissions, enable at minimum: Release to production, exclude devices, and use Play App Signing
    • Click Invite user and then Send invite

The Application ID is the unique package name that identifies your app on Google Play. It is permanently baked into the app binary and cannot be changed after the first upload to Google Play.

  1. In the admin panel, go to App Studio → Distribution → Android

  2. Enter your Application ID using reverse domain notation (e.g., com.yourcompany.yourapp)

  3. The field saves automatically

Upload your files to the platform:

  1. In the admin panel, go to App Studio → Distribution → Android
  2. Upload the following files:
FileDescription
GoogleCloudServiceKey.jsonGoogle Play API service account key

Google Play requires the very first app bundle to be uploaded manually through the Play Console. The API cannot create a new app listing — it can only update existing ones.

  1. Trigger a build from the admin panel — the build will succeed and produce an AAB file

  2. Download the AAB from the admin panel (App Studio → Distribution → Android → Download)

  3. In Google Play Console, go to your app → Testing → Internal testingCreate new release

  4. Upload the AAB file and complete the release

In App Studio → Distribution → Android, verify that all fields are filled in and no validation errors are shown before triggering a build.


Once all configuration and signing assets are in place:

  1. Go to App Studio → Distribution

  2. Select the platform (iOS or Android)

  3. Optionally set a version number (defaults to the current version)

  4. Click Build

The build is submitted to the CI/CD pipeline. iOS builds typically take 60-90 minutes; Android builds take 15-30 minutes.

After triggering a build, the Distribution page shows the current status:

StatusMeaning
BuildingThe build is in progress
SuccessThe build completed and was uploaded to the app store
FailedThe build failed — check the error message for details

The status updates automatically as the build progresses.

iOS: “Bundle ID is required for Apple distribution”

Section titled “iOS: “Bundle ID is required for Apple distribution””

The Bundle ID has not been set. Go to App Studio → Distribution → iOS and enter your Bundle ID (e.g., com.yourcompany.yourapp). This must match the App ID registered in your Apple Developer account. See step 2 above.

iOS: “Unable to authenticate with App Store Connect”

Section titled “iOS: “Unable to authenticate with App Store Connect””

The API key credentials are incorrect. Double-check:

  • The API Key ID and Issuer ID in App Configuration
  • The uploaded .p8 file matches the key ID
  • The API key has the App Manager role in App Store Connect

Android: “Application ID is required for Android distribution”

Section titled “Android: “Application ID is required for Android distribution””

The Application ID has not been set. Go to App Studio → Distribution → Android and enter your Application ID (e.g., com.yourcompany.yourapp). This is the unique package name for your app on Google Play. See step 4 above.

Android: “Google Play service account not found”

Section titled “Android: “Google Play service account not found””

The GoogleCloudServiceKey.json file is missing or wasn’t uploaded. Upload it via the Distribution page.

Android: “Package name must be specified”

Section titled “Android: “Package name must be specified””

Same as the Application ID error above. The Application ID field on the Distribution page must be filled in before building.

Android: “Upload to Google Play failed”

Section titled “Android: “Upload to Google Play failed””

The service account may not have the correct permissions. Verify:

  • The service account is linked in Google Play Console → Settings → API access
  • The service account has permission to release to production for your app
  • The Google Play Android Developer API is enabled in your Google Cloud project

Check that all required configuration is set in App Configuration. The Distribution page shows validation errors for missing fields.