2011-11-30 226 views
2

Xcode 4.2是否支持編譯iOS 3.1.3的項目?我試着編譯一個我目前正在編寫的項目,每次我嘗試在iOS 3.1.3的iPhone 3G上運行應用程序時,我都不停地崩潰。我知道我運行的操作系統已經過時,但客戶端要求應用程序應該在iOS 3.1.3上運行。任何想法我將如何解決這個問題?使用Xcode 4.2編譯iOS 3.1.3

回答

1

在生成設置改變下列設置:

  1. 基地SDK - >最新的的iOS(的iOS 5.0)
  2. iOS的部署目標 - >的iOS 3.1
  3. 架構 - >選擇其他...和手動加上 「ARMv6的」
  4. 有效的架構 - >刪除 「的ARMv7」 見好就收 「的ARMv6」

在* AppDelegate.m

- (bool)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease]; 
    // Override point for customization after application launch. 
    self.viewController = [[[MyHudDemoViewController alloc] initWithNibName:@"MyHudDemoViewController" bundle:nil] autorelease]; 

    // NOTE THIS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    // iOS 3.1 don't support the following statement. 
    //self.window.rootViewController = self.viewController; 
    [self.window addSubview:self.viewController.view]; 

    [self.window makeKeyAndVisible]; 
    return YES; 
} 

呃....對不起......忘了......

  1. 檢查項目的Info.plist,它是否具有「所需的設備能力」項目,則該項目從改變「armv7」到「armv6」。
+0

謝謝...無論如何,我得到這個錯誤。 警告:所有應用程序都應該包含armv7架構(當前ARCHS =「armv6」)。 iPhone/iPod Touch:應用程序可執行文件缺少所需的體系結構。至少必須存在以下體系結構之一:armv7(-19033) –

+0

對不起,如果要爲iOS 3.1.3創建新項目,我無法幫助您解決此警告(或錯誤?) Xcode 4.2,你可以像我說的那樣做。 – Snowfox

+0

嗨,我有一個應用程序在Iphone 3GS或4上正常工作。 現在,我正在嘗試在iPhone 3G上工作,但是我不能。 我有一些問題,我想檢查一下我是否配置好了Iphone 3的項目,以確保我的問題與此配置無關。 我檢查了我的AppDelegate.m,並沒有顯示給你的代碼。強制添加該代碼或只有在需要時才需要更改? 感謝和抱歉我的英文不好 –

0

這裏有東西一大堆,我不得不做,使適用於iOS 3.1的XCode 4編譯和調試在3G版iPhone:

  • 降級到4.3.3的XCode。

    Xcode 4.5.2會拒絕連接iPhone 3G進行調試。 4.3.3版本與4.5.2並駕齊驅,他們甚至可以共享相同的項目文件,但在架構設置中留下armv7s將在4.3.3中產生無害的警告。見下文。

  • 更改項目設置

    Architecture -> go to "others", remove the line, put armv6 armv7 
    

    (你也可以在該行添加armv7s上面4.5.2編譯在同一個項目,但它會產生4.3.3下警告)

    Valid architecture -> armv6 armv7 armv7s 
    
    Deployment target -> change to 3.1 
    
  • 在plist文件的「必需的設備能力」中,移除armv7。

  • 更改目標設置(單擊左窗格中的目標)

    deployment target to 3.1

  • 編輯您的計劃,以更改調試

    In the Run section, debug, change debugger to GDB (instead of LLDB)

    In the Test section, debug, change debugger to GDB (instead of LLDB)

  • 變化自動生成這會導致iOS 3崩潰。1應用

    在你的AppDelegate 「didFinishLaunchingWithOptions」,而不是此行

    self.window.rootViewController = self.viewController;

    將這個代碼

    if ([self.window respondsToSelector:@selector(setRootViewController:)]) 
    self.window.rootViewController = self.viewController; 
    else 
    [self.window addSubview:self.viewController.view]; 
    

    然後你應該能夠運行和調試在3G版iPhone 。