App Store Release Testing

TedRogersTedRogers USMember ✭✭✭✭

I am about to release my app the the Apple App Store and have been following the instructions on doing this. My question is how do you test the exact same binary you will upload to the AppStore. I am used to creating an archive in Xcode and then using that same archive to create an Ad-Hoc IPA for testing as well as uploading the the AppStore.

The instructions suggest doing a separate build for the App Store. I like to be able to test the same build I will be submitting. How are people doing this?

Posts

  • Bob_ReckBob_Reck USMember ✭✭✭
    edited May 2014

    @TedRogers‌,

    I usually use TestFlight (testflightapp.com) for allowing people to test a build before submitting to the app store. Have you checked that out? It's not the exact same build, but it's pretty darn close and I've never run into a problem submitting to the app store afterwards. Just have to rebuild with the AppStore profile and upload.

    Bob

  • TedRogersTedRogers USMember ✭✭✭✭

    @Bob_Reck‌ Thanks Bob. I am using HockeyApp for distributing test builds. I was just hoping to use the same build. I'm wondering whether I can create an AppStore build and then use XCode to create the IPA using the Ad-Hoc provisioning profile. It doesn't appear I can do that with Xamarin Studio, it wants to upload directly to the AppStore.

  • adamkempadamkemp USInsider, Developer Group Leader mod

    This is a problem with non-Xamarin apps as well. You can't test the exact binary that you have to submit, but it is possible (though not straightforward) to re-sign a build without rebuilding the code. That way only the signature is different, not the contents. If you look at your build output you will see the command they use to sign the app. You can use that after the fact on some binary to modify its signature. Look into the codesign command line tool.

  • TedRogersTedRogers USMember ✭✭✭✭

    @adamkemp‌ What I did which sounds similar to what you are saying except I used the XCode Organizer to do the signing. I created an AppStore archive. I then went to XCode and created an Ad-Hoc ipa using my Ad-Hoc provisioning profile. Seemed to work like a charm. See any problems with this approach aside from the cumbersome-ness of it?

    Ted

  • adamkempadamkemp USInsider, Developer Group Leader mod

    No, I think that does the same thing I described but in the other order. That sounds like an easy way to do it too. I'll have to keep that in mind!

  • TedRogersTedRogers USMember ✭✭✭✭

    @adamk I have just discovered that the Xcode trick isn't working for me. Works great for people who had already installed the app on their phones but for new devices it doesn't seem to work. I don't really understand what is going wrong so not sure how to fix it signing by command line.

    Here is the install log from my new iPhone...

    Jun 11 16:27:25 Teds-iPhone-5s installd[17] <Notice>: 0x10050c000 MobileInstallationInstall_Server: Installing app io.planit.plan.it
    Jun 11 16:27:26 Teds-iPhone-5s installd[17] <Error>: entitlement 'com.apple.developer.team-identifier' has value not permitted by provisioning profile 'Planit Ad Hoc Distribution'
    Jun 11 16:27:26 Teds-iPhone-5s installd[17] <Error>: 0x10050c000 verify_signer_identity: MISValidateSignatureAndCopyInfo failed for /var/tmp/install_staging.2rx27m/foo_extracted/Payload/PlanItIOS.app/PlanItIOS: 0xe8008016
    Jun 11 16:27:26 Teds-iPhone-5s installd[17] <Error>: 0x10050c000 do_preflight_verification: Could not verify executable at /var/tmp/install_staging.2rx27m/foo_extracted/Payload/PlanItIOS.app
    Jun 11 16:27:26 Teds-iPhone-5s installd[17] <Error>: 0x10050c000 install_application: Could not preflight application install
    Jun 11 16:27:26 Teds-iPhone-5s itunesstored[96] <Error>: 0x10070c000 MobileInstallationInstallForLaunchServices: failed with -1
    Jun 11 16:27:26 Teds-iPhone-5s itunesstored[96] <Warning>: ERROR: MobileInstallationInstallForLaunchServices returned nil
    Jun 11 16:27:26 Teds-iPhone-5s lsd[76] <Warning>: LaunchServices: installation failed for app io.planit.plan.it
    Jun 11 16:27:26 Teds-iPhone-5s itunesstored[96] <Warning>: LaunchServices: installPhaseFinishedForProgress: io.planit.plan.it.Installing - <NSProgress: phase=Installing; state=Failed; fractionCompleted=0.000000> called, removing progress from cache
    Jun 11 16:27:26 Teds-iPhone-5s lsd[76] <Warning>: LaunchServices: installation failed for app io.planit.plan.it
    Jun 11 16:27:26 Teds-iPhone-5s itunesstored[96] <Warning>: LaunchServices: installPhaseFinishedForProgress: io.planit.plan.it.Loading - <NSProgress: phase=Loading; state=Failed; fractionCompleted=1.000000> called, removing progress from cache
    Jun 11 16:27:26 Teds-iPhone-5s installd[17] <Error>: 0x10050c000 handle_install_for_ls: API failed
    
  • adamkempadamkemp USInsider, Developer Group Leader mod

    I've never done ad-hoc provisioning, and I imagine there are a whole slew of things that can go wrong there. Sorry if I led you astray.

  • TedRogersTedRogers USMember ✭✭✭✭

    I do it all the time from archives created in XCode. But, the difference is you don't specify a provisioning profile for the archive in XCode. You do it later when you distribute it either via Ad-Hoc or to the App Store.

  • JohnHairJohnHair GBMember ✭✭✭✭✭

    With decent version control and labelling, I have good confidence that a Release build I produce with my developer provisioning profile is as close as its going to get (for TestFlight deployment) to an AppStore release. Ok the binaries are different (thats how the compiler works), but I can guarantee that exactly the same source code was tested and then released to the AppStore.

Sign In or Register to comment.