WatchKit应用的部署目标必须等于iOS 8.2(之前是8.3)?

65

我刚刚下载了 Xcode 6.3 beta 4,但我的 WatchKit 应用程序现在构建失败并出现了以下错误:

Embedded Binary Validation Utility Error
error: WatchKit apps must have a deployment target equal to iOS 8.2 (was 8.3)

iOS应用和项目的部署目标实际上是7.1,一直都是这样,但我们一直在使用Xcode 6.3 beta 1、2和3来开发我们的WatchKit组件(使用Swift 1.2)而没有问题。这个错误只出现在Xcode 6.3 beta 4中。

还有人遇到这个错误并知道如何修复吗?


1
我也遇到了同样的问题。暂时回滚到Beta 3版本。 - Javier Soto
7个回答

100

选择您的项目设置,转到“TARGETS”。 点击Watch Kit App,选择Build Settings。对于键“iOS Deployment Target”,您应该找到“iOS 8.3”。由于某些原因,Xcode 6.3 Beta 4希望将其设置为“Debug”和“Release”上的“iOS 8.2”。现在,您的项目应该按预期构建。

XCODE 6.3版本仍然适用!


我尝试了这个方法,它有效了,但是我不确定它是在Debug模式还是Release模式下工作的。我只在一个地方找到了这个设置,我已经进行了更改。请问如何选择Debug或者Release模式呢? - alondono
你需要选择行旁边的箭头来展开它,以显示 Debug 和 Release。 - Aron
愚蠢的问题...我该如何安装8.2 SDK?我这里只有8.3...而且找不到安装8.2的地方 :( - Georg
1
@Georg 点击顶部工具栏的 Xcode,然后选择偏好设置,然后在下载选项卡下,您应该可以在组件下看到它。 - 4GetFullOf
请查看https://dev59.com/5Ynda4cB1Zd3GeqPBp06的#1解决方案。我选择了“项目设置...”,但在简洁的UI中没有足够的选项可以进一步操作。 - Christos Hayward

38

目标 -> "应用名称" Watch Kit 应用程序 -> 搜索部署 -> 在 iOS 8.2 上更改 iOS 部署目标 -> 运行 在此输入图片描述


16
我也遇到了这个问题。看起来是 Xcode 6.3 beta 4 的一个错误。
我分析了一个带有 WatchKit 扩展的新项目的 `project.pbxproj` 文件(在文本视图中)。看起来有一个设置:
IPHONEOS_DEPLOYMENT_TARGET = 8.2;

在我们之前使用的Xcode版本创建的项目中缺少这个设置。因此,我手动将此设置复制到我的项目的Debug和Release配置中。这个错误消失了。

接着我又遇到了另一个关于应用程序和WatchKit应用目标版本不匹配的错误。修复这个版本不匹配问题后,编译顺利通过并成功运行了。

我知道这有点像黑客技巧,但我想这相对来说比较安全。

当在项目.pbxproj文件中搜索时,您需要匹配以下搜索术语:"_WatchKit_Extension"。这应该可以确定新指令应该添加的位置附近。

在Apple论坛上的讨论主题:

https://devforums.apple.com/thread/266033?tstart=0

来自全新项目的摘录:

4F9F32751AC2024F00673D86 /* Debug */ = {
            isa = XCBuildConfiguration;
            buildSettings = {
                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                GCC_PREPROCESSOR_DEFINITIONS = (
                    "DEBUG=1",
                    "$(inherited)",
                );
                IBSC_MODULE = Bogus_WatchKit_Extension;
                INFOPLIST_FILE = "Bogus WatchKit App/Info.plist";
                IPHONEOS_DEPLOYMENT_TARGET = 8.2;
                PRODUCT_NAME = "$(TARGET_NAME)";
                SKIP_INSTALL = YES;
                TARGETED_DEVICE_FAMILY = 4;
                "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4";
            };
            name = Debug;
        };
        4F9F32761AC2024F00673D86 /* Release */ = {
            isa = XCBuildConfiguration;
            buildSettings = {
                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                IBSC_MODULE = Bogus_WatchKit_Extension;
                INFOPLIST_FILE = "Bogus WatchKit App/Info.plist";
                IPHONEOS_DEPLOYMENT_TARGET = 8.2;
                PRODUCT_NAME = "$(TARGET_NAME)";
                SKIP_INSTALL = YES;
                TARGETED_DEVICE_FAMILY = 4;
                "TARGETED_DEVICE_FAMILY[sdk=iphonesimulator*]" = "1,4";
            };
            name = Release;
        };

很高兴知道不仅仅是我遇到这个问题,那听起来应该可以解决。不过我想现在先回滚到Beta 3版本,看看是否会有修复程序。 - UberJason

2

令人惊讶的是在6.4版本中仍然适用;-)

所有目标都必须设置为8.2。


1
我遇到了同样的问题"iOS Deployment Target '8.3' is newer than SDK 'iOS 8.2' in target YUOR_PROJECT WatchKit Extension"

以下是解决此问题的简单方法。您可以从.xcodeproj更改目标,只需按照以下步骤操作:
  1. 对项目或plist文件进行任何更改(更改Build / version),
  2. 选择您修改后的项目文件
  3. 找到“8.3”(Command + F)并将其替换为8.2。
  4. 我已附上参考文件。
就这些。
如果您遇到与我相同的问题,它将会帮助到您。

enter image description here


0

前往目标 -> 选择 Watch Kit 应用程序, 在部署下更改值从8.3到

//:configuration = Debug IPHONEOS_DEPLOYMENT_TARGET = 8.2

//:configuration = Release IPHONEOS_DEPLOYMENT_TARGET = 8.2

清理并构建。问题解决!


0

在 Xcode 7.3.1 的模拟器中,已经有人遇到了同样的问题,并且通过前往 Watch App,然后进入 Watch OS 部署目标,选择基于你的手表的更低版本来解决它。希望这能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接