Alter Minimum OS Version of IPA without XCode, iOS 8+

3k views Asked by At

This is a long shot but... I've been mistakenly left with an IPA instead of an XCode project by a teammate who's gone off on holiday and it urgently needs uploading to iTunes Connect. The problem, when I tried to upload the IPA via Application Loader the Minimum OS version was set to 5.0, and I got an error that this was too low, had to be at least 5.1.1. I went through the process here: Change app Version with only IPA file provided (no xcode) to edit the Minimum OS via the Info.plist but I encountered the same issue as the final comment on this question, the resulting IPA will upload but will not install.

I've done a ton of searches for other solutions but have only managed to find old, pre-iOS 8 answers, all the same solution as within the link above - If anyone knows if its still possible to alter the minimum OS version of an IPA without being able to do this through XCode much appreciate the help. Thanks.

1

There are 1 answers

1
AMTickityB On

Thanks to phix23 who gave a tip to check the error messages when trying to install, it turned out to be an issue with the entitlements. I got this fixed, uploaded to iTunes Connect and distributed via TestFlight.

There were a couple of steps I followed to sort this out which I think are worth noting here incase anyone else needs to do this. After unzipping the IPA and editing the Info.plist to change the Minimum OS, I needed to sort out the entitlements.

  • I created an entitlements .xcent file using the Python 2 script contained in the 5th comment here to do this. I added the entitlements <key>beta-reports-active<key><true/> (to use TestFlight) and <key>get-task-allow<key><false/> & <key>aps-environment<key><string>production<string>(because these were in my provisioning profile) to the python script before generating the entitlements .xcent.
  • The entitlements need to match the provisioning profile, I checked those using the commands found here.
  • There is also a file inside the *.app called something like archived-expanded-entitlements.xcent so I also edited this to match the entitlement .xcent file I generated with the python script using a text editor. Just to be sure.

When resigning I left out the --resource-rule option (which didn't seem to work for me) but included --entitlements option, pointing to the entitlement .xcent file .

Also, it's worth noting that if the IPA had a Payload and a Symbols directory when unzipped, select them both and compress into an archive to rezip, rather than just rezipping the Payload.