14

我在 Lion 10.7.2 上运行 Xcode 4.2,并且我有一些应用程序需要更新到 Lion 沙箱,因此我可以将它们重新提交到 Mac App Store(Mac,而不是 iOS)。一路上的某个地方,我有一个弹出窗口要更新到组合更新 10.7.3,然后一切都出错了。

如果存档是在 10.7.2 中编译的,则验证和提交应用程序很好,但如果它是在 10.7.3 更新之后编译的,则它无法再验证应用程序。没错,在 10.7.3 下我仍然可以验证应用程序是否在升级之前编译。之后编译的任何内容都会给我这个:

“此捆绑包无效。Apple 目前不接受使用此版本操作系统构建的应用程序。”

在以下每次尝试之后,我已清理、重建存档,并再次尝试通过 Xcode Organizer 和 Application Loader 独立验证或提交应用程序:

  • 我尝试通过完全卸载、重新启动和安装来升级到 Xcode 4.2.1,但没有。

  • 我阅读了这个类似的线程并尝试使用新的 Application Loader 2.5.1 并确保系统上没有其他 Application Loader 但这也不起作用。通过 Xcode 的应用程序加载器和独立运行都会给出相同的错误。

  • 另一个线程尝试将基本 SDK 更改为 10.7。我之前是 10.6,所以我仍然可以支持 Snow Leopard,是的,您可以提交针对 10.6 构建的沙盒应用程序,这些应用程序可以在 Lion 沙盒和 SL 非沙盒中工作,因为我最近使用两个应用程序完成了它)。不幸的是,使用 10.6 或 10.7 SDK 构建不会出现此错误。

我读过当开发人员尝试提交基于 beta 平台构建的应用程序时会发生同样的错误,但我没有运行任何 beta 版本,自从我在 8 月份购买这台 MacBook 以来,我过去也没有运行过。

任何想法将不胜感激。提前致谢。

4

6 回答 6

7

好的,我让它以一种完全不安全的方式工作......所以我不能说这是解决这个问题的好方法。

无论如何:

我查看了 SystemVersion.plist,发现我们为 10.7.3 构建的版本是 11D50b(b 当然是测试版)。当然,10.7.3 没有被宣传为测试版……如果是,我就不会升级。

基本上我将 /System/Library/CoreServices 中的 SystemVersion.plist 更改为:

Build Number: 11C74
ProductUserVisibleVersion: 10.7.2
ProductVersion: 10.7.2

您可以在更改权限后使用 TextEdit 执行此操作,或者如果您熟悉 nano,只需:

sudo nano /System/Library/CoreServices/SystemVersion.plist

与往常一样,在使用 sudo 做任何事情时要格外小心。

从那里,我重新启动了 Xcode(确保你这样做,我尝试不重新启动 Xcode 并且它不起作用),清理,存档,然后能够成功提交。

紧接着,我关闭了 Xcode 并确保将所有内容都改回原来的样子:

Build Number: 11D50b
ProductUserVisibleVersion: 10.7.3
ProductVersion: 10.7.3

我绝对不会尝试重新启动或类似的有趣的事情,不知道会发生什么。但这对我有用。

于 2012-02-12T02:50:06.920 回答
3

好的,我遇到了同样的问题,我也已经安装了 Xcode 4.3,因为我希望这会解决这个问题。Xcode 4.3 需要 10.7.3,因此无法将 SystemVersion.plist 更改为 10.7.2,但只需删除 11D50b 末尾的 b 并重新启动 Xcode,我就可以提交我的应用程序。

于 2012-02-18T10:29:00.850 回答
3

2012 年 3 月 12 日编辑:我使用付费支持票直接联系了 Apple。事实证明,这是 Mac App Store 中的一个错误。他们的团队已经解决了这个问题。现在应该可以使用 11D50b 提交。

使用 Xcode 4.3 解决 OS X 10.7.3 上的问题

您将需要更改 SystemVersion 文件,这可以使用命令 sudo nano /System/Library/CoreServices/SystemVersion.plist 来完成(ctrl o,保存)

我当前的文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
    <key>ProductBuildVersion</key>
    <string>11D50b</string>
    <key>ProductCopyright</key>
    <string>1983-2012 Apple Inc.</string>
    <key>ProductName</key>
    <string>Mac OS X</string>
    <key>ProductUserVisibleVersion</key>
    <string>10.7.3</string>
    <key>ProductVersion</key>
    <string>10.7.3</string>
</dict>
</plist>

将 11D50b 更改为 11D50,重新启动 xcode 并清理代码。然后再次提交。提交后记得把文件改回原来的。

于 2012-02-22T09:47:42.863 回答
1

使用以下命令编辑 plist 文件的值以将您的 OSX 版本升级到 10.7.4

sudo nano /System/Library/CoreServices/SystemVersion.plist 原始值:

内部版本号:11D50 ProductUserVisibleVersion & ProductVersion:10.7.3 新值

Build Number: 11E27 ProductUserVisibleVersion & ProductVersion:10.7.4 Ctrl+O 保存,现在你可以安装最新的 XCode

http://cocoauser.wordpress.com/2012/08/03/how-to-install-latest-xcode-in-10-7-3-lion/

于 2012-08-03T17:09:54.893 回答
0

像 incarna 一样,我没有解决方案,但我确实有一个解决方法,可以让我提交到商店。这样做可能更安全,因为不涉及欺骗。这仅在您为 10.6 构建时才有用,但您仍然可以实现 10.7 沙箱并保持 Snow Leopard 兼容性

如果您有另一台带有 Snow Leopard 的 Mac,或者碰巧有带 SL 的双启动,您可以安装 Xcode 4.2 for SL。顺便说一句,使用 SL 进行双启动很棘手,因为 SL 安装盘无法识别 Lion 机器上的分区方案。我不得不使用另一台 Mac 的火线并以目标模式将其安装到 MacBook。这是我之前第一次拿到 MacBook 时所做的事情。如果你想知道怎么做,请谷歌它。

无论如何,我将项目复制到 SL 分区并在 Xcode 4.2 中打开它。您会注意到的一件事是 GUI 不包含权利或沙箱复选框选项,但您仍然可以在项目中看到权利和容器迁移 plist 文件(假设您之前在 Xcode 中的 Lion 下设置它)。我猜即使没有 10.7,在 SL 下使用 Xcode 4.2 的编译器仍然知道如何处理这些文件。

我在 SL 中重新编译了 Xcode 4.2 下的项目并验证了存档。都好。然后我将应用程序作为 .pkg 文件共享,并将其保存到我的 Lion 分区。我安装了 .pkg 并在 Lion 中运行了我的应用程序。沙盒容器确实正确迁移并且应用程序按预期运行。在验证它有效后,我重新启动到 SL 并提交了应用程序。

你有它。证明沙盒应用程序可以在 SL 中编译和提交,SL 仍然是一个有效且合法的交付平台。

于 2012-02-12T10:00:54.737 回答
0

只是一个快速更新,在 Xcode 4.3 之后重新启动 Xcode 将不起作用,因为它检测到只能在 10.7.3 上运行但是按照说明更改 plist 文件,然后清理、归档和分发似乎工作。我目前正在等待我的应用程序获得批准。

于 2012-02-18T01:16:36.443 回答