2011-11-30 183 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 。