Support of iPhone 3G

3.3k Views Asked by At

I have submitted one iPhone app 6 times, and in the requirement of the last/ current version, iPhone 3G is not supported anymore.

My question: Why do I lose this model?

I have some remarks:

  1. Now, apps don't support the iPhone 3G anymore. I made some searches, and I didn't find any news about it.

  2. Before I submitted this version, I updated my XCode from version 4.0.2 (iOS SDK 4.3) to version 4.2 (iOS SDK 5).
    Maybe during the submission, "Apple" checked the binary in order to check the version of my tools (which I built my app with). And as the iOS 5 cannot be installed on iPhone 3G, I have lost this support.

  3. I own an iPhone 3G in order to make compatibility tests.
    And with XCode 4.2, I had trouble to debug my App with my iPhone 3G. But, i found the solution: Add the architecture armv6 is not enough I need to put some weak links.

    If I submit my app with these options "special 3G", will these options be take into account and the support will be back?

    (see the edit)

  4. "What's new" is I changed my Apple Account: I submitted my app with another account. Maybe there are some options somewhere that I didn't see.


Edit: I forget a part maybe important: the version of iOS.

The minimum version of iOS for running my app is iOS 3.1. And my iPhone 3G runs on iOS 3.X

And all troubles I had with XCode 4.2 and my iPhone 3G seem to be the version of iOS (3.X).

Maybe my app lost the support of iPhone 3G to be sure there is no problem with iOS SDK 5 and iOS 3.X

But, there are users with an iPhone 3GS running on iOS 3.X.

I made some tests with one iPhone 3GS running on iOS 4.0: I had no issues and no options to add in my project settings.


Thanks for your answer. The problem may be the version of my XCode.

Like I said, I have already added the architecture armv6. But with my iPhone 3G iOS 3.X, this is not enough.

Did you test only this setting with one iPhone 3G with success?

I should do:

  1. Add the architecture arm6
  2. Set the Base SDK with "Latest iOS" (iOS 5.0)
  3. Set the iOS Deployment Target with the minimum value

--- It's what you advice ----

  1. Remove into the info.plist the parameter "Required device capabilities" (armv6 and armv7)
  2. Add SystemConfiguration.framework as Optional (to make a weak link)

With this settings, my app crashes: "dyld: Symbol not found: __NSConcreteGlobalBlock"
So I should also add in the flag "Other Linker Flags", - weak_library /usr/lib/libSystem.B.dylib

This is one of my questions:
If I submit my app with these options "special 3G", will these options be take into account and the support will be back?

1

There are 1 best solutions below

3
On

By default, Xcode 4.2 does not include support for the iPhone 3G, but you can add it back. Just select your app target and select "Build Settings". At the top, change the Architectures listed from "Standard (armv7)" to "Other". In the pop-up box, select the existing option and click the minus button, then click the plus button and add "armv7", then again click plus and add "armv6". armv7 will support the newer chips, while armv6 will add back in support for the iPhone 3G... providing you set your iOS Deployment Target to iOS 4.2 or earlier... your setting at 3.x should be just fine—that merely limits you to not using newer features of iOS obviously.

You may also need to add "-mno-thumb" under "Other C Flags" in the Build Settings, though if my memory serves me correctly that may only have been if you are wanting to use Automatic Reference Counting on the old architecture—and even then only because this is a work-around for a known bug.