Подпись кода требуется для типа продукта Unit Test Bundle в SDK iOS 8.0


128

Получение

Подписание кода требуется для типа продукта "Пакет модульных тестов" в SDK "iOS 8.0".

Моя цель приложения - это подпись кода, но моя тестовая цель - нет. Я купил новый компьютер, создал новый сертификат разработки с компьютера, соответствующим образом обновил профиль обеспечения, установил оба, но не могу обойти эту ошибку подписи кода.

Любой способ стереть все сертификаты / профили локально, чтобы я мог переустановить?

Наверное баг какой-то.


У меня была аналогичная ошибка - мое исправление заключалось в том, чтобы войти в настройки сборки и выбрать профили подготовки, а не автоматически выбирать их.
scb998

Ответы:


129

Проблема в том, что проект находится под контролем версий, и каждый раз, когда я вытаскиваю файл .xcodeproj обновляется. А поскольку мой профиль подготовки отличается от профиля в системе управления версиями, цель модульного теста автоматически переключается на «Не подписывать код». Поэтому мне просто нужно устанавливать профиль там после каждого нажатия git.

Очевидно, при развертывании на устройстве, если есть цель модульного теста, она должна быть подписана кодом.

шаги:

1) Измените цель на свою тестовую цель (AppnameTests)

введите описание изображения здесь

2) Убедитесь, что «Идентификация подписи кода» НЕ является «Не подписывать код». Выберите профиль для входа

введите описание изображения здесь

Это все, что мне пришлось изменить, чтобы заставить его работать.


Я столкнулся с той же проблемой, что и в предыдущем вопросе, но не могу понять, как ее решить, и я разместил вопрос по этому поводу. stackoverflow.com/questions/27312745/…
Нил

Не могли бы вы рассказать мне пошаговый процесс, как это сделать.
Neal

Была проблема в Xcode 8. Разрешение было не таким, как у вас, но близко. Спасибо, что указали мне дорогу!
user3259235

Кроме того, в дополнение к настройке «Идентификатор подписи кода» вам может потребоваться также установить «Команда разработчиков».
bitand

100

Я исправил проблему (временно), перейдя в Edit Scheme, а затем в разделе Build, удалив мою цель модульного теста из возможности вызываться в «Run».


1
Хороший улов! Почему ты говоришь временно ? Мне это кажется разумным решением. Вы отправили приложение в магазин?
mokagio 02

Нет проблем с отправкой приложения в App Store. Я сказал «временно», потому что полагал, что есть более постоянное исправление, которое возможно, если возиться с подписью кода, но это было быстрое исправление без проблем.
ZS

2
Хорошо, спасибо. Мне это кажется хорошим решением, цель модульного теста все равно не должна выполняться. +1
мокагио

Можете объяснить мне поподробнее? вы имеете в виду, что я должен «строить»? и я не понимаю «удаление моего модульного теста из-под запуска в режиме Run»
LKM

66

Другой совет мне не помог, но я исправил эту ошибку, перейдя в Product > Scheme > Edit Scheme. Затем я щелкнул Buildслева и снял флажки рядом с AppNameTests. Я использую XCode 6.3

введите описание изображения здесь


@Almo Не снимайте флажки под надписью «Test», а снимайте все флажки (которые можно снять) в строке APPNAMEtests. Я добавлю снимок экрана в свой ответ, чтобы прояснить ситуацию.
Оливия Сторк,

1
Я сделал это и снял все флажки, кроме Test. Оказалось, что мне пришлось удалить файл .plist, чтобы он больше не пытался подписать тест. Мой проект создает статическую библиотеку, поэтому ее не нужно кодировать.
Almo

1
Ааа ладно. Что ж, похоже, что существует множество причин, по которым эта проблема может быть вызвана, и столько же способов ее исправить. Если никто не упомянул ваше решение, вы можете опубликовать его как еще один возможный ответ.
Оливия Сторк,

3
@huggie ¯ \ _ (ツ) _ / ¯ Добро пожаловать в программирование для iOS!
Оливия Сторк,

1
@OliviaStork, ты меня обязал. Большое вам спасибо за спасение моей работы.
Анураг Шривастава

29

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

Параметры тестовой цели -> Параметры сборки -> Подпись кода -> Идентификация подписи кода. Ранее он был установлен на «Не кодировать знак».


Выбор профиля подготовки явно сработал для меня, спасибо.
Майк Веллер,

Также убедитесь, что вверху выбран фильтр «Все», а не «Базовый».
Марти

13

Кроме того, если вы установите целевое устройство сборки, проблема исчезнет при тестировании и отладке. Подписанный код нужен только тогда, когда вы пытаетесь развернуть приложение на физическом устройстве.инжир

Я изменил свой с «myIphone» на симулятор iPhone 6 Plus, и он решает проблему, пока я разрабатываю приложение.


1
но как насчет того, если вы ХОТИТЕ развернуть свое приложение на физическом устройстве ±!
Марвен Трабелси 01

8

В моем случае проблема, с которой я столкнулся, была:

Ошибка CodeSign: для типа продукта «Пакет модульного тестирования» в SDK «iOS 8.4» требуется подпись кода.

К счастью, цель ничего не реализовала, поэтому быстрое решение - удалить ее.

введите описание изображения здесь


2

Я получал эту ошибку при запуске xcodebuild из командной строки для интеграционных тестов на моем рабочем CI. Мне удалось заставить его работать, установив настройку уровня проекта на codeign. По какой-то причине целевой параметр игнорировался, и он возвращался к настройке проекта.


2

Если из приведенных выше решений ничего не работает, выполните следующие действия.

Из Targets выберите appnameTests в разделе «Информация»

Изменить следующее

Идентификатор пакета: com.ProjectName. $ (PRODUCT_NAME: rfc1034identifier)

в com.ProjectName.appname

Название пакета: $ (PRODUCT_NAME)

Название пакета: appname

Скомпилировать и выполнить


1

Я решил проблему, изменив «Профиль обеспечения» в том же разделе («Подписывание кода») с «Автоматически» на «Имя MyProvisioningProfile».


0

Привет, я столкнулся с той же проблемой сегодня. Прочитав ответ «Спентак», я попытался подписать код моей цели, чтобы установить iOSDeveloper, и все равно не работал. Но после того, как я изменил «Профиль инициализации» на «Автоматический», проект был построен и запущен без каких-либо ошибок подписи кода.


0

Иногда это происходит, когда вы загружаете проект с github или других сторонних учебных сайтов. Эти приложения обычно подписаны другим идентификатором или компанией / именем. Когда это происходит, если вы не можете решить решение, просто создайте новый проект xcode и скопируйте все файлы заголовков и реализации в свой новый проект. Также не забудьте файлы зависимостей ... такие как файлы фреймворка. Это работает для меня.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.