Skip to Content
Platform GuidesiOS Builds

iOS Builds

This guide covers building NativeScript apps for iPhone, iPad, and the App Store.

Distribution Types

TypeUse CaseProvisioning
appstoreApp Store / TestFlightApp Store Distribution
adhocDirect installation (limited devices)Ad Hoc Distribution
enterpriseIn-house enterprise appsEnterprise Distribution

App Store

For App Store and TestFlight distribution:

norrix build ios release appstore

Ad Hoc

For testing on registered devices:

norrix build ios release adhoc

Enterprise

For in-house enterprise distribution:

norrix build ios release enterprise --team-id ABC123XYZ0

Code Signing Options

Option 1: Manual Certificates

Provide your own .p12 certificate and provisioning profile:

norrix build ios release appstore \ --p12 ./certs/distribution.p12 \ --p12-password $P12_PASSWORD \ --profile ./profiles/AppStore.mobileprovision

Requirements:

  • .p12 certificate exported from Keychain
  • .mobileprovision profile from Apple Developer Portal
  • Certificate password

Option 2: App Store Connect API

Use the App Store Connect API for automatic certificate and profile management:

norrix build ios release appstore \ --asc-key-id ABC123DEF4 \ --asc-issuer-id 12345678-1234-1234-1234-123456789012 \ --asc-key ./AuthKey_ABC123.p8

Setup:

  1. Go to App Store Connect → Users and Access → Keys 
  2. Create a new API Key with Admin access
  3. Download the .p8 file (only downloadable once)
  4. Note the Key ID and Issuer ID

Benefits:

  • No manual certificate management
  • Automatic profile generation
  • Simplified CI/CD setup

Team ID

Your Apple Developer Team ID is required for signing.

Find your Team ID:

  1. Go to Apple Developer Portal 
  2. Navigate to Membership
  3. Copy the Team ID (10 alphanumeric characters)

Provide via CLI:

norrix build ios release appstore --team-id ABC123XYZ0

Or in config:

// norrix.config.ts export default defineConfig({ ios: { teamId: 'ABC123XYZ0', }, });

Configuration File

Store iOS settings in norrix.config.ts:

import { defineConfig } from '@norrix/cli'; export default defineConfig({ ios: { teamId: 'ABC123XYZ0', distributionType: 'appstore', // Option 1: Manual certificates p12Path: './certs/distribution.p12', provisioningProfilePath: './profiles/AppStore.mobileprovision', // Option 2: ASC API (alternative) // ascApiKeyId: 'ABC123DEF4', // ascIssuerId: '12345678-1234-1234-1234-123456789012', // ascPrivateKeyPath: './AuthKey.p8', }, });

Build Artifacts

Successful iOS builds produce:

ArtifactDescription
.ipaSigned iOS application package
.dSYMDebug symbols for crash reporting

Artifacts are uploaded to S3 and available in the dashboard.


Debug Builds

For development and debugging:

norrix build ios debug

Debug builds:

  • Include debug symbols
  • Enable debugging features
  • Faster build times

Version and Build Number

Specify Version

norrix build ios release appstore --version 1.2.0

Specify Build Number

norrix build ios release appstore --build-number 42

Auto-Increment

If --build-number is omitted, Norrix automatically increments based on previous builds for the project.


Troubleshooting

Code Signing Failed

  • Verify Team ID matches your Apple Developer account
  • Check certificate hasn’t expired
  • Ensure provisioning profile matches bundle ID
  • Confirm profile includes target device (for Ad Hoc)

ASC API Errors

  • Verify Key ID and Issuer ID are correct
  • Confirm .p8 file hasn’t been modified
  • Check API Key has Admin access

Build Number Conflicts

  • Use --build-number to set explicitly
  • Each App Store build needs a unique build number
  • Build numbers must only increase