Ошибка профиля обеспечения непрерывной интеграции Xcode

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

Не найдено соответствующего профиля профилей: ваши настройки сборки определяют профилирование с помощью UUID "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", однако, такого обеспечения нет профиль был найден. Ошибка CodeSign: требуется подписание кода для тип продукта "Приложение" в SDK "iOS 7.0"

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

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

Ответ 1

У меня была такая же проблема и, наконец, удалось заставить ее работать.

Прежде всего, Я добавил свой сервер в команду разработчиков, но у меня была та же ошибка, что и вы.

Затем я скопировал свой ключ от user keychain до system keychain, как указано здесь, но этого было недостаточно.

И, наконец, я скопировал профили подготовки от ~/Library/MobileDevice/Provisioning\ Profiles/ до /Library/MobileDevice/Provisioning\ Profiles/ (на самом деле я скопировал весь каталог MobileDevice, потому что он не существовал).

И теперь у меня есть непрерывная интеграция, предоставляющая мне ipa, которую я могу загрузить на своем Mac или установить в эфир на своих устройствах.

Я не знаю, зачем мне это нужно, но я надеюсь, что это сработает и для вас.

Ответ 2

У меня была та же проблема, что и при переключении на Xcode 5. Мое решение было другим.

Поскольку в сообщении об ошибке указано, что "ваши настройки сборки задают профиль инициализации с помощью UUID xxxxxx", я проверил файл, содержащий мою настройку сборки (myproject.xcodeproj/projecjt.pbxproj).

Там я нашел строку с именно этим UUID. После удаления строки (конечно, сначала сделана резервная копия файла), все снова работало.

Ответ 3

Привет, у меня была одна и та же проблема, и проблема заключалась в том, что у меня были сертификаты в моей логин-цепочке, а сборка script просматривалась в System keychain. Я также скопировал сертификат в системную цепочку ключей, и теперь Xcode смог использовать профиль подготовки для сборки

Ответ 4

после поиска решения этой проблемы, проведя 1 целый день перед моей клавиатурой, просматривая все страницы и идеи, как это решить, я действительно нашел что-то интересное.

Что-то пришло мне в голову (отредактируйте YOU_APP.xcodeproj). Поэтому я РЕШЕН ЭТО:

  • Перейдите в папку проекта
  • Щелкните правой кнопкой мыши YOU_APP.xcodeproj и выберите Показать содержимое пакета
  • Измените project.pbxproj с помощью (например, TextMate2 или что-то вроде этого)
  • СЕЙЧАС Внимание. Я нашел все, где этот UUID (неправильный UUID) будет отображаться и просто заменен моим я созданным мной и использовался в течение нескольких раз. Я заменил 13 раз.
  • сделано. Просто скомпилируйте и это.

Вы не поверите, но это сработало, потратив много времени. =)

Ответ 5

Я продолжал искать в сети последние несколько недель, пытаясь установить непрерывную интеграцию через Jenkins, а когда не удалось с помощью OS X Server Bots, оба отказались с одинаковой точной проблемой.

Копирование профилей Provisioning из " ~/Library/MobileDevice/Provisioning Profiles/" в "/Library/MobileDevice/Provisioning Profiles/" было единственным ключом.

Всего два момента, чтобы позаботиться: -

1. Если вы используете OS X Lion, позаботьтесь о том, чтобы ваша папка ~/Библиотека не отображалась в Finder, поскольку она установлена ​​как невидимая; Пожалуйста, обратитесь к http://www.macworld.com/article/1161156/view_library_folder_in_lion.html, чтобы увидеть его.

2. Не создавайте профиль подготовки (например, загружайте его из MemberCenter или так...) просто скопируйте профили, выходящие из вашей ~/Library/...; их именование отличается; все они называются UUID, например, 3.D19E524-9E2A-45C2-942C-F30AC3ACF0CC *.mobileprovision *

Ответ 6

Я получал ту же ошибку, и ни один из вышеперечисленных ответов не работал у меня. Я ссылался на Этот блог и скопировал профили подготовки из каталога ~/Library/MobileDevice/Provisioning Profiles//в библиотеку /Library/Server/Xcode/Data/ProvisioningProfiles, и я все равно получил ту же ошибку.

Итак, я открыл Xcode и синхронизировал свои профили с порталом обеспечения. Если вы незнакомы, перейдите в Настройки → Учетные записи → , выделите команду разработчиков и нажмите "Просмотреть детали". Затем выделите идентификатор подписи кода распространения в "Signing Identities" и нажмите кнопку обновления в левом нижнем углу. Я сделал это с сервера, однако, я уверен, что вы можете обновить профили подготовки на своем маке развития и затем скопировать их на сервер.

Этот процесс обновляет профили обеспечения в каталоге ~/Library/MobileDevice/Provisioning Profiles/. Затем я повторно выполнил процесс копирования в /Library/Server/Xcode/Data/ProvisioningProfiles из профилей ~/Library/MobileDevice/Provisioning Profiles/, и бот Xcode успешно нашел профиль подготовки при следующей интеграции.

В качестве примечания я попытался выйти из команды разработчиков приложений Xcode и снова войти в систему, и это специально не сработало для меня. Теоретически это должно выполнить одно и то же.

Как и другие, я бы скопировал все профили, а не нашел только профиль Ad Hoc, который вы ищете. Причина в том, что, может быть, как и в моем случае, бот Xcode пытался архивировать с профилем разработки, а "Профиль разработки" гораздо легче отлаживать, чем "4F96F173-7EBE-4892-B283-52489DE2F409".

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

Просто добавьте заметку, так как это также дало мне большую головную боль, симулятор для ботов Xcode может быть расположен в /var/ _xcstest/Library/Application Support/iPhone Simulator/. Именно там я нашел его на нашем сервере, но сомневаюсь, что это будет другим для других. Мне пришлось найти его, потому что файл Localizable.strings не обновлялся в симуляторе, и тесты не срабатывали. Надеюсь, это поможет.

Ответ 7

На самом деле решение проще, чем копирование профилей подготовки вокруг или тому подобное. Все, что вам нужно сделать, это правильно настроить Xcode Server.

Я использую Xcode 6.0.1 (6A317) с Xcode Server 3.2.1 (13S5179). Хотя я думал, что Xcode Server будет использовать профили подготовки из моей установки Xcode, это не так. У нее есть своя папка в /Library/Developer/XcodeServer/ProvisioningProfiles/, тогда как Xcode будет использовать ~/Library/MobileDevice/Provisioning\ Profiles/.

Итак, решение: Добавьте свои учетные записи разработчика в Xcode Server. Затем он автоматически загрузит все необходимые профили обеспечения автоматически, чтобы ваши CI-сборки, наконец, имели доступ к профилям подготовки. Вы добавляете учетную запись, нажав эту кнопку Edit... в разделе Builds на сервере Xcode, как вы можете видеть на скриншоте.

enter image description here

Ответ 8

У меня была та же проблема: я добавил профили подготовки к /Library/Server/Xcode/Data/ProvisioningProfiles, но получил эту ошибку. Решение заключается в изменении разрешений для профилей подготовки, чтобы каждый в системе мог их прочитать.

Ответ 9

Я попробовал все ответы здесь, прежде чем откинуться назад и подумать, что это не может быть так сложно. Искали снова и обнаружили, что Apple OS X Server (служба Xcode CI) не может найти профили обеспечения

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

Ответ 10

Удаление всей папки ~/Library/Developer/XCode должно устранить проблему кэширования. Затем профили обеспечения, расположенные в ~/Library/MobileDevice/Provisioning Profiles/, должны быть найдены надлежащим образом с помощью xcode.

Ответ 11

@amrsd Спасибо. Теперь я вижу, что многие люди копируют профили вручную из своей папки "Профилирование профилей" в "~/Library/MobileDevice" с успехом (включая меня). Если это маршрут, который вы принимаете, бросьте копию + вставить и ссылку на нее!

$ sudo -i

# mkdir /Library/MobileDevice; ln -s /Users/myuser/Library/MobileDevice/Provisioning\ Profiles/ /Library/MobileDevice/ - где myuser - ваше имя пользователя.