iOS native apps

Build your Swift or Objective-C app for the iOS Simulator, zip the .app with ditto and upload it to Pie. The build has to run on its own, without connecting to external services at startup.

Before you start

  • Xcode: A current version installed on macOS
  • iOS project: Your native iOS app project
  • iOS Simulator: Configured with a recent iOS version
  • Build access: Access to the project’s build settings

Point the build at a test or staging environment. See Prepare mobile builds for the requirements that apply to every platform.

Launch your project in Xcode

  1. Open your iOS app project in Xcode
  2. Select your app as the build target from the scheme selector
  3. Choose an iOS Simulator with a recent iOS version, not a connected device

Clean your build environment

Select Product → Clean Build Folder (⇧⌘K). This clears cached artifacts, so the build starts fresh.

Build your application

  1. Select Product → Build (⌘B)
  2. Wait for the build to finish
  3. Check the Issue Navigator for build errors

Locate your build

  1. Select Product → Show Build Folder in Finder
  2. Open Build/Products/Debug-iphonesimulator/, the default path
  3. Find your .app file. It appears as type “Application”.
ℹ️
If you’ve changed your build settings or product name, the location may differ. Look for a folder ending in -iphonesimulator.

Test the build in the simulator

Before you upload, check that the build works:

  1. Open iOS Simulator
  2. Drag your .app file into the simulator to install it
  3. Launch the app and check that it starts
  4. Test basic navigation and core functionality
  5. Confirm it connects to your test environment, not production

Package for upload

Zip the .app with ditto, so the .app sits at the top level of the zip:

ditto -c -k --sequesterRsrc --keepParent YourApp.app YourApp.zip

Selecting Compress on the .app in Finder makes the same zip. Don’t upload an .ipa: Pie refuses it.

Upload to Pie

  1. In Pie, open Builds and select Upload build.
  2. Choose the zipped .app.
  3. Enter a Build ID and select Submit for testing.

What you’ll see

Build uploaded means the file reached Pie, and the build appears in Builds. It doesn’t mean Pie accepted the build. If Pie refuses it, such as a device build, the portal shows nothing more, and the build can still be picked under Select Build, but a run on a device build fails. Pick your simulator build there when you start a run. Then tell Pie how to sign in and what to test with the post-upload requirements.

Build requirements

Build type

  • The build must be a simulator build, not a device build.
  • Device builds use a different architecture and don’t work on Pie.

Environment configuration

  • Point all environment variables at your test or staging servers.
  • Make sure API endpoints are reachable from external networks.
  • Remove development-only features or debug panels that shouldn’t be tested.

Troubleshooting

Build location not found

Problem: You can’t find the build in the default location.

Solutions:

  • Check whether you have custom build paths in your project settings
  • Search for .app files in the entire Build/Products/ directory
  • Check that the build finished without errors

Simulator vs device build error

Problem: A device build shows Build uploaded and appears under Select Build, but Pie refuses it.

Solutions:

  • Verify you selected an iOS Simulator, not a device, as the build destination
  • Check the build path ends with -iphonesimulator, not -iphoneos
  • Rebuild after confirming the simulator is selected

App crashes on launch

Problem: The app crashes immediately when opened in the simulator.

Solutions:

  • Verify all required frameworks and dependencies are included
  • Check console logs in Xcode for specific error messages
  • Check that the app points at the test environment, not production
  • Confirm all environment variables are set

Network connection issues

Problem: The app can’t connect to backend services.

Solutions:

  • Verify test endpoints are accessible from external networks
  • Check firewall rules allow incoming connections
  • Confirm API keys and credentials are for the test environment
  • Test endpoint connectivity from a different network

Still stuck? Contact support@pie.inc with a description of the problem, any build error messages, your Xcode and macOS versions, and screenshots of relevant error dialogs.

Next steps

Last updated on