10

I have searched around SO and other places. I have only found older versions of this answer that don't seem to work any more, and tons of other stuff that isn't even relevant in the latest version.

Long story short, we have a developer providing an IPA to us, who doesn't want to join our developer group. I told him to send us an unsigned IPA, but we couldn't get it figured out based on our old process.

Has anyone done this yet, and would you mind sharing your method with the world?

Thanks!

James Cockerham
  • 399
  • 1
  • 3
  • 13
  • Should your title actually be "How to build an IPA without signing"? I don't know if its possible still, but if not the dev can send you a signed .ipa and you can strip of his signing and resign it. There's a tool for doing that. – Gruntcakes Nov 22 '16 at 00:08
  • Thank you, edited the title. And yeah, we have the resigning tool, but the other dev doesn't want to put his signature on it and send it to us. Not sure why. – James Cockerham Nov 22 '16 at 14:40

5 Answers5

28

I ended up finding a working solution for xcode 8. Here is the step by step

  1. (Optional) Change build location

Xcode>preferences>locations>derived data>custom>your desktop

  1. Open Terminal and navigate to the project's folder
  2. Run manual build: xcodebuild -workspace (or -project) [workspacename.xcworkspace] -scheme [Schemename] -sdk iphoneos -configuration Release CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
  3. Open the location from Step 1 (derived data) and navigate to >your app>build>products>Release-iphoneOS
  4. Copy the .app file into a new subfolder named Payload (this folder name is case sensitive and much match verbatim)
  5. Compress Payload folder and rename it to app_name-version_number.ipa

Boom. Done.

Sev
  • 45
  • 5
James Cockerham
  • 399
  • 1
  • 3
  • 13
  • 1
    Got to step 4. Build succeeded but no .aap file. Just a Build directory with lots of other files in there. Using Xcode/xcodebuild 8.2.1 – Pedram Jan 18 '17 at 00:17
  • Confirmed this produced an unsigned binary .app payload. To get the folder that has the .app in it (that you then need to Payload and compress/renamed as described in steps 6/7), look at your final lines of output from xcodebuild. It will have a long path ending in something like Build/Products/Release-iphoneos/...app. Go there to get the .app – radicand Jan 23 '17 at 19:59
  • but your .ipa file is not valid if you not follow the actual procedure , app installed in some devices and some device facing problem in order to install the .ipa file – nivritgupta Mar 03 '17 at 18:26
  • I've followed this procedure but I'm unable to load the app on my iPad, the app disappears after I upload using iTunes. I think may be due to certification problem – Jackie Degl'Innocenti Jul 21 '17 at 22:45
  • 4
    CODE_SIGNING_ALLOWED="NO" is also needed. https://stackoverflow.com/questions/11034133/building-ios-applications-using-xcodebuild-without-codesign – Pedro Góes Mar 26 '19 at 19:27
3

Create XCarchive file by using Xcode, click product->archive

first right click on xcarchive file-> show in finder

again right click on xcarchive file-> show package contents

Then open folder products->applications, here you get the your application file

Now, Drag and drop this one to itunes store's app directory(find apps drop down

menu at right top corner of itunes store). This will automatically converts

archive file to ipa file. (Here, you can also do this -> drag and drop .app

file anywhere in itunestore, once it get processed, search it back from search box).

then again right click on it and ->show in finder, this will show your ipa file.

Now you can give this one to any user how ever it won't work now at 2021

3

To run the unsigned build (IPA) on the device: (In case if you don't have apple dev subscription)

1) you need unsigned IPA You can use these steps described above (xcodebuild...) OR you could use "Archive" option and then navigate to Organizer and right-click "Show in Finder" then open Terimnal and invoke:

xcodebuild -exportArchive -exportFormat ipa -archivePath <FILE_NAME>.xcarchive -exportPath ~/Desktop/<FILE_NAME>.ipa

2) you use open source tool iOS APP SIGNER (beware this is opensource but I would recommend to strip off the NimbusKit as it looks very suspicious and its not required to produce a signed IPA just remove the #import and one function call - fix all build errors and you'll get the clean tool)

http://dantheman827.github.io/ios-app-signer/

The idea is that XCode allows users to RUN their own apps on their own devices now without subscription (only with valid apple id) So its somehow fetches the profile based on app bundle ID that's how you can send your IPA to another user and he could re-sign it using some trickery to force XCode to fetch the provisioning profile from the Apple. Check the URL to full instructions how to setup DUMMY project with matching BUNDLE ID to do it

Alok
  • 24,880
  • 6
  • 40
  • 67
barney
  • 2,172
  • 1
  • 16
  • 25
1

Without any provisioning profile i.e. signing you won't be able to run on the device. You can create IPA using payload method just build the project and go project navigator and search for the file project_name.app and select show in finder by right clicking. Then create a folder named PayLoad and then put that app file in it and create zip of that Payload folder and once zip is created rename that zip to your project_name.ipa

Parth Adroja
  • 13,198
  • 5
  • 37
  • 71
  • Doesn't the .app only get built in x86 architecture to run on the mac? Then it's missing ARM. Also, it runs with debug flags, which can't be used in prod type environments? – James Cockerham Nov 23 '16 at 15:29
  • You can change the scheme configurations for build to Release and then try. – Parth Adroja Nov 24 '16 at 04:49
1

Steps to create unsigned IPA (Tested on Xcode 9.4.1)

Step 1: Open finder > Go to Folder.. as below screen

enter image description here

and then copy and past the below line:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS*.*.sdk/SDKSettings.plist

Open iPhoneOS.sdk as showing in below image: enter image description here

Step 2: Copy the SDKSettings plist in another folder because you can't make changes here:

Step 3: Make change in duplicate

set CODE_SIGNING_REQUIRED to NO enter image description here

Step 4: Now replace duplicate Plist with original one (Both name must be same). This will also ask admin permission to change.

Warning: Please make sure you have copied the original plist and save somewhere for future reference.

Step 5: Now set code signing identity to as below image: enter image description here

and now you can create the Archive file enter image description here

**Step 6:**Right click on this test Archive file and show in finder:

Again right click and click on show package contents

then Products>Applications>and copy the .App file

Step 7:

  • Copy the .app file into a new subfolder named Payload (this folder name is case sensitive)
  • press Payload folder and rename it to app_name-version_number.ipa
  • Example- Test-version_1.1.ipa

And finally you have unsigned IPA file :)

Note: After done with your app changes replace the original plist again or set set CODE_SIGNING_REQUIRED to YES

Alok
  • 24,880
  • 6
  • 40
  • 67