Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ivanopcode/acfeb79af7993c4627ee8275b3348d7d to your computer and use it in GitHub Desktop.
Save ivanopcode/acfeb79af7993c4627ee8275b3348d7d to your computer and use it in GitHub Desktop.
iOS Guide – Creating Unsigned iOS App Builds

Creating Unsigned iOS App Builds

⚠️ Warning: Unsigned builds are primarily for development/testing purposes and cannot be installed on physical devices.

Build Methods

Method 1: Command Line Approach (Recommended for CI/CD)

1. List Available Schemes

For .xcodeproj:

xcodebuild -list -project 

For .xcworkspace:

xcodebuild -list -workspace 

2. Create Unsigned Archive

For .xcodeproj:

xcodebuild archive \
  -project  \
  -scheme "" \
  -archivePath unsigned.xcarchive \
  -configuration Release \
  CODE_SIGN_IDENTITY="" \
  CODE_SIGNING_REQUIRED=NO \
  CODE_SIGNING_ALLOWED=NO

For .xcworkspace:

xcodebuild \
  -workspace  \
  -scheme "" \
  -configuration Release \
  clean archive \
  -archivePath unsigned.xcarchive \
  CODE_SIGN_IDENTITY="" \
  CODE_SIGNING_REQUIRED=NO \
  CODE_SIGNING_ALLOWED=NO

Note: Use quotes around scheme names containing spaces!

3. Create IPA

cd unsigned.xcarchive/Products
mv Applications Payload
zip -r ../YourApp.ipa Payload

Method 2: Build Settings Modification

  1. In Xcode, select project in navigator
  2. Select target
  3. In Build Settings (All):
    // if some entries are absent in Xcode GUI, add them as User-Defined.
    CODE_SIGN_IDENTITY = ""
    CODE_SIGNING_REQUIRED = NO
    CODE_SIGNING_ALLOWED = NO
    DEVELOPMENT_TEAM = ""
    PROVISIONING_PROFILE_SPECIFIER = ""
    
  4. Product -> Archive

Common Issues & Solutions

If Build Fails

  1. Clean build folder:
    • Close Xcode
    • Product > Clean Build Folder (Shift + Command + K)
    • Delete derived data: rm -rf ~/Library/Developer/Xcode/DerivedData
    • Relaunch Xcode

If Archive Fails

  1. Ensure target is set to "Any iOS Device (arm64)"
  2. Verify all signing-related fields are cleared/disabled
  3. Remove any embedded provisioning profiles
  4. Check Build Settings for any remaining signing requirements
  5. For command line builds, verify scheme name and path accuracy

Important Notes

  • Unsigned builds can only run in iOS Simulator
  • Cannot be installed on physical devices without signing
  • Suitable for:
    • Development and testing
    • CI/CD pipelines
    • Security audits
    • Build verification
    • Custom signing workflows

IPA Creation Methods

Method 1: GUI Approach

  1. Locate xcarchive with unsinged app build
  2. Right-click > Show Package Contents
  3. Navigate to Products folder
  4. Rename "Applications" to "Payload"
  5. Right-click Payload > Compress
  6. Rename "Payload.zip" to "YourApp.ipa"

Method 2: Automated Script

Save this script as mkipa in /usr/local/bin with executable permission: See script help for usage info.

https://gist.github.com/ivanopcode/d0219b082625584b1de215c1049a5522

 
 
 *Ivan Oparin, 2024*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment