Which Xcode export methods are compatible with DeviceFarm? - ios

I've been trying to make sense of how to do test automation for an iOS app using AWS DeviceFarm and there seems to be a vacuum of information on how an .ipa is allowed to be installed and run on a random DeviceFarm iOS device. I'm a bit new to Xcode, so maybe I'm missing something.
In Xcode, when you archive a project you have to choose an export method.
I have to rule out the App Store option because my aim here is to test.
Then, the Development and Ad Hoc options require a list of UDDI's, and since the idea here is to test on DeviceFarm with whatever device they assign you on the fly, these two options seem to be ruled out.
Which only leaves the Enterprise option open. BUT... does this mean that in order to use DeviceFarm for iOS testing I must be enrolled in Apple's Enterprise Development Program??? Seems a bit harsh.
So, which of these options are compatible with DeviceFarm, and why? I mean, the only possible answers I can think of are:
A) AWS has jail-broken all of their iOS devices and so the UDID list not relevant.
B) AWS resigns all uploaded .ipa files with their own certificate and uses an Ad Hoc or Enterprise provisioning profile of their own to install and run them.
I'm aiming to use TestNG test scripts btw. Don't know if that's relevant or not.

Mig82,
The iOS devices within AWS Device Farm are not jailbroken. In order to install custom applications on the devices, uploaded IPA files are resigned with a wildcard profile, as noted here in the documentation.
Exporting your app using Development Deployment should work just fine as it will sign it with your Developer Certificate but not require you to define a set of test devices by UDID.
Hope that helps!
Disclaimer: I previously worked on AWS Device Farm.

Related

iOS app Certificaction and ad hoc testing

I work for a company developing their iPad app. None in the company is a technological geek to handle Xcode app deployment themselves. So for now, we do this:
I develop the app.
Create an ad hoc testing version and share the .ipa file with them.
They test and then I make a distribution version for further release.
What I want to establish as a permanent solution is
I develop and share the Xcode archive
They make all different versions for testing and release.
However I have been largely unsuccessful in doing so: for creating the archive, I have to sign/certify with my development profile. They could deploy it further from Xcode archive to an .ipa file, using their distribution certificate. However, they can not install it on their devices. I believe mainly because the development version requires my certificate/profile to be enabled on their devices :(.
Is there a way out? I need to provide them an archive which they could further sign and do whatever they want to do (either test on whatever devices they want to or release).
Thanks,
Nikhil
If you don't want to manage the device identifiers where you are deploying the device, you could use:
1) TestFlightApp.com (although I don't know what the current status of their offerings are -- since they've been acquired by Apple -- but they still have a "Sign Up" link on the top of their home page).
or
2) Apple's Enterprise Developer Program, which allows you to "Distribute In-house Apps".
You can sign application using their distribution certificate.
To do so c'est have to send you a p12 export of the certificate, the p12 contains the private key of the one creating the certificate and the certificate.
To export a certificate :
Go to the keychain access
Right click on the certificate
click export

xcode / ios app distrubution ad hoc

Is it possible to distribute an app via ad-hoc without first putting the device into development mode?
I have successfully managed to download and install my app from a simple web page with the ipa and a manifest file, and I would like to test this on a friends device who is located elsewhere in the country.
Would he have to set his device in development mode for this to work, and if in that case, is there any way to easily do that without having xcode installed on his mac?
Thanks in advance for your help!
TestFlight is your best friend for this. Export the ipa file and upload it to your account on TestFlightApp.com . Then all you need are your user's UDID's and they'll be able to download your build directly from the testFlight app on their phone. No xcode or development mode required.
Yes, your friend can install it, but only up to 100 devices. I'm almost positive he doesnt have to be in development mode. https://developer.apple.com/programs/ios/distribute.html is my source.
The simple answer is "yes".
You can install ADHOC builds onto any devices you have the device identifier (UDID) for.
There may be more nuances to this, but I believe the main purpose of a device being in "development mode" is so you can attach that device directly to your development machine, where you can step through line by line when debugging within Xcode, or be able to easily look at the Console or Crash logs on your connected device.

Deploying ios apps wirelessly .Enterprise apps

I have developed an app in the in-house, enterprise mode. While testing i was using the iPad provided to me by my company. I tested on it. I had certificates from developer member center. Tested just fine.
Now I have deployed the files on our secure server.I have a link where the ".ipa" files are present. So i used my same testing iPad and downloaded the app from that link via safari on the iPad. It installed and ran successfully. Now i gave that link to another member of my team and he has his own iPad. When he clicks that link it starts installing but it doesn't finish.He gets an error.The error he gets is
"Unable to download Application.XYZ app could not be installed at this time. Done .Retry."
Same thing with another iPad. These iPads are NOT registered under testing on member center. So i have a thought. Since while testing i had certificates and all on my testing iPad, it might have recognized it and installed it.But the other completely new iPads are not identified. So how do i do it?How can i say my app that it is safe to install on so-so iPad that belongs to my co-worker. If i am not clear please ask.Thanks.
bobnoble is correct. You need to have an Enterprise Distribution certificate to use with this. Development certs are similar to ad-hoc certs in that you need to individual identify the device UDID's that will be used.
We do a lot of work with enterprise customers and I never use the development certs, mainly just to cut down on the confusion. It might be a problem if one of our devs goes rouge :), but it is a chance we are willing to take.
In xcode you can select the Project or the Targets when assigning the provided profiles.
Make sure you sign the target.
There is a nice tutorial on the testflight site:
http://help.testflightapp.com/customer/portal/articles/494413-how-to-create-an-ipa-xcode-4-3-
You are getting confused between a Distribution Certificate and an Enterprise Certificate. In your case you should use Enterprise or Adhoc Certificate. Enterprise certificate is not given to a person but organization and it is not created where other certs are created.

What sort of provisioning profile should I use for Hudson building my iOS app?

I'm building an iPhone app and I am tasked with automating the build to integrate with our Hudson-based build of our back-end Java components. I see Apple docs mentioning 'build bots,' but I haven't seen what Apple recommends for creating an automated build/CI system for iOS apps.
And I'm not sure I understand the differences among development and distribution and ad-hoc profiles, so I hope experienced members won't mind helping me figure out which type to request and install.
My Hudson is slaving a build Macintosh using a non-privileged user account.
I would like to take successful builds and enable my co-workers and other interested parties to install them on their own iDevices.
What's the right type of profile to use for xcodebuild to sign the app and make it installable?
Thanks in advance!
Andrew Wolfe
you want to use an AdHoc profile if you're wanting to distribute the app to people who aren't using xcode. remember that you'll have to add the device UDIDs of each person you want to be able to run the app to the profile.
in your project (in xcode), create a separate AdHoc target so you can specify the profile. then when you set things up on hudson, you specify the AdHoc target on the build command line.
i highly recommend looking at https://testflightapp.com/. it's a great service and a god send when you're dealing with sending out adhoc builds to people. and it's free!

Showing beta versions of an app to a customer

Can I send to my customer a beta version of my iOS app that he can run in the Simulator ?
Can I install Simulator only (without Xcode) on a Mac ?
I actually need an efficient methodology to send him the beta versions of the app, without having to meet him at each update.
Also, (3.) is there a way to install a beta version of the app, I developed in my xCode on its iOS device without app store ?
Thanks
No, I do not believe you can.
No, I don't think so. If you could, however, you'd also have to put all your source code on that machine and build your app there, just to run it in the simulator.
Yes, it's called an Ad Hoc build. You create a special provisioning profile through the provisioning portal on Apple's Developer portal. You then sign the build with that provisioning profile (actually, "Build and Archive"). Then you can, through the Xcode Organizer, share that build via e-mail with your customer. The Organizer creates an .ipa file and includes it along with the provisioning profile into an e-mail message which you can then compose and send.
Edit: The Ad Hoc provisioning profile will, of course, need to include the UDID's of your customer's device(s) on which they would like to test. That is the missing piece here that ties it all together: UDIDs, Ad Hoc profile, signed app with that profile, e-mail it to the customer and they can install both files (ipa and profile) via iTunes.
Lots of documentation on this, right in the Developer portal.
TestFlightApp.com is a great way to easily manage and distribute beta tests and ad-hoc builds. It's nothing you couldn't do yourself, manually, but it really helps make it easy, and is free.

Resources