views:

2852

answers:

6

OK, I've just got myself a shiny new MacBook Pro, and having been developing my iPhone app on another MacBook, I wanted to migrate my development to my new computer.

I've got to the stage where I can build the app and run it on the simulator no problem, but when it comes to running the app on my iPhone, I keep getting "The application could not be verified". I have installed a new developer certificate, and installed the provisioning profiles (all generated new), but I'm at a loss as to why I should still be getting the error.

Anyone have any ideas as to where I'm going wrong?

EDIT

I've recreated the certificate and profisioning profile, etc... The Build succeeds, and the status at the bottom gets all the way to 'Installing on Device', then two modal dialogs are displayed with the same "Application could not be verified" error message.

Is there any output I can get to that will give me a precise error?

EDIT

OK, I've got the appropriate log from Organizer showing the problem. It looks like I haven't set up the Entitlements.plist, but in xcode, I have. (I've added an Entitlements.plist fole, then unchecked get-task-allow, then added Entitlements.plist to the project settings under Code Signing Entitlements). The log is:

Tue Jun 16 07:35:42 unknown mobile_installation_proxy[1162] <Error>: install_embedded_profile: Skipping the installation of the embedded profile
Tue Jun 16 07:35:42 unknown securityd[1158] <Error>: mobile_installat[1162] SecItemCopyMatching: missing entitlement
Tue Jun 16 07:35:42 unknown securityd[1158] <Error>: mobile_installat[1162] SecItemCopyMatching: missing entitlement
Tue Jun 16 07:35:42 unknown securityd[1158] <Error>: mobile_installat[1162] SecItemCopyMatching: missing entitlement
Tue Jun 16 07:35:42 unknown securityd[1158] <Error>: mobile_installat[1162] SecItemCopyMatching: missing entitlement
Tue Jun 16 07:35:43 unknown mobile_installation_proxy[1162] <Error>: entitlement 'get-task-allow' has value not permitted by a provisioning profile
Tue Jun 16 07:35:43 unknown mobile_installation_proxy[1162] <Error>: verify_executable: Could not validate signature: e8008016
Tue Jun 16 07:35:43 unknown mobile_installation_proxy[1162] <Error>: preflight_application_install: Could not verify /var/tmp/install_staging.1WIVsB/BouldrData.app/BouldrData
Tue Jun 16 07:35:43 unknown mobile_installation_proxy[1162] <Error>: install_application: Could not preflight application install
Tue Jun 16 07:35:43 unknown mobile_installation_proxy[1162] <Error>: handle_install: Installation failed
Tue Jun 16 07:51:53 unknown afcd[1181] <Error>: user mobile has uid 501
Tue Jun 16 07:51:53 unknown afcd[1181] <Error>: mode is 0x41e8

Can anyone shed any light on why this isn't working as expected?

EDIT

Got the build working, but I've not accepted an answer yet, as I have no idea as to what's going on. Anyone with any idea as to what is going on?

+1  A: 

Did you remember to expand Targets on the left of the project window, then right click on your app name > get info, then go to the Build tab and under Code Signing, under Code Signing Identity, change the value of Any iPhone OS Device to what applies in your case? Also in the properties tab you should have your identifier set so that it matches the identifier you chose.

Don't know if that helps, that's the step I found missing in your description though.

Jorge Israel Peña
Yeah - that all looks fine, too
Mr. Matt
It may look fine from the values used on your old MacBook. Did you change them, in all targets, to use the new certificate and provisioning profiles you installed on the new MacBook Pro?
Steve Madsen
Yeah - I checked it on the new macbook
Mr. Matt
+1  A: 

In addition to verifying the code signing, be sure to go to the Build menu and run "Clean all targets". Xcode gets mixed up from time to time.

Alan
Yup - done this several times, too!
Mr. Matt
+1  A: 

Check if your iPhone properly provisioned. You may connect iPhone and launch Organizer from XCode (Main Menu -> Window -> Organizer) and then check PROVISIONING PROFILES information.

After that you need to match Bundle Identifier (Project -> Info.plist) and your App ID. You may read this Apple Note Mismatch between App ID and Bundle Identifier

I had similar message boxes (two in a row) when my Bundle Identifier was incorrect.

MikZ
The bundle identifier is correct as far as I can tell.
Mr. Matt
+1  A: 

I know you've already checked some of this, but just so this answer is complete:

  • Check that the new provisioning profile and certificate is named at the target level for each build setting you want to install on the device.
  • Code Signing Entitlements must also be defined at the target level, not the project.
  • Double check your build log, looking for a line that includes CodeSign. Verify it is there and using the certificate you expect.
  • If all else fails, remove the code signing identity from your target, clean all targets, delete any build directories from your project, quit and restart Xcode, replace the code signing identity, and try your build again.
Steve Madsen
A: 

RIGHT! THAT'S IT! I DON'T UNDERSTAND YOU ANY MORE, XCODE!

I changed my Entitlements.plist, setting the get-task-allow value to true, and it works. I really don't understand why. Can anyone enlighten me?

Mr. Matt
I don't understand Xcodoe either. I know iPhone development is a "whole new world" and all, but Xcode makes me realize how great Visual Studio and Eclipse are. Heck, I have a better user experience with TextMate and FTP than with Xcode. Perhaps it just takes some getting-used-to.
Alan
+2  A: 

From this thread on ADC:

get-task-allow, when signed into an application, allows other processes (like the debugger) to attach to your app. Distribution profiles require that this value be turned off, while development profiles require this value to be turned on (otherwise Xcode would never be able to launch and attach to your app).

Mr. Matt