I am reading the provisioning profile stuff on the app store website and am having a heck of a time figuring everything out. I have my distribution certificates and everything but I think that something is massively messed up in xcode. When I switch to my distribution profile in the overview pulldown - it immediately changes to "Base SDK Missing". AND - when I scroll down to the projects portion on the left side - my .app file is red? Very confused.
The .app file is red because it hasn't been built yet for that specific set of build settings, which is normal behavior. The error is the "Base SDK Missing" message.
Have you installed multiple versions of Xcode? Are you perhaps editing a project with Xcode 3.2.3 that was created with an earlier version of Xcode? Xcode 3.2.3 only ships with the iOS 3.2 and 4.0 SDKs, meaning if your project was targeted for iOS 3.1.3 (for example), the new version of Xcode wouldn't have the correct SDK installed to build, resulting in that error message. You can try changing the "Base SDK" setting of the project to 3.2 or 4.0, make sure the correct "Configuration" option is selected from the drop down.
Distribution file is just for when you want to build for the AppStore, in which case all you can do is build the .app file (which is stored in the build directory of your project folder). You cannot run or debug that version of the app on a device since it is codesigned by Apple specifically for release in the AppStore only.
If you're just testing the waters or working on tutorials, try out the "Debug" option so you can install it on the device (iPod Touch, iPhone, iPad) in which case the provisioning profile is used to allow you to run the app on the device.
You can use whatever SDK you want via the same drop-down menu for the overview pulldown (i.e. 3.0, 3.1.3, 3.2, etc). You can also change this option in the Project settings menu for both the target and the project settings. There is a section called "Base SDK" in the Build menu I think.
The .app file will be red there in the project tree so don't worry about it and you'll never really need to do anything to that file in XCode. Just realize that it builds the actual .app file in your project folder in the Mac OS Finder.
Related
I'm new to xCode development and struggling my way through the provisioning system trying to run a Hello World app on a real device. I went through al steps and everything seems fine but one thing:
When i click my device (Iphone 3G running IOS 4.2.1) in the xCode organizer the following message is displayed under Software Version: Xcode cannot find the software image to install this version...
Also the provisioning profiles show no status in the organizer (both in the library and on the device). On the provisioning portal they have the status active.
I hope someone can help me, thanks!!
ps. i am working with xcode 4
Update: OK, I've found the solution -> set deployment target to 4.2 in info tab: https://discussions.apple.com/thread/2780316?start=0&tstar
The message "xcode cannot find the software image to install this version" seen in the organiser window... This is just a notification rather than a problematic error.
If you want to eliminate this message anyway, I found I was able to do this by running restore within iTunes. Part of that process involves downloading some stuff, which I presume is the 'software image'.
But, as explained in Technical Q&A QA1569 "This message does not prevent you from using the device for development purposes. The only effect is the inability to reinstall the OS currently on the device using Xcode." ...and that has been my experience. Back in the main Xcode window you're still able to click 'run' and send the app to the device to run.
...and it will run assuming everything else is set-up OK, but there are various other gotchas related to Xcode 4.2 and v4 devices:
As mentioned by Overbeeke you should ensure the 'deployment target'
of your project is set down to the desired version (the minimum
version of the devices you want to support) Additionally I would
point out that the 'SDK version' should normally remain set to the
latest (it's whatever SDK Xcode on your machine is using)
As mentioned by Kenneth Lam, in the new Xcode you need to frig around
with "armv6/armv7" settings if you want to support earlier models of
iPhone. Follow these instructions to add the right "Architecture" armv6 setting. Additionally I would point out (as per this answer further down) that there is a setting called "Required device capabilities" from which you need to remove 'armv7'. This is in your app's plist file.
I'm saying all this like I'm an expert, but I still can't get it to work on a v3.1.3 device :-)
I think Xcode 4 requires that you are running the latest iOS to use that feature, but you don't need it to install apps on a device. I have run my apps on an iPod Touch 1G (which can't be upgraded to iOS 4.3) with the same iOS as you and it worked.
Have you added your device to the provisioning profile?
What I did is opened the organizer, right click on the device on the left pane and select "Add device to provisioning profile" where you will be asked for your Apple ID (within xcode) and it will add the device to your profile without you leaving xcode, much simpler than using the online portal.
Xcode 4.2 only builds armv7 targets by default. (Iphone 3G running IOS 4.2.1 is armv6) Add armv6 build targets by following these excellent instructions from Nick "Warning: iPhone apps should include an armv6 architecture" even with build config set
just an update, to update the iOS deployment target, click your project in the left pane, the one with the blue 'A' icon. click the build settings tab (not info), instead of showing "basic," show "all." iOS deployment target is in the deployment section.
There could be a number of things, but i would make sure that that your deployment taget in build settings is at or below your target . Check the "deployment section" in the build settings of your project. The default sets the deployment to the highest iOS version, if the ios version is below what is set you will not be able to run the app on that device.
I want to test my app on my itouch which has ios 4.2.1 .
I have completed the steps for provisioning profile/certificate. So under Organizer,
when I select my device, I am seeing the provisioning profile
and under Developer profile, I see 2 entries; iPhone Developer and iPhone Distributor
Now I want to just test the app on my device (NOT looking for steps to submit the app for distribution at this stage)
I think there are some Project settings that I need to do under XCode. But I am unable to figure it out. Please provide me the steps to test on device.
My XCode ver is 3.2.5
I was hitting an issue following this and the documentation where my app would not deploy to my iPhone 3G running iOS 4.2.1 using XCode 4.2. I hope this helps others who end up on this question trying to get their apps to deploy to a real device through XCode.
I kept fiddling with the Base SDK setting along with the Deployment Target setting in the project and target settings area. However, I had them correct to start with so that wasn't the answer (I want to target iOS 3.2+, so I kept all set to that). In addition, I messed with the provisioning profiles, certificates, etc. multiple times even though they looked right to me. They weren't the issue, either.
The key was changing the architecture settings that are scattered throughout the interface.
First, since I am testing it on an iPhone 3G, I needed to support the armv6 architecture as well as armv7 for later models. So I added "armv6" to the "Valid Architectures" entry on the project's "Build Settings" tab.
Next, I made sure it was showing "armv6 armv7" under "Architectures" in the "Build Settings" tab of the target for my project.
Finally, I clicked on the -Info.plist file for my project and removed the "armv7" entry for the "Required device capabilities" that is put there by default for new projects in XCode 4.2.
After this, my app ran successfully on the device using Command + R for Run.
Double click your app under targets in Xcode
Make sure that for the configuration 'Development' you have the right development provisioning
profiles selected.
click on the properties tag and make sure that the identifier is the same as the identifier used in
the development profile.
clean all targets, in Xcode make sure you are building for Device, Debug, and than click 'build and run'.
If the development profile is on your iPhone and you have installed it into Xcode correctly it should work. However sometimes after installing a profile on your iPhone it doesn't register everywhere it needs to and I have found that this is fixed by restarting the iPhone (not Xcode).
Good luck.
hi my IPhone device has 4.2.1 version, my xcode is saying 4.2 version. Is this any issue because i cant debug my app on device. also the developer folder has iphoneentitlements401 folder, shouldnt it be 4.2 instead of 401?
i am getting cannot read entitlements data ERROR. please help!
SDK Support:
You need to set your IOS Deployment Target to the lowest SDK you want to support. So you would need to set yours to at least 4.2.
Go to Project -> Edit Project Settings -> Scroll down to Deployment, then find IOS Deployment Target
For Entitlements:
Your entitlements file, if it exists, may be corrupt, remove it if you have it, then add a new one:
Right-click on your Project, then click Add, then New File and under iOS click on Code Signing and choose Entitlements.
I'm pretty new to iPhone. My dev env is setup, XCode has just two profiles: iPhone device 3.1.2 (base sdk) and iphone simulator 3.1.2, either one with release and debug.
I fear I will run into problems now, if I ad hoc deploy to < 3.1.2 phys devices. How can I build for 3.0 base sdk only?
Kind regards
PS: stackoverflow is a great source of knowledge. Most of the Google queries I had during the past 2 weeks did land here :)
Double click your application name under "Groups & Files" then go to the "Build" tab and change the "Base SDK" to "iPhone Device 3.0"
Double click on your project name with icon in xcode. This will open project info of your project.
Select the build tab in it.This will the build and environment related properties of your project.
Go to architecture and set the base sdk as whatever you want.This will change the base sdk.
You should give a check "Configuration" value also that is it set for the profile you want
Hope this helps.
I have installed the new 3.0 SDK, but when I start up Xcode, I don't see an option to build for "Device - iPhone OS 3.0" or "Simulator - iPhone OS 3.0"
The Xcode About box says I am running: 3.1.2
Is there something else I have to do?
I think you need to upgrade to Xcode 3.1.3. I have the latest version and that's what my About box reads.
If you are sure you downloaded the latest version, perhaps you installed in to a different location?
If you are using an existing project you may have to tell your project to build to the 3.0 targets. I didn't have to do this for any of my projects but ...
Under the Deployment section of your project properties you should see:
iPhone OS Deployment Target - (change this to use iPhone OS 3.0)
You can also check that the Architectures section has the Base SDK set to 3.0.
This happens quite often when downloading Apple's sample code projects which are targeted for iOS 3.x but you've got iOS 4.x.
To show Simulator option go to Project Info window -> General tab -> Base SDK for All Configurations - choose Latest iOS.
If it doesn't appear straight away, close and reopen Xcode.
This is what worked for me:
I clicked on the box (where I expected iPhone Simulator to be shown), right clicked manage scheme. After that deleted all schemes, and in similar way, created a new scheme. It automatically produced all simulators including the ones for devices.