Skip to main content

Creating .ipa Files for Appium and XCUITest

We use a resigning process to embed our own provisioning profile into the uploaded .ipa file. With the profile in place, the app will be allowed to install and launch on cloud devices. The functionality of the app itself remains completely unmodified.

You can also use .ipa files generated by tools outside of Xcode.

Real Devices#

Creating .ipa Files for Appium Testing#

If you need to maintain your own provisioning profile in the .ipa file, disable the App Resigning option when you set the Device Settings for your app in the cloud.

You can also use the Appium capability resigningEnabled=false to disable app resigning. This option is available for private devices only.

Building an .app Bundle#

  1. Open your application project in Xcode.
  2. Select a Generic iOS Device or Any iOS Device (arm64) as your product's device target.
  3. In the Product menu, select Clean.
  4. In the Product menu, select Build.
  5. Navigate to your Xcode project's Products directory and find the generated .app file.

Building an .ipa from an .app Bundle#

  1. Create an empty directory with the name Payload.
  2. Move the .app file inside the Payload directory.
  3. Compress the Payload directory into an archive (.zip file) and give it a new name with .ipa appended to the end of the file name.
  4. Your .ipa file is now ready for upload to Sauce Labs.

Building an .ipa File#

You can use any of the existing methods of distribution for your iOS app, except for the App Store type. This means that you can choose any of the three other export methods: Ad Hoc, Enterprise, or Development.

  1. Open your app project in Xcode.
  2. Select Generic iOS Device or Any iOS Device (arm64) as your project's device target.
  3. In the Product menu, select Clean.
  4. In the Product menu, select Archive. When the archiving process completes, you'll see your app listed under Archives.
  5. Select your app and click Export.
  6. When prompted for an export method, select Ad Hoc, Enterprise, or Development.
  7. Set these Distribution options:
    1. App Thinning: None.
    2. Clear the selection Rebuild from Bitcode.
    3. Strip Swift symbols is optional.
    4. Clear the selection Include manifest for over-the-air installation.
  8. Select your Distribution Certificate and Provisioning Profile (Automatic or Manual). This will generate the .ipa file.
  9. When the file generation process completes, click Export and choose where to save the .ipa file.
  10. Your .ipa file is now ready for upload to Sauce Labs.

Creating an XCUITest Package#

saucectl v0.47.0+ supports archiving from .app to .ipa Testing with XCUITest.

  1. Open your application project in Xcode.

  2. Select Generic iOS Device or Any iOS Device (arm64) as your project's device target.

  3. Make sure that the your UI tests are part of a Target Membership and that those Targets are selected to be built in your Xcode Build scheme. Targets containing UI Tests are typically selected to be built at the "Test" build action.

    Xcode Build Options
  4. Generate your test package by selecting Product > Build For > Testing.

  5. Navigate to your Xcode project's Products directory and find the generated .app files.

Creating .ipa Files for XCUITest Testing#

Make sure that you set the same iOS version for your app and test runner iOS Deployment Target. If they don't match, your tests will run locally, but fail when you run them against Sauce Labs real devices.

To set the iOS version in your Xcode Project:

  1. Select the Project you want to build.
  2. Under Build Settings, set the iOS Deployment Target to the iOS version you want to use in your test. All target outputs of this project, including the app and your test runner, will be set to the same iOS version.

To set the iOS version in your Xcode Target:

  1. Select the Target for your Project.
  2. Under Build Settings, set the iOS Deployment Target to the iOS version you want to use in your test.
caution

This will also overwrite the Build Settings at the Project level to that iOS version. If you use this method, be aware that your Targets can become out of sync with each other and the Project settings, and your tests will break. If you change the iOS version for one target output, you may want to build the Project again to make sure all your targets are in sync.

Virtual Devices#

Building an .app Bundle#

  1. Open your application project in Xcode.
  2. Select any available simulator as your product's device target.
  3. In the Product menu, select Clean.
  4. In the Product menu, select Build.
  5. Navigate to your Xcode project's Products directory and find the generated .app file.
  6. Compress the .app file into an archive (.zip file). The .zip file is now ready to upload to Sauce Labs.