Xcode 5 您的二进制文件未针对 iPhone 5 进行优化验证时出现错误

Posted

技术标签:

【中文标题】Xcode 5 您的二进制文件未针对 iPhone 5 进行优化验证时出现错误【英文标题】:Xcode 5 Your binary is not optimized for iPhone 5 error while validating 【发布时间】:2014-09-28 16:40:26 【问题描述】:

我遇到了Your binary is not optimized for iPhone 5 错误:

我尝试了其他问题中建议的所有解决方案,但没有任何效果。总结一下:

我在项目的根目录中有Default-568h@2x.png 大小为640 × 1136 的图像,其中project_name.xcodeproj 是。

根据一个建议,我将Default.png (640 × 1136) 和Default~iphone.png (640 × 960) 添加到同一目录中。没用。

我正在使用大小合适的资产目录。

这是最奇怪的部分:这是应用程序的 1.1 版本。我使用相同的 .xcodeproj 和相同的图像。它第一次验证没有问题,但现在没有。有任何想法吗?

【问题讨论】:

【参考方案1】:

使用图片资源全局控制图片是否正确,看是否有警告。

为了将来更好地使用最后一个 Xcode 故事板屏幕:

要将您的应用置于通用模式:

添加情节提要或在自动布局模式下使用情节提要。

要使用多个故事板,您可以在 application didFinishLaunchingWithOptions 内的 AppDelegate 中使用它:

#pragma mark - Universal storyboard.

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        UIStoryboard *storyBoard;

        CGSize result = [[UIScreen mainScreen] bounds].size;
        CGFloat scale = [UIScreen mainScreen].scale;
        result = CGSizeMake(result.width *scale, result.height *scale);

        if(result.height <= 960)
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        
    

您可以添加所有分辨率的 iPhone 4s / 5 (s/c) 6 和 6 Plus

在您的&lt;AppName&gt;-Prefix.pch 中定义所有分辨率,如下所示:

#define   IsIphone5     ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
#define   IsIphone4     ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )480 ) < DBL_EPSILON )

然后在您的项目中调用该函数,例如 iPhone 4/5 和 iPad 的一个滚动视图:

- (void)spiegaScroll

    if (IsIphone5)

    CGRect scrollFrame;
    scrollFrame.origin = myScroll.frame.origin;
    scrollFrame.size = CGSizeMake(320, 568);
    spiega.frame = scrollFrame;
    [spiega setContentSize:CGSizeMake(320, 1100)];
    myScroll.scrollEnabled = YES;
    myScroll.pagingEnabled = NO;
    myScroll.clipsToBounds = NO;

     else if (IsIphone4) 

        CGRect scrollFrame;
        scrollFrame.origin = myScroll.frame.origin;
        scrollFrame.size = CGSizeMake(320, 480);
        spiega.frame = scrollFrame;
        [spiega setContentSize:CGSizeMake(320, 1100)];
        myScroll.scrollEnabled = YES;
        myScroll.pagingEnabled = NO;
        myScroll.clipsToBounds = NO;

     else 

//the rest is iPad in this case

        CGRect scrollFrame;
        scrollFrame.origin = myScroll.frame.origin;
        scrollFrame.size = CGSizeMake(768, 1024);
        spiega.frame = scrollFrame;
        [spiega setContentSize:CGSizeMake(768, 2094)];
        myScroll.scrollEnabled = YES;
        myScroll.pagingEnabled = NO;
        myScroll.clipsToBounds = NO;
    


希望这对您现在或将来的应用有所帮助;)

【讨论】:

谢谢@Jhon。我认为它在未来会很有用,但现在升级到 xCode 6 就可以了。 如果您使用 Xcode 6,我将完成我的帖子,您可以使用我的答案的第一部分来解决;)【参考方案2】:

检查图像是否添加到目标文件中

【讨论】:

【参考方案3】:

在您的 plist 文件中,为图标集字典中的图像设置值。

【讨论】:

你有例子吗?【参考方案4】:

有同样的问题。最后我从Iphone 5 Launch Image Problem找到了解决方案

请确定 568h 文件是 PNG 格式的吗?还要确保您为所有屏幕提供了对 iphone 5 的支持?仅添加 Default-568h@2x.png 不能保证 iphone 5 支持。对于 iphone 3.5" 和 4" 设备,您必须检查所有视图的取景。

【讨论】:

“检查所有视图的框架”是什么意思?显然,我确保它们看起来适合两种尺寸。是否有正式的标准或准则? 是的,我知道您已经检查了所有内容,但是如果错误地缺少某些视图来检查框架。以及您对标准和标准的要求是什么? 您是否有某个问题的示例并已解决?我还是不明白你的意思。【参考方案5】:

好吧,一旦我升级到 xCode 6,问题似乎就消失了。该应用程序验证没有问题。

【讨论】:

以上是关于Xcode 5 您的二进制文件未针对 iPhone 5 进行优化验证时出现错误的主要内容,如果未能解决你的问题,请参考以下文章

flash builder 您的二进制文件未针对 iPhone 5 进行优化,Application Loader,错误

PhoneGap 您的二进制文件未针对 iPhone 5 进行优化

提交时“您的二进制文件未针对 iPhone 5 进行优化”(ITMS-90096)

您的二进制文件未针对 iPhone 5 进行优化,将 launchscreen.xib 用于 iOS 8 目标

phonegap 上传应用程序时出错:您的二进制文件未针对 iPhone 5 进行优化

React-Native 我不断收到“您的二进制文件未针对 iPhone 5 进行优化”,但我有正确的图像?