WARNING These steps are probably out dated and will not work.
To re-sign an iOS app with another developer account, ensure that the following are in place first.
- Distribution certificate of the other developer account
- A provisioning profile from the other developer account
Note that the Apple requires bundle IDs to be globally unique, even across accounts. So a bundle ID i.e. CFBundleIdentifier from one account can't be used in a different account, even though the team id/prefix would be different.
Ensure that the new distribution certificate is in your keychain and the new provisioning profile on your disk.
-
Unzip the .ipa. This will usually unzip to
Payload/<app-name>.app/ -
Export entitlements.plist from the app using the
codesignutilitycodesign -d --entitlements :entitlements.plist /path/to/<app-name>.app/ -
Open
entitlements.plistin your favourite editor, and modify the bundle id and prefix to that of the new dev account and app. Don't forget to update the keychain access groups. -
Open
Info.plistin your favourite editor and modify the bundle identifier (CFBundleIdentifier). It can be found at/path/to/<app-name.app>/Info.plist. -
Replace the embedded provisioning profile.
cp /path/to/new-profile.mobileprovision /path/to/<app-name>.app/embedded.mobileprovision -
Install the new signature.
codesign -f -s "Distribution Certificate Name" -i com.example.new_bundle_id --entitlements entitlements.plist -vv /path/to/<app-name>.app/ -
Package the application
xcrun -sdk iphoneos PackageApplication -s "Distribution Certificate Name" -o /path/to/new.ipa /path/to/<app-name>.app -
Distribute
/path/to/new.ipato your testers.

This didn't work for me, I tried to submit the resigned app with another distro cert/profile and it complained about the app needed to be signed with the original profile.