Компиляция для iOS 3.1.3 с Xcode 4.2 - PullRequest
2 голосов
/ 30 ноября 2011

Поддерживает ли Xcode 4.2 компиляцию проектов для iOS 3.1.3? Я пытался скомпилировать проект, над которым я сейчас работаю, и каждый раз получаю сбои при попытке запустить приложение на iPhone 3G с iOS 3.1.3. Я знаю, что операционная система, на которой я работаю, уже устарела, но клиент требовал, чтобы приложение работало на iOS 3.1.3. Есть идеи как мне решить эту проблему?

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

В настройках сборки изменяются следующие настройки:

  1. Базовый SDK -> Lastest iOS (iOS 5.0)
  2. Цель развертывания iOS -> iOS 3.1
  3. Архитектуры -> выберите другое ... и вручную добавьте "armv6"
  4. Valid Architectures -> удалите "armv7", просто оставьте "armv6"

In * 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 голосов
/ 28 января 2013

Вот несколько вещей, которые мне пришлось сделать, чтобы компилировать XCode 4 для iOS 3.1 и отлаживать на iPhone 3G:

  • Переход на XCode 4.3.3.

    Xcode 4.5.2 просто откажется подключаться к iPhone 3G для отладки. Версия 4.3.3, к счастью, сосуществует вместе с 4.5.2, они могут даже использовать один и тот же файл проекта, хотя оставление armv7 в настройках архитектуры вызовет безобидные предупреждения в 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];
    

    И тогда вы сможете запускать и отлаживать на iPhone 3G.

...