Release a Build

Upload your application binary package to App Center to release it. App Center supports package uploads for Android, iOS, macOS, UWP, WPF, and WinForms apps.

Generating an application binary package

Android

For Android, you must produce a signed app bundle or APK file. For full details of this process, see the official Google documentation on preparing an app for release.

  1. Ensure you have updated the manifest and have a correctly configured Gradle build.
  2. In Android Studio, choose Build > Generate Signed Bundle / APK and follow the steps in the wizard to build the app bundle or APK.

Android Studio places built app bundles in project-name/module-name/build/outputs/bundle/ and APKs in project-name/module-name/build/outputs/apk/.

Note

You can only distribute Android app bundles to the Google Play Store, not to groups or individual testers.

iOS

For iOS, you must produce an IPA package for your application. For full details of this process, see the official Apple documentation.

  1. Register UDIDs for all hardware devices in your provisioning profile.
  2. In Xcode, go to Product > Archive to archive your app.
  3. Export the archive using the proper provisioning profile.

macOS

For macOS, you must produce an app.zip file. For full details of this process, see the official Apple MacOS documentation.

  1. Register a single device or register multiple devices in your Apple developer account.
  2. In Xcode, go to Product > Archive to archive your app.
  3. Export the archive using the proper provisioning profile.

UWP

For UWP, you must produce an app package. App Center supports releasing app packages of type .appx, .appxbundle, .appxupload, .msix, .msixbundle, .msixupload, or .zip. For full details of this process, see the official Microsoft UWP documentation.

WPF and WinForms

For WPF and WinForms, a variety of formats are supported. You can package your app in the UWP formats listed above or as a .zip or .msi package. If .zip or .msi are used, you must specify a build version.

Uploading the package

To upload a package to App Center, go to App Center, go to your app, then go to ** Distribute > Groups and select New release. Follow the steps in the wizard. Distributing a new release

You can include release notes as a part of your release, both in plain text or Markdown format. You can target your release to multiple groups or testers. App Center then makes this release available to those testers and the users who are part of the selected groups.

Setting release destinations

When releasing an iOS app, you can automatically provision your testers' devices. Select Next and review the release. If your app uses the Distribute SDK, then you can configure App Center to can make the release mandatory.

When App Center distributes a release, it sends an email notification of the new version to all testers set in the destinations. You can choose not to notify testers in the review tab.

Uploading using the App Center Command Line Interface

As an alternative to uploading from the App Center site, you can also upload your release using the appcenter distribute release command in the App Center CLI.

Uploading using the APIs

One other alternative for uploading releases is using the public App Center APIs.

  1. Pre-req: Obtain an API token. An API Token is used for authentication for all App Center API calls.

  2. Identify the {owner_name} and {app_name} for the app that you wish to upload to. These will be used in the URL for the API calls. For an app owned by a user, the URL in App Center might look like: https://appcenter.ms/users/JoshuaWeber/apps/APIExample. Here, the {owner_name} is JoshuaWeber and the {app_name} is ApiExample. For an app owned by an org, the URL might be https://appcenter.ms/orgs/Microsoft/apps/APIExample and the {owner_name} would be Microsoft.

  3. Upload a new release. This is done using 3 sequential API calls.

    a. Create an upload resource and get an upload_url (good for 24 hours) — POST /v0.1/apps/{owner_name}/{app_name}/release_uploads

    curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-API-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 'https://api.appcenter.ms/v0.1/apps/JoshuaWeber/APIExample/release_uploads'
    

    b. Copy the upload_url (will be a rink.hockeyapp.net URL) from the response in the previous step, and also save the upload_id for the step after this one. Upload to upload_url using a POST request. Use multipart/form-data as the Content-Type, where the key is ipa (key is always IPA even when uploading Android APKs) and the value is @/path/to/your/build.ipa.

     curl -F "ipa=@Versions_1_1_0_12.ipa" https://rink.hockeyapp.net/api/sonoma/apps/cacf9867-87f7-4649-a400-632a775dde2d/app_versions/upload\?upload_id\=c18df340-069f-0135-3290-22000b559634
    

    c. After the upload has finished, update upload resource's status to committed and get a release_url, save that for the next step — PATCH /v0.1/apps/{owner_name}/{app_name}/release_uploads/{upload_id}

    curl -X PATCH --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-API-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' -d '{ "status": "committed"  }' 'https://api.appcenter.ms/v0.1/apps/JoshuaWeber/APITesting/release_uploads/c18df340-069f-0135-3290-22000b559634'
    
  4. Distribute the uploaded release to a distribution group — PATCH /v0.1/apps/{owner_name}/{app_name}/releases/{release_id}

    curl -X PATCH --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-API-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' -d '{ "destination_name": "QA Testers", "release_notes": "Example new release via the APIs" }' 'https://api.appcenter.ms/v0.1/apps/JoshuaWeber/APITesting/releases/2'
    

Re-Release a build

To release a build to another distribution group, from any place in App Center go to Distribute > Releases and then select the release you want to distribute again. The release details page opens. Select the Distribute button in the upper right-hand corner of the screen and select the destination to start the re-release process. Follow the steps in the wizard and finally select Distribute to send the release to groups/testers or the store.

Mandatory Updates

Make a release mandatory to force all users to run the same version of your app. When you do this, App Center will installs the selected update on all tester devices.

You can only make a release mandatory if your app uses the App Center Distribute SDK. Make a release mandatory via the API or by selecting the Mandatory update checkbox in the review stage of distributing a release.

For mandatory releases, App Center displays a red dot next to the release icon in your releases table under a selected distribution group.