У приложений WatchKit должен быть установлен целевой уровень развертывания, равный iOS 8.2 (был 8.3)?

Я только что загрузил 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 и всегда есть, но мы работали с SDK iOS 8.3 для нашего компонента WatchKit (используя Swift 1.2) без проблем, используя Xcode 6.3 beta 1, 2 и 3. Эта ошибка возникла только при использовании Xcode 6.3 beta 4.

У кого-нибудь еще есть эта ошибка и знаете, как ее исправить?

Ответ 1

Выберите настройки своего проекта и перейдите к "ЦЕЛИ". Нажмите на приложение Watch Kit, выберите "Настройки сборки". Для ключевой "цели развертывания iOS" вы должны найти "iOS 8.3". По какой-то причине Xcode 6.3 Beta 4 хочет иметь это на "iOS 8.2" для "Debug" и "Release". Теперь ваш проект должен строиться так, как ожидалось.

Это все еще верно для версии XCODE 6.3!

Ответ 2

Target → "appName" Watch Kit App → поиск Развертывание → изменение цели развертывания iOS на iOS 8.2 → run enter image description here

Ответ 3

Иди в себя. Похоже на ошибку в Xcode 6.3 beta 4.

Я проанализировал файл project.pbxproj (в текстовом виде) только что созданного проекта с расширением WatchKit. Похоже, что есть настройка:

IPHONEOS_DEPLOYMENT_TARGET = 8.2;

..., который отсутствует в наших проектах, созданных с более ранними версиями Xcode.

Итак, я вручную скопировал этот параметр в конфигурации Debug и Release моего проекта. Эта ошибка исчезла.

Затем я получил еще одну ошибку о несоответствии версии между моим приложением и целевым приложением WatchKit. Устранение несоответствия этой версии позволило сборке скомпилировать чистую и работать нормально.

Я знаю, что это немного хаки, но я предполагаю, что это относительно безопасно.

При поиске в файле project.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;
        };

Ответ 4

Удивительно все еще верно в 6.4; -)

Все цели должны быть установлены в 8.2

Ответ 5

Я столкнулся с одной и той же проблемой "iOS Deployment Target '8.3' is newer thatn SDK 'iOS 8.2' in target YUOR_PROJECT WatchKit Extension"

Вот простое решение этой проблемы. Вы можете изменить цель из .xcodeproj, просто выполните следующие шаги:

  • Выполняйте какие-либо изменения в вашем проекте или файле plist (смените Build/version),
  • Выберите измененный файл проекта
  • Найдите "8.3" (Command + F) и замените его на 8.2.
  • Я приложил файл для справки.

Что это.

Это поможет вам, если у вас есть такая же проблема, как у меня.

enter image description here

Ответ 6

Перейдите в Target → Select Watch Kit App, При изменении значения развертывания от 8.3 до

//: configuration = Debug IPHONEOS_DEPLOYMENT_TARGET = 8.2

//: configuration = Release IPHONEOS_DEPLOYMENT_TARGET = 8.2

Очистите и постройте. Проблема решена!

Ответ 7

Опытная та же проблема в симуляторе с Xcode 7.3.1 и может решить ее, посмотрев приложение, а затем перейдите к пункту "Наблюдение за развертыванием ОС", там вы можете выбрать более низкую версию, основанную на ваших часах. Надеюсь, если это поможет.