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
在您的<AppName>-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 目标