ERROR ITMS-90094:“无效的启动图像 - 您的应用程序包含一个大小修饰符的启动图像,该修饰符仅适用于使用iOS 6.0 SDK或更高版本构建的应用程序。”
该应用程序是使用iOS 8.2 SDK在Embarcadero RAD Studio XE7 / C ++ Builder中构建的。我已经创建了有效的Adhoc Distribution移动配置文件,并将其放在我的Mac上,并由PAServer 15.0和Xcode 6.2用于编译该应用程序。我在我的项目属性| iOS平台的Adhoc分发中正确定义了它。我切换到发布模式,并通过项目管理器选择Adhoc。我首先对该应用程序进行了清除,然后进行构建和部署。最后,我得到了一个有效的.ipa文件,在我的测试设备上完美运行。
根据苹果公司的说法,如果您使用iOS SDK 5.1或更早版本构建应用程序,但包括Default-568h@2x.png图像(用于iPhone 5的4英寸视网膜显示屏支持),则会出现此问题。它建议解决此问题时使用iOS 6.0 SDK或更高版本构建应用程序。但是如我所述,我正在使用iOS 8.2 SDK。我还尝试过8.1,这是我系统中唯一安装的iOS SDK版本。
它说,如果您不打算使用iOS 6 SDK构建应用程序,则从项目中删除Default-568h@2x.png。我尝试删除此文件,错误消息就消失了,但是随后又出现了另一个错误:“iPhone 5优化要求 - 您的二进制文件未针对iPhone 5进行优化。”
它必须以某种方式检测到IPA文件中的错误版本(我只能假设这在RAD Studio方程式的一侧是问题,而不是Xcode或其他人会遇到此问题)。其他帖子使用类似于“部署目标”,“基础SDK”和“目标SDK”的术语。
我相信我已正确设置所有内容,但如何修复XE7生成的IPA,使其被Application Loader正确检测为是使用iOS 6.0之后的较新SDK构建的呢?
我尝试过以下解决方法(均未成功):大多数搜索结果都说要使用更新的Xcode版本(至少为5或更高版本),但我正在使用最新的Xcode版本6.2。注意:无论哪里都提到版本6.0,我也尝试过7.0。项目选项指的是目标:所有配置 - iOS设备平台。
首先,他建议您在Project | Deployment下创建一个自定义的Info.plist文件。然后为了解决无效的图像问题,他说您需要添加MinimumOSVersion key,并将其设置为6.0。
在Custom.info.plist中添加:
<key>MinimumOSVersion</key>
<string>6.0</string>由于我只能发布2个链接,所以你需要在community.embarcadero.com的Answers中搜索"Problems deploying for iOs 8.1"来查看原始帖子。
在那里,他们建议您安装Hotfix 30036 "Hotfix for Submitting iOS Applications to Apple AppStore" - 我已经安装了。他们还建议在Project Options | Delphi Compiler | Compiling中添加"--ios-version-min:6.0"到Additional options to pass to the compiler。不确定这是否会影响我,因为我正在使用BCB,但我也尝试了一下。stackoverflow上的一篇文章描述了如何在.IPA文件上使用otool和grep来确定版本信息。所以我解压了我的ipa文件,运行了otool w/ grep,返回了以下输出:
cmd = LC_VERSION_MIN_IPHONEOS
cmdsize = 16
version = 7.0
sdk = 7.1
虽然它没有说8.1或8.2,但两个版本都是7+。这明显比6.0新,所以Application Loader肯定从其他地方获取了版本号。将Project Options | C++ Linker: Advanced: Minimum iOS version supported更改为6.0。
将Project Options | Delphi Compiler | Linking: Minimum iOS version supported更改为6.0。
尝试创建一个全新的空白多设备应用程序,进行配置并通过Application Loader上传。这与相同的错误失败。