CLI Workflow: IPA Installation

I have a Mac Catalyst app bundle built from Rust. I am able to execute this bundle from my M2 Mac-Mini. I am wondering how might I go about creating a proper IPA archive in order to install to my iOS/iPadOS devices.

I am using the following code to generate and sign the app bundle:

cd "${APPDIR}/"
/usr/bin/codesign -s "Apple Development: <ID>" -fv ./counter.app
cd ./counter.app
zip -r ../counter.ipa *

I then use cfgutil to try to install to my iPhone that is plugged into my Mac-Mini:

cfgutil -v install-app ./counter.ipa

I receive the following error when trying to install:

Waiting for the device [1/4] [*******************************************]  100%
cfgutil: error: Information about an app could not be read.
(Domain: ConfigurationUtilityKit.error Code: 404)

"install-app" failed on <>'s iPhone (ECID: <>).

--- Summary ---
Operation "install-app" failed on 1 devices.

The contents of the app bundle before signing:

counter.app/
  - Geneva.ttf
  - counter
  - Info.plist

Contents of Info.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>CFBundleIdentifier</key>
  <string>com.example.counter</string>
  <key>CFBundleDisplayName</key>
  <string>counter</string>
  <key>CFBundleName</key>
  <string>counter</string>
  <key>CFBundleExecutable</key>
  <string>counter</string>
  <key>CFBundleVersion</key>
  <string>0.1.0</string>
  <key>CFBundleShortVersionString</key>
  <string>0.1.0</string>
  <key>CFBundleDevelopmentRegion</key>
  <string>en_US</string>
  <key>UILaunchStoryboardName</key>
  <string></string>
  <key>LSRequiresIPhoneOS</key>
  <true/>
</dict>
</plist>

Is there anything I'm doing wrong in signing and/or creating the IPA archive? Or perhaps I am missing something in the bundle itself?

Answered by DTS Engineer in 798380022

DTS does not support manually signing iOS code [1], so there’s a limit to how much I can help you here. However, I think this is a showstopper:

I have a Mac Catalyst app bundle built from Rust. I am able to execute this bundle from my M2 Mac-Mini. I am wondering how might I go about creating a proper IPA archive in order to install to my iOS/iPadOS devices.

It looks like you’re trying to re-sign and repackage a Mac Catalyst app for iOS. That won’t work. Mac Catalyst and iOS are separate platforms [2]. You can’t deploy a Catalyst app to iOS.

The only path forward here is to recompile your code for the Mac Catalyst platform.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

[1] Although we do support this for macOS.

[2] A common source of confusion is the difference between platform with architecture. I cover that in An Apple Library Primer.

DTS does not support manually signing iOS code [1], so there’s a limit to how much I can help you here. However, I think this is a showstopper:

I have a Mac Catalyst app bundle built from Rust. I am able to execute this bundle from my M2 Mac-Mini. I am wondering how might I go about creating a proper IPA archive in order to install to my iOS/iPadOS devices.

It looks like you’re trying to re-sign and repackage a Mac Catalyst app for iOS. That won’t work. Mac Catalyst and iOS are separate platforms [2]. You can’t deploy a Catalyst app to iOS.

The only path forward here is to recompile your code for the Mac Catalyst platform.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

[1] Although we do support this for macOS.

[2] A common source of confusion is the difference between platform with architecture. I cover that in An Apple Library Primer.

CLI Workflow: IPA Installation
 
 
Q