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
codesign
utilitycodesign -d --entitlements :entitlements.plist /path/to/<app-name>.app/
-
Open
entitlements.plist
in 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.plist
in 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.ipa
to your testers.
I've followed these excellent steps and am close but I'm getting the error "mapped file does not the same team identifier as main process" for my frameworks Alamofire, etc. Looking closer I can see that have the old identifier. How do I change the frameworks to have the same identifier ?