亲爱的stackoverflowers!
我目前正在准备一个 iPhone 应用程序以提交到 App Store。这是一个更大的跨平台 C++ 项目,为此我不得不放弃 Xcode 作为 IDE 并转向更“跨平台类型”的构建系统。现在这是一个简单的 Makefile。在开发过程中一切都很好,只是利用了 XCode 构建链,而不是使用 XCode 本身。但是,现在还有一个我不太知道如何通过的最后一道障碍:
在许多其他与打包相关的错误之后,Apple 的 Application Loader 吐出了我的 .ipa 文件,最后一个是:
"The bundle is invalid. Apple is not currently accepting applications built with this version of the SDK or Xcode."
我已经看到我显然不是唯一遇到此错误的人,但大多数其他描述如何解决此问题的文章都是关于通过 Xcode 设置解决它,或者显然已经过时(2011 年或更早)。
关于应用程序的事实:
两天前,该应用程序仍然与 iOS 5.0 SDK 链接。鉴于该错误,我花了一些时间将应用程序与最新的 SDK 6.1 链接起来。所以这是出路,仍然是错误(但是,我没想到apploader后面的服务器会尝试“解析”我的可执行文件以查看我的SDK链接到哪个版本......或者这样做,并且是否有一些指向 iOS 5.0 的残留链接?)
接下来,我的 Info.plist。好吧,这里是:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>Drone game</string>
<key>CFBundleExecutable</key>
<string>game</string>
<key>CFBundleIconFiles</key>
<array>
<string>icon.png</string>
<string>icon@2x.png</string>
<string>icon-iPad.png</string>
</array>
<key>CFBundleIdentifier</key>
<string>[The bundle identifier]</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleIconFile</key>
<string>icon.png</string>
<key>CFBundleName</key>
<string>Drone game</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSMainNibFile</key>
<string>MainView</string>
<key>CFBundleResourceSpecification</key>
<string>ResourceRules.plist</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIApplicationExitsOnSuspend</key>
<true/>
<key>UIStatusBarHidden</key>
<true/>
<key>LSApplicationCategoryType</key>
<string></string>
<key>UIInterfaceOrientation</key>
<string>UIInterfaceOrientationLandscapeRight</string>
<key>MinimumOSVersion</key>
<string>6.1</string>
<key>LSRequiredIPhoneOS</key>
<true/>
<key>UILaunchImageFile</key>
<string>Default.png</string>
<key>CFBundleGetInfoString</key>
<string></string>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
<integer>2</integer>
</array>
</dict>
</plist>
我假设应用程序的属性列表中仍然缺少一些选项,这些选项被应用程序加载器检测到,或者某些值以错误的方式填充。部分问题在于 Apple 的开发人员指南在不使用 Xcode 时并没有真正的帮助。有很多键标有“不使用,由 Xcode 填写”,只有很少的解释(例如:MinimumOSVersion)。
问题本质上是:有人知道应用程序加载器从哪里获取使用的 SDK 版本吗?或者应用程序加载器是否关心“Xcode 版本”并且需要在某处指定?任何建议都会很棒!