2015-05-12 4 views
32

Я пытаюсь создать свое приложение, но это не удалось. Мне показано сообщение ниже.Идентификаторы пакетов расширения WatchKit

error: WatchKit Extension doesn't contain any WatchKit apps whose bundle identifiers match "com.domain.appname.watchkitapp". Verify that the value of WKAppBundleIdentifier in your WatchKit Extension's Info.plist matches the value of CFBundleIdentifier in your WatchKit App's Info.plist.

Я недавно изменил "com.domain.appname.watchkitapp" к "com.domain.differentappname.watchkitapp".

Я не могу найти, где это изменить.

ответ

128

Вы должны быть осторожны при изменении идентификаторов пучка, вот как они должны быть установлены (вам нужно изменить каждый идентификатор в Info.plist для приложения iPhone, для Watchkit расширения в и для Watchkit App):

iPhone Application Info.plist:

Установите любой идентификатор пакета, как вам нравится («Связка i dentifier ").

Пример:

Bundle identifier: com.fruitcompany.orange 

WatchKit App Info.plist

Расслоение Идентификатор здесь должен быть префикс с идентификатором приложения iPhone, как этот (пример):

Bundle identifier: com.fruitcompany.orange.watchkit 

Вам также необходимо изменить WKCompanionAppBundleIdentifier, который должен матча с идентификатором iPhone расслоения приложений, как это:

WKCompanionAppBundleIdentifier: com.fruitcompany.orange 

Watchkit Extension Info.plist:

Идентификатор пакета здесь должен префикса с идентификатором приложения iPhone, как это (пример):

Bundle identifier: com.fruitcompany.orange.watchkit.extension 

Кроме того, необходимо установить WKAppBundleIdentifier под атрибутом NSExtension.

WKAppBundleIdentifier

WKAppBundleIdentifier идентификатор сусло матч с WatchKit приложения идентификатор пакета, как это:

WKAppBundleIdentifier: com.fruitcompany.orange.watchkit 
+2

Я следил за тем же, но я получаю идентификатор пакета встроенного двоичного кода, не префиксный идентификатор пакета родительского приложения. –

+2

Должно ли расширение идентификатора пакета быть com.fruitcompany.watchkit.entension? –

+1

, когда я создал другой идентификатор приложения с com.fruitcompany.orange.watchkit.entension, он работает, интересно, что заставляет это делать. –

0

Таким образом, вы не обязательно меняете что-то, когда хотите просто запускать тестовые устройства. Но вам нужно запросить еще два профиля подготовки, чтобы проверить приложение часов. Эти два дополнительных идентификатора могут быть получены из целевого объекта назначения и отслеживания приложения. Это также то же самое, что вам нужно сделать, когда вы хотите загрузить приложение для часов в Магазин приложений

+0

Я создал три профили обеспечения, один для приложения, один для расширения и один для приложения часов. Именно по этой причине мне пришлось изменить идентификатор. Однако, похоже, он не изменился в одном из мест. –

+0

На самом деле, нет необходимости менять после добавления этих двух целей. Поскольку XCode автоматически генерирует для вас два разных идентификатора. Таким образом, вам нужно всего лишь скопировать и вставить его для создания идентификатора приложения в следующий раз. И да, вам нужно изменить идентификаторы в info.plist соответственно, если вы изменили свои идентификаторы на эти две цели. Надеюсь, это сделает вас удобными. –

0

Вы можете также изменить ключ WKCompanionAppBundleidentifier в проектах IOS компаньона приложения инфо р. список в соответствии с ключом WKAppBundleIdentifer в расширении набора данных av.plist.Я узнал об этом, когда я скопировал предыдущий проект набора часов и сменил WKAppBundleIdentifier в расширении набора данных. Info.plist, чтобы соответствовать идентификатору пакета в наборе часов info.plist, и проект по-прежнему получил ту же ошибку. Вам нужно пойти в Finder, найти сопутствующий проект iOS info.plist и дважды щелкнуть по нему, а затем при необходимости изменить ключ WKCompanionAppBundleIdentifer. Я не смог увидеть этот ключ, посмотрев ant info.plist в Xcode.

+0

На самом деле вам нужно открыть info.plist с помощью TextEdit и внести изменения в ключ. Вы также должны внести такое же изменение в расширение набора данных info.plist. Я проверил, что это работает с проектом, в котором я изменил идентификатор пакета в iOS-мишени, цель набора часов и цель расширения набора часов. –

4

Во-первых, позвольте мне выделить отличный ответ на этой странице @DejanSkledar, так как все места, отмеченные в ответе, важны.

Тем не менее, точной установки в этом ответе было недостаточно для меня. Я хотел бы дополнить этот ответ и указать, что с watchkit 2, как вам кажется, требуется иерархия при работе из приложения, приложения часов, а затем, наконец, к расширению приложения с точки зрения идентификатора пакета.

Вот настройки в каждом из соответствующих файлов info.plist, которые работали для меня после того, как я нашел edwardmp's answer on a related issue.

iPhone приложения Bundle Id: com.domain.yourapp

Watch приложения Bundle Id: com.domain.yourapp.watchkit

Watchkit в Extension Bundle Id: com.domain .yourapp.watchkit.extension

Как вы можете видеть, приложение для iPhone имеет приложение для видеонаблюдения, которое само происходит o иметь расширение сторожевого таймера, и каждый из этих уровней должен отражаться в каждом из их соответствующих идентификаторов пакета.

Завершение отношений, приложение часы должны указывать на приложение iPhone, к которому она принадлежит, используя его (WKCompanionAppBundleIdentifier), а также расширение часы должны указывать на приложение часов, к которой он принадлежит (WKAppBundleIdentifier.)

WKCompanionAppBundleIdentifier Watch приложения: com.domain.yourapp

Watch приложения Extension WKAppBundleIdentifier: com.domain.yourapp.watchkit

Надеюсь, это сэкономит кому-то некоторое время, так как мне пришлось несколько минут бороться с этим :(

Смежные вопросы