Search code examples
ioscertificatejailbreakprovisioning-profileself-signed

how to archive an iOS app from Xcode with self signed certificate without provision


I am trying to make an app which would not be available of AppStore but users will able to download it from cloud. So to make the .ipa file of this installable to iphone, what should I do? Can anyone help to make such stuff? Is it possible or not? Thanks in advance.


Solution

  • There're several ways you can do that.

    Debian package

    That's how Cydia apps are packaged and distributed. The format is documented, there're many examples on the internet.

    Debian packages can be installed on any jailbroken devices and does not require valid signature. There're several ways on how you can install debian package but the simplest of all is to use Cydia AutoInstall directory. You copy debian package in it from your PC, reboot the device and Cydia will install it automatically. But that requires you to have root filesystem access over USB. In recent jailbreaks you no longer have the access until you install special tweak from Cydia.

    Another pretty simple way is to create your own Cydia repository, it's very easy to do. Customer will need to add the repository using Cydia. After that they will be able to install your app and Cydia will notify them about updates. Or you can try to submit your app into one of the default repositories that are preinstalled in Cydia by default. For example, BigBoss.

    Unsigned IPA

    Just package your application into IPA without signing it with anything - it's a regural ZIP archive with very specific directories inside. Examine IPA of some other app to know more.

    Users with jailbroken devices that has AppSync tweak will be able to install it. That's how cracked apps are distributed. They don't have any valid signature. Jailbreak allows you to execute unsigned apps. AppSync is needed to disable additional check - iOS checks signature during IPA installation and will reject unsigned IPAs without the tweak.

    IPA with enterprise signature

    You can purchase enterprise developer program which will allow you to sign IPA in such a way that it can be installed on any device. You don't need jailbreak, you don't need to know device UDID.

    It's not that difficult to get that program, there're a couple of simple checks Apple does. But it's not free

    You should remember that Apple may terminate your membership if they find out. The chances are small but they can and will. Here's good post on that topic

    IPA with developer signature

    You can purchase developer program which will allow you to sign IPA in such a way that they can be installed on up 100 devices per year. You don't need jailbreak but you do need device UDID. Developer provisioning profile requires you to specify UDIDs of the devices that can install the app. iOS will reject IPA if it's provisioning profile doesn't contain required UDID.

    It's easy to get that program but it will require your customers to specify UDID of their devices to be able to install your app.

    It's not free

    IPA with free developer signature

    Apple now allows any Apple ID to be used to develop and test apps on an iOS device. You don't need to purchase anything.

    The limitation here is that provisioning profile allows you to specify only one device UDID. So in order to be installed your app have to be signed with provisioning profile containing the specific iOS device UDID - every customer will require their own version of your app.

    Another limitation is that you can't create that profile in Member Center. Xcode will automatically generate and download the profile when you try to install an app on the device. You can then use that profile to manually sign any IPA. But it will work only on that specific device.