2017-02-14 3 views
5

У меня есть проект Xcode, который, похоже, не хочет компилировать мою главную цель приложения для создания продукта до того, как он попытается использовать его в качестве хоста приложения при запуске устройства тесты. Из Xcode я пытаюсь запустить модульные тесты с ⌘ + U.Ошибка теста модуля Xcode 8: не удалось определить идентификатор пакета для TEST_HOST

я сразу же получить диалог, в котором говорится: Could not determine bundle identifier for [app name] TEST_HOST

(Заменить [название приложения] с реальным именем приложения)

Этот диалог также включает в себя путь к моей локальной производной каталога продукции данных: "/Users/***/Library/Developer/Xcode/DerivedData/Lowes-aymgdtrbrarmcidtkxoqxeafmxmj/Build/Products/Debug-iphonesimulator/[app name]"

У меня есть модульные тесты, настроенные с установкой TEST_HOST, указывающей на $(BUILT_PRODUCTS_DIR)/[app name].app/[app name]. Целевая тестовая цель имеет целевую зависимость от основной цели приложения. Значение BUNDLE_LOADER установлено на $(TEST_HOST). Если я сначала скомпилирую основной объект приложения, нажав ⌘ + B, создайте правильную структуру и приложение каталога, а затем нажмите ⌘ + U бутстрапов и правильно проверите модульные тесты. Если я сделаю чистый и попробую еще раз, он сразу же потерпит неудачу. Я никогда не сталкивался с этой проблемой раньше, и, похоже, она возникла после того, как приложение было преобразовано в Swift 3. Это может иметь или не иметь никакого отношения к проблеме, не совсем уверен.

Я прочитал несколько ответов здесь и попробовал много предложений, но у них, похоже, нет такой же корневой проблемы, как у меня. Для большинства людей кажется, что приложение-хозяин для «Нет» и обратно к основной цели устраняет проблему. Это не относится ко мне.

Я пробовал свежие извлечений, повторно преобразования приложений и тестовых целей для Swift 3, а также стандартную чистую/папку чистой сборки/протирать полученные данные. Ничто из этого не имеет никакого эффекта.

Неужели кто-нибудь еще испытал эту проблему и понял решение?

+0

Попробуйте проверить версию перед конвертированием, чистым проектом и производными данными, убедитесь, что они строят, снова конвертируют, очищают проект и производные данные, строят. – shallowThought

+0

Да, я выполнил все эти шаги как часть устранения неполадок. Прямо сейчас кажется, что Xcode просто не хочет сначала создавать приложение. –

+0

Возможно, обновите свой вопрос с подробностями ваших новых результатов. Я не понял эту проблему в вашем комментарии: «похоже, что Xcode просто не хочет сначала создавать цель приложения». Он не создает транзакцию, предшествующую преобразованию? – shallowThought

ответ

12

Я нашел решение для этого. Это может не относиться ко всем сценариям, но оно исправлено. В основных настройках проекта на вкладке «Информация» есть возможность выбрать конфигурацию для запуска при запуске сборки командной строки. У меня было освобождение. Перевернув это, Debug исправил мою проблему.

Xcode Project Settings, Info Tab

+1

Другим возможным решением является установка «Bundle Loader» в конфигурации Release. –

+0

Это исправлено для меня. Кроме того, он продолжал работать, когда я сменил его на Release. –

+1

@ DanielLahyani Я думаю, что ваше решение правильно, но не могли бы вы объяснить, почему? Большое спасибо –

0

Удаление Test Host полностью из Build Settings вашей тестовой цели будет решить эту проблему

+0

Я пробовал этот шаг, это не повлияло на проблему, которую я испытал для этого вопроса. –

+0

Вероятно, потому что «тестовый хост» на самом деле установлен в '$ (BUNDLE_LOADER)' (это значение по умолчанию, которое я думаю), если вы удалите значение «Bundle Loader», которое, вероятно, выполнит эту работу. –

0

кажется, что установка "Bundle Loader" в конфигурации Release решает эту проблему.

Я не могу полностью понять, почему, но для меня эта ошибка всегда появлялась в нашей системе CI, где мы выполняем сборку из командной строки. В настройках проекта мы установили «Использовать Release для сборки командной строки». Поэтому я считаю, что даже если мы установили конфигурацию сборки в Debug через аргументы командной строки, xcodebuild игнорирует аргумент конфигурации и частично использует настройки «Release». Возможно, это ошибка с системой xcodebuild (я думаю, это стоит радар), если кто-нибудь может найти лучшее объяснение, почему это решает ошибку, которую я хотел бы услышать об этом.

Надеюсь, это поможет.

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