Search code examples
iosxamarinxamarin.formscontinuous-deploymentprovisioning-profile

Get .IPA-file without physical iPhone


I have a Xamarin forms application, targeting Android and iOS. I am trying to add iPhone development to our CI and deployment cycle.

I am using Teamcity (CI), Octopus (Deployment), and HockeyApp (Distribution).

Environment:

Visual Studio for Mac running on a rented remote Mac. Am memeber of apple developer program and have provisioning profile etc.

What I want:

I want my remote Mac build agent to produce an .IPA file, in order to distribute it to our testers via HockeyApp.

Actions:

I select automatic provisioning with my Apple ID and my team set (Am registered in Apple developer program).

What happens:

...

Syncing devices for "X" team...

Processing iPad devices...

Processing iPhone devices...

Processing iPod devices...

Processing Apple Watch devices...

Creating new iOS Development provisioning profile for VS Wildcard application...

Automatic Provisioning failed: There are no current IOS devices on this team matching the provided device IDs.

How do I fix this?

p.s.

  1. Do I need a to register a physical iPhone on the provisioning profile in order to produce an IPA?

  2. Is it enough that I register one, or does it have to be connected to the remote agent?

  3. Do you suggest better ways to accomplish what I want?


Solution

    1. Yes, for a standard developer account (Ad-hoc) provisioning profile, you will need to get the device's UDID from the physical device. You cannot create an Ad-hoc provisioning profile without at least 1 device ID provisioned in it.
    2. You will need to register the UDID of each device on which you want to run the IPA, if you are using a standard developer account. (See answer 3 for alternatives)
    3. If you sign up for an Enterprise developer account ($299/year), you can create and Enterprise In House Distribution profile, and use it to sign your app. Enterprise distribution profiles do not have specific devices registered, so you can build / sign the IPA, and any device can install and run it. The installer will need to go in and trust you as a developer before running the app, but at least you don't have to register every single device before you build.