How to put my app in a iPhone 3G? - iphone

I am using Xcode 4.2 to develop my apps. My current ongoing project is set to run on ios4.2, but i only have a iPhone 3G (not 'S') to test my app. The problem is that when i try to run my app in my device, xcode says it was compiled and running on device but the app doenst even install in my iPhone.
I have read on other posts that i have to change the armvX configuration, so how do I do that in order for my app to run in a iPhone 3G?
Thanks.

This is a hardware issue rather than an iOS version issue.
In the Architectures section of your build configuration it probably just says armv7.
You need it so have two entries, armv6 and armv7. Select Other from the architectures menu then delete the default then add two new entries, one that just says armv6, on that just says armv7.
This creates a fat binary (essentially two binaries) which will contain the v6 code the 3G needs.

Go to the project view. (Short cut key: Command-1)
Select the project to see its summary.
Under iOS Application Target, there should be a Deployment Target.
Select the version 3.1.3 or whatever the desired minimum version.

I dont have my Mac in front of me but i believe in the Target settings for the project
(click on the project in Xcode and under targets select your project name)
In the settings there you will see it more then liekly saying armv7 change to a lower number armv and i believe it will work.
though i cant be sure

Related

No provisioned iOS devices are available with a compatible iOS version

I'm trying to test my app on an iPhone 3G, however I'm getting this error:
No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a recent enough version of iOS to run your application or choose an iOS simulator as the destination.
Note that:
The 3G has version 4.2.1 of iOS installed
The iOS deployment target is set to version 4.2
The device has valid development profiles installed
I'm using the latest Xcode 4
I'm at a loss. Can anyone help?
Tim
Solved this problem by closing and re-opening xcode.
Xcode... it's the new Windows.
Try clicking "Use for Development" on your device in the Xcode Organizer. I got this same error and that was the only way I fixed it.
I finally found a solution to this.
If anyone else has this problem then it might be useful to know that Xcode now creates applications for ARM7 by default.
To support the iPhone 3G and other arm6 devices, you need to specify arm6 and arm7 in in the Architectures list, and set the device requirements to only arm6 in the plist.
Another observation for anyone who still has the problem after adding armv6: I found that Xcode was still listing "iOS Device" in the Scheme dropdown rather than filling in the name of my 3G. When I clicked on the dropdown, I saw that there was another slot that listed my 3G. (Presumably the "iOS Device" slot only applies to my other development device, an iPhone 4). I'm curious whether this is intended functionality, so leave a comment if you develop with multiple phones and have seen this.
I have Xcode 5.0, and try to build for my iPad with iOS 5.1.1. And I get the message: No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a recent enough version of iOS to run your application or choose an iOS simulator as the destination.
The solution you can see in 4 step:
(1) Select project settings > project settings > Info. Choose deployment target instead of 7.0 i.e. 6.1.
(2) Select project settings > project settings > Build Settings. Change architecture . Don't compile for 64bit.
(3) Select project settings > target settings > General. Set Deployment Target according your device iOS version. Afterwards the device name IPad appear after IOS Device to run on.
(4) Finally I selected IPad.
Maybe you have set the minimum required iOS to a higher version than your 3G has. Could you try to change the iOS Deployment Target in the build settings to the version of your 3G?
I develop on multiple devices and multiple generations of each device. Look at the scheme. In the case of an iOS 5 device, at least, if it does not have the specific device name, but instead shows iOS Device, then eject the device in iTunes and unplug the device. Plug it back in and try to run/install. The device name should show up and the device should have a green dot in Organizer and everyone will be happy. I believe the 3G iPhone just shows up as iOS Device, and I'm not sure about the 3GS, but an iPhone 4 or 4S will show its device name. This is what I get for trying to continue supporting old iPod Touches and 3G phones with 4.2.1. At some time I'll just cut them off and move on.
Not sure, i understand your settings right. But, the rules are:
Base SDK Version >= Development device iOS version
Deployment Target version = Lowest iOS version to be supported.
Hence, i guess, setting base SDK version equal or above 4.2.1 might help.
i also get this case:
when i reset iphone, plugin to xcode again, xcode dont recognized iphone in schema, iphone still have full provision
I go to Organizer window, check device again and see that my iphone dont have green light and have button that ask to use this device for development. Click on button and all work well again
When I changed my app from iPhone to Universal, automatically xCode changed the Deployment Target from 4.3 to 6.1, my device had 6.0 so it wasn't recognized.
Changing the value back to 4.3 solved the problem.
When the first time , your new test iOS connected to you Mac, you can't see it in the pop-up menu. only "IOS Device"
You may try From menu: Window->Organizer->Devices ; then Choose you connected iPad and click “Use for development" ; So it appears .
In Organizer, I had to copy (drag and drop) the provisioning profile from the general 'Profiles' section to the device's 'Profile' section.
This can also happen because you've started to use your device on a computer that's never used it before. Once you've plugged in your device via USB, you'll need to choose to "trust" the device. You'll see a message like the following on the device itself:
Your settings and data will be accessible from this computer when
connected via USB or Wi-Fi
Choose "Trust" when prompted, and then XCode will be able to use the device.
More info here at Apple's site:
http://support.apple.com/kb/HT5868
"No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a recent enough version of iOS to run your application or choose an iOS simulator as the destination."
I had this same problem when trying to build on my device.
Then I realised I was using an aftermarket lead.
Changed the lead to the original iPhone lead and... Hey Presto!
I solve this problem just change iOS Device of the following image to iPhone Retine ....,
I had a similar problem, with this error message: "No provisioned iOS devices are available with a compatible iOS version. Connect an iOS device with a recent enough version of iOS to run your application or choose an iOS simulator as the destination."
I solved it by simply going to the "jump bar" and changing it from "iOS device" to iPad 6.0 Simulator."

How to display all SDK versions of iphone/ipad in simulator selection list?

I'm unable to choose the lower than 4 version of SDK simulator in the simulator selection list in xcode4. There are iOS SDK 4+ (for iPhone) and iOS SDK 3.2 (for iPad) simulator versions only. I have set IPHONEOS_DEPLOYMENT_TARGET = 3.1 but nothing changes.
In the project editor choose your build target and then choose the summary pane. In the summary pane there is a drop down box where you can choose the deployment target. This may or may not help because it sounds like you're already changing the variable directly in the build settings.
Seems like we need to download and install previous version of Xcode and SDK. All the versions could be found on Apple's developer site. Also, there is one simple instruction that can be found here:
http://iosdevelopertips.com/xcode/download-and-install-older-versions-of-xcode-xcode-previous-releases.html

Why does XCode say that my iPhone app is only able to run on iPad?

I have a project in XCode with two targets. One target is for the iPhone only and the other is for iPad only.
The iPad target works as expected, but the iPhone target does not.
If I try to run it in the simulator, it starts the iPad simulator every time, but in iPhone compatibility mode with the 2x button.
If I try to run in on my iPhone 4 device, I get this message:
Can’t install application. The application at /Users/jacob/Documents/code/Projects/TVGuide/build/Debug-iphoneos/TVGuidePlus.app can only be installed on iPads.
This is XCode 3.2.6 and the iOS 4.3 SDK.
I have TARGETED_DEVICE_FAMILY defined at the target level and it looks like it is set correctly. The problem is the same for debug/release/...
have you selected the simulator as iphone?
most iphone apps are supposed to work on ipad too.
otherwise you may need to go to the project tab and go to project settings. there are some setting involving the choice of ios. i have not tried this since i havent recieved the error but i hope that it works.
Actually it turned out that I had Armv7 selected as architecture for my iPhone build. After changing that to armv6, I can now install and run the build on my device.

How do I install my AppCelerator App to my IPhone

I am attempting to load a small application I wrote with AppCelerator on my device. I am having quite a bit of trouble with this because of iOS target mismatches I suspect.
AppCelerator provides me two options for the target OS, 3.2 and 4.1. My Phone has firmware 4.1 on it so I selected 4.1:
Here is a picture if you want to have a look.
Note that in this image I am selecting output type of 4.1. This generates an XCode project with 4.1 as the base sdk / target sdk of 4.1.
When I launch this it generates an XCode project. Organizer contains the following devices and provisioning profiles:
Here is a picture of organizer.
It contains my device, with provisioning profiles, with a green dot beside the device meaning it should be a valid target.
Then when I try to run the app on my device I see the following options as available targets:
Finally here is the dropdown where you select simulators and devices.
Notice it simply doesn't contain my device as it did before I upgraded to the new SDK and 4.1 iOS.
I assumed I would be able to push to my iphone at this time - have tried all I know to try. Blown away all my provisioning profiles, regenerated my developer certificate, also deleted my login keychain to make sure that I started fresh there.
I am really just out of ideas to try - appreciate any and all help!
It appears that the answer was quite simple. After kludging around in XCode for hours I found (or noticed) another tab on the AppCelerator interface.
Click on Test & Package
Click on Run on Device
Fill out the details for provisioning if they aren't already (this is likely all done if you went through the level of detail on Apple Documentation that I did)
Click Install Now
Voila - the app is on your phone for testing.
The Apple Terms and Conditions do not allow apps built outside Xcode to be installed to iOS devices. I would think this applies to AppCelerator builds as well.

iPhone/iPad Active Architecture? What is it? Why is it there? Who needs it?

What is this selection for? I have the Architectures set to Optimized (armv6 armv7) so a fat binary should be getting build with both, right?
So why does this need to set this in the menu? What does it do?
Well mostly you do not need it, but even if you are building fat binaries you may not always be building both versions.
If you check the Build settings for the target there is an option in the Architectures section named "Build Active Architecture Only". I think by default this is selected when you are building for debug. The idea being that if you have armv6 device plugged in Xcode is smart enough to detect that and only build that version saving you some time.
Of course when you are building for distribution the option will not be checked to ensure you build for both architectures (not just the active one).
So I guess the short answer is that you do need to mess with it as Xcode will set it for you based on which device you have plugged in.
armv6 is compatible with all iPhone/iPod touch/iPad devices.
armv7 is for newer devices which support OpenGL ES 2.0, including iPhone 3GS, recent iPod touch and iPad devices.
Xcode detects which devices you have connected and will set the active architecture accordingly. So if you plug a 2nd generation iPod Touch into your computer Xcode should set the active architecture to armv6.
When you create a Distribution configuration for publishing to the App Store you should make sure this option is not set so that you build the fat universal binary