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?
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.