我有一个应用程序,从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.