ios7 – 图标,资产目录和Info.plist混淆

我有一个应用程序,从iOS 5开始生活,并从那时起一直在更新.对于iOS 7,我已经切换到使用资产目录来获取所有资源,这很好并且似乎运行良好.但是,当我尝试提交给Apple时,我收到验证错误

Invalid Image Path – No image found at the path referenced under key ‘CFBundleIconFiles’: ‘Icon@2x.png’

我也得到了其他图标的相同错误.这些图标确实出现在资产目录中,名称 – 直到案例 – 完全符合我的判断.资产目录位于“复制包资源”中,当我在iPhone和iPad(iOS 7)和iOS 6模拟器中运行应用程序时,所有资源都显示在正确的位置.

我已更新应用程序以使用iOS 6的最低部署目标.

那么,我如何成功将更新提交给Apple?我是否需要Info.plist中的引用?我还应该检查其他任何设置吗?警告是否是虚假的,我应该忽略一些事情(在提升雷达之后)?

解决方法

当为iOS 6及更低版本编译资产目录时,图像将放在应用程序包的根目录中,就像您只是以旧方式复制它们一样.发生这种情况时,Apple会根据资产名称而不是文件名来命名图像,这意味着我们仍然可以使用[UIImage imageNamed:]来获取iOS 6及更低版本的资产.

当我们在资产目录中设置以下图标时,App Icon资产就是如此:

它们编译成如下:

由于iOS 6仍然是iOS 6,因此必须在Info.plist中引用这些文件,否则现有系统将无法运行.查看此测试应用程序的已编译Info.plist,您会看到Xcode已为我们添加了CFBundleIconFiles,因此我们不需要.

上传了我曾经用过的测试项目github.com/danielctull-tests/AssetTest.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...