【发布时间】:2011-11-30 06:57:58
【问题描述】:
Xcode 4.2 是否支持为 iOS 3.1.3 编译项目?我尝试编译我目前正在处理的一个项目,每次尝试在装有 iOS 3.1.3 的 iPhone 3G 上运行该应用程序时,我都会遇到崩溃。我知道我运行的操作系统已经过时了,但是客户端要求应用程序应该在 iOS 3.1.3 上运行。任何想法我将如何解决这个问题?
【问题讨论】:
标签: xcode4 compilation crash ios-3.x
Xcode 4.2 是否支持为 iOS 3.1.3 编译项目?我尝试编译我目前正在处理的一个项目,每次尝试在装有 iOS 3.1.3 的 iPhone 3G 上运行该应用程序时,我都会遇到崩溃。我知道我运行的操作系统已经过时了,但是客户端要求应用程序应该在 iOS 3.1.3 上运行。任何想法我将如何解决这个问题?
【问题讨论】:
标签: xcode4 compilation crash ios-3.x
在 Build Settings 中更改以下设置:
在 *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;
}
呃……抱歉……忘记了……
【讨论】:
为了让 XCode 4 为 iOS 3.1 编译并在 3G iPhone 上调试,我必须做很多事情:
降级到 XCode 4.3.3。
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 上运行和调试了。
【讨论】: