У приложений 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 и может решить ее, посмотрев приложение, а затем перейдите к пункту "Наблюдение за развертыванием ОС", там вы можете выбрать более низкую версию, основанную на ваших часах. Надеюсь, если это поможет.