Проблема Xcode 6 beta 2 при экспорте .ipa: «У вашей учетной записи уже есть действительный сертификат распространения iOS»

193

У меня проблемы с экспортом приложения для Ad Hoc Distribution на Xcode 6 beta 2:

Не удалось найти или создать соответствующие подписывающие активы

При экспорте моего проекта для специальной разработки на Xcode 6 я получаю это предупреждение. Я попытался экспортировать его на Xcode 5, и у меня не было проблем с сохранением .ipa. Кто-нибудь также испытывает эту проблему?

3254523
источник
2
@ christopher.ryan.cruz У меня та же проблема. Я все еще могу экспортировать с xcode5 на моем Mac, но получаю то же сообщение об ошибке, пытаясь с новым xcode6. Вы уже поняли это?
Гал
1
Удачи в решении этой проблемы?
simonthumper
1
@ christopher.ryan.cruz это решение. Xcode говорит: «Нет действующего сертификата распространения». Повторное создание или повторная загрузка должны решить проблему.
Oxcug
8
Просто была эта проблема с GM-версией XCode6. : - {
Кендалл Хельмштеттер Гелнер,
4
У меня возникла эта проблема даже с официальным релизом xCode 6. Попробуйте отозвать много раз, удалить из цепочки для ключей, выйти и снова войти в учетную запись в xcode, но ничего из этого не дает мне положительного результата! любая помощь?
Стивен

Ответы:

52

Это то, что сработало для меня.

  1. На моей машине я держал и Xcode 5, и Xcode 6 beta.

  2. Из бета-версии Xcode 6, Архив проекта. Закройте Xcode 6.

  3. Откройте Xcode 5, перейдите к Организатору и экспортируйте как Ad Hoc build с надлежащим профилем обеспечения.

Это оно!

Аднан
источник
9
У меня такое случается на ГМ. Это не будет правильным решением намного дольше, так как Xcode 6 и iOS8 выпускают на этой неделе.
Берги
20
На Xcode 6.0.1 проблема исчезла. Apple изменила способ распространения Ad Hoc для разработчиков. Теперь вы не можете создавать специальные дистрибутивы с использованием сертификата разработки. Для построения Ad Hoc вам необходим сертификат распространения с профилем обеспечения "Ad Hoc" (не профилем обеспечения разработки). Это настоящая боль, и вы больше не можете использовать одну учетную запись Apple Developer на нескольких компьютерах Mac для архивации сборок TF (TestFlight). Похоже, что каждый разработчик должен платить $ 99 / год индивидуально! TestFlight от Apple звучит многообещающе, но бета-версии будут проверяться группой обзора приложений. :(
Аднан
3
Позже - после того, как я отозвал и заново сгенерировал все сертификаты и профиль обеспечения для данной учетной записи разработчика, проблема была окончательно решена.
Грэм Доусон
1
На Xcode 6.1 проблемы больше нет. Но если вы хотите сделать Ad Hoc build для дистрибутива TestFlight (testflight.com), вы должны использовать Ad Hoc Distribution Provision. Обеспечение разработки больше не позволит вам архивировать для специального распространения. Не очень хороший подход со стороны Apple.
Аднан
У меня все еще есть эта проблема в Xcode 6.1, и Xcode 5.1.1 теперь показывает желтый треугольник предупреждения всеми моими профилями, когда я пытаюсь экспортировать. Этого не произошло до того, как я начал строить с Xcode 6.1.
Грег
66

У меня была та же проблема два дня назад. Оказывается, проблема была:

  1. У меня есть собственный сертификат распространения разработчика с соответствующим закрытым ключом
  2. У меня есть сертификат распространения корпоративного разработчика моего клиента без личного ключа
  3. Я пытаюсь сделать корпоративный дистрибутив для моего клиента
  4. Xcode выдает мне расплывчатую ошибку: ваша учетная запись уже имеет действительный сертификат распространения iOS

Решение: получить закрытый ключ для корпоративной учетной записи моего клиента. Есть 2 возможных варианта:

  1. Спросите у вашего клиента учетные данные для доступа к его корпоративной учетной записи разработчика на веб-сайте Apple. Отмените старый сертификат и создайте его заново. Вы создадите закрытый ключ в процессе. ВНИМАНИЕ : отзыв корпоративного сертификата распространения делает недействительными все приложения, которые были подписаны и развернуты с этим сертификатом ( официальная информация ).
  2. Попросите вашего клиента экспортировать его закрытый ключ из его приложения Keychain Access в виде файла * .p12 и отправить его вам с паролем. Вы не можете загрузить существующий закрытый ключ с веб-сайта Apple. Единственный способ получить это - спросить своего клиента. Я сделал это и это, и я смог наконец сделать пакет.

Как узнать, есть ли у вас закрытый ключ для сертификата: Откройте приложение Keychain Access. Выберите сертификаты. Найди свой сертификат. Если вы видите маленький серый треугольник на левой стороне сертификата, откройте его и увидите свой закрытый ключ. Нет треугольника = нет закрытого ключа.

Как узнать, есть ли у вас закрытый ключ для сертификата

Александр Васенин
источник
1
У меня была эта ошибка сегодня, полностью озадаченная, пока я не прочитал ваш превосходный ответ. Большое спасибо! +1
Даль
2
Какой фантастический ответ на совершенно непробиваемую проблему.
Шмим
1
Превосходно. Спасибо.
Уэйд Андерсон
@AlexanderVasenin Я пробовал это, но такая же проблема существует до сих пор. Любое решение пришло для этого?
Залак Патель
49

У меня была та же проблема, мне пришлось использовать инструмент командной строки «xcodebuild» в качестве обходного пути, только с установленным Xcode 6 (не нужно было переустанавливать Xcode 5).

http://www.thecave.com/2014/09/16/using-xcodebuild-to-export-a-ipa-from-an-archive/

Пример:

xcodebuild -exportArchive -archivePath $projectname.xcarchive -exportPath $projectname -exportFormat ipa -exportProvisioningProfile "Provisioning Profile Name"
Крис Комо
источник
2
Спасибо вам большое! Это сработало и отправило сборку adhoc.
JocelynH
1
Я смог создать * .ipa таким образом, но не могу его установить (приложение просто зависает при установке ...). Журнал устройства в Xcode показывает ошибку подписи кода.
Александр Васенин
В какой путь к папке мы можем написать этот код для создания IPA?
Эша
1
Это было единственное решение, которое сработало для меня после попытки и безуспешного удаления и отзыва сертификатов, ключей и профилей локально и на портале для разработчиков для Xcode 6.1 / iOS 8.1
David Wadge
1
Я нашел подобное решение в отличных описательных шагах, оно действительно очень полезно
iOS Test
28

В моем случае проблема была решена путем удаления всех сертификатов распространения из моей учетной записи разработчика Apple. Затем Xcode снова удалось создать сертификаты разработки и распространения, и это помогло.

lucaslt89
источник
1
Это также означает, что вы должны заново выполнить все свои специальные профили распространения.
Кендалл Хельмштеттер Гелнер,
1
@ Кендалл, я не делал заново все свои специальные профили распространения. Просто удаляю сертификаты из брелка и портала разработчиков Apple. Тогда Xcode удалось решить все проблемы самостоятельно
lucaslt89
12
Это сработало и для меня ... это было постоянной проблемой с каждым выпуском XCode, и я действительно хотел бы, чтобы Apple потратила некоторое время на обновление этого ужасного процесса.
Raconteur
2
У меня тоже работает (с Xcode Beta 6), просто обязательно удалите сертификаты с сайта разработчика Apple и связки ключей, а затем позвольте Xcode решить проблему
Claus
Когда вы говорите, что удалили все свои сертификаты распространения, вы говорите, что удалили их со своего компьютера и xcode переустановил их, или вы сказали, что удалили их с портала участника, и xcode создал новые вместо них?
Джексонкр
19

Я получаю решение без продления сертификата:

1 - заархивируйте цель с соответствующим профилем подписи кода и профилем обеспечения

2 - Правая кнопка в созданном файле в Организаторе -> Показать в Finder

3 - Правая кнопка в файле xcarchive -> Показать содержимое пакета

4 - Там, в Finder , перейдите в Продукты / Приложения /

5 - Загрузить файл Продукты / Приложения / appName в iTunes

6 - Когда приложение появится в iTunes, щелкните по нему правой кнопкой мыши -> Показать в Finder . Это файл ipa

7 - Отправить этот ipa через App Loader 3.0

Я не думаю, что это долговременное решение, но не хочу удалять свои сертификаты

Педро Лоренте
источник
2
Пожалуйста, почему мы должны использовать загрузчик приложений здесь? я действительно не знаю об этом.
Мейди Лассиди
Каковы «соответствующие» идентификационные данные подписи кода и профиль обеспечения? Я попытался установить для идентификатора подписи кода выпуска «iOS Distribution», но это не помогло. Если я установлю профиль обеспечения релиза на что-то кроме «Автоматически», Xcode испортит идентификацию подписи кода.
Грег
Большое спасибо! Я не знал этого.
Михрибан Миназ
17

НАКОНЕЦ РЕШЕНО!

1) Создайте НОВЫЙ производственный сертификат через developer.apple.com, который требует от вас использования Keychain Access для создания нового закрытого ключа на вашем компьютере.

2) На том же портале для разработчиков откройте свой профиль обеспечения распространения, используемый с этим приложением, и выберите новый производственный сертификат, который вы только что создали. Создайте положение, затем загрузите его и запустите

3) Запустите ваше приложение, заархивируйте его, затем экспортируйте архив.

альт

Мне потребовались дни, если не недели, чтобы понять, я надеюсь, что это поможет вам.

Jacksonkr
источник
1
Похоже, ваша "вуаля" была автоматически исправлена; недостаточно переполнения стека, чтобы позволить мне редактировать.
Джесси
14

Создайте новый сертификат распространения iOS и выберите «Производство»> «App Store и AdHoc». Также не забудьте поменять Target> Build Settings> Code Signing all на iOS Distribution. (Но после создания ipa верните его обратно iOS Developer) Только это решило мою проблему.

Юсель Байрам
источник
1
Эта опция неактивна. Чего мне не хватает?
Грег
stackoverflow.com/questions/17444086/… это может вам помочь.
Юсель Байрам
11

Я столкнулся с той же проблемой сегодня с Xcode 6.1.1

Когда я пытался добавить сертификат распространения iOS через XCode, я получил ту же ошибку. Уже было несколько выпущенных сертификатов распространения в Member Center, и я не хотел их аннулировать, потому что, если они используются для Ad Hoc распространения в среде Enterprise, это также приведет к аннулированию приложений, установленных на устройствах (по крайней мере, это то, что я прочитал).

Что я сделал:
1. Через Keychain Access сгенерировал запрос на сертификат от центра сертификации. И сохранил запрос в файл;
2. Зайдите в раздел «Производство сертификатов» в Центре участников и запросите новый производственный сертификат «App Store and Ad Hoc», запросив файл на шаге 1;
3. Загрузил новый сертификат, и при импорте в Keychain Access у него теперь был закрытый ключ.

После слов я очистил Xcode, перезапустил его, проверил, что в моем аккаунте профиль виден, и построил новый архив. И теперь я смог проверить архив.

Теперь, если я попытаюсь запросить новый сертификат «App Store and Ad Hoc», эта опция будет недоступна для меня, и я полагаю, что это потому, что мой аккаунт уже выпустил сертификат. Если это ваш случай, вам, скорее всего, потребуется аннулировать ваш предыдущий сертификат, прежде чем вы сможете выдать новый. Вот почему Apple рекомендует создать резервную копию вашего сертификата. Но очень вероятно, что вам не нужно будет аннулировать все производственные сертификаты, поскольку у меня уже есть несколько из них в профиле.

Надеюсь, это поможет кому-то :)

Ангел Найденов
источник
Спасибо за информацию, Ангел. У меня есть Xcode 6.1.1, и я уже пробовал это вчера и сегодня, но, должно быть, я сделал один хрупкий шаг неправильно, потому что я все еще не могу проверить свой архив. (К вашему сведению, причина, по которой вы отключили эту опцию, согласно тому, что я читал где-то в SO, заключается в том, что у вас уже есть два производственных сертификата, и это, очевидно, секретный предел Apple)
ultrageek
Вы видели закрытый ключ для сертификата распространения через Keychain Access. В случае, если вы видите это, вы можете попробовать: 1. Удалить все архивы, которые есть в Организаторе для этого проекта. 2. Перед созданием архива убедитесь, что вы выбрали цель проекта, и целевое устройство - это реальное устройство, а не симулятор. 3. Выполните «Очистить папку сборки» через меню «Продукт» в Xcode. Это та же опция, что и «Очистить», но вам нужно удерживать клавишу «Alt». 4. Запустите свой проект на реальном устройстве и убедитесь, что все правильно. 5 Создайте свой архив. 6. Попробуйте проверить это.
Ангел Найденов
Но если вы не видите закрытый ключ, вы не сможете проверить его, так как не смогли подписать пакет. Вчера мы попробовали этот процесс с моим коллегой, и мне пришлось экспортировать свой закрытый ключ через учетную запись Xcode с выбранным дистрибутивом iOS. Затем мы импортировали его через Keychain Access, и он смог проверить и загрузить сборки в iTunes Connect. Для меня, что мне нужно было получить в этом процессе, это то, что вам действительно нужны 2 сертификата: iOS Development и iOS Distribution. Они используются в разных случаях, а для iTunes Connect вам нужен дистрибутив :)
Ангел Найденов
Спасибо, Ангел. Я наконец выяснил, в каком сертификате отсутствует закрытый ключ, удалил каждый отдельный сертификат и профиль из Xcode> Аккаунты и Центр разработки, а затем начал заново. Процесс слишком хрупкий, и, предположительно, наличие двух учетных записей разработчиков на одном Mac, кажется, играет частичную роль в этих проблемах.
ultrageek
1
Приятно слышать, что ты понял это!
Ангел Найденов
7

Apple изменила способ сборки Ad Hoc. Теперь вы не можете создавать специальные дистрибутивы, используя dev cert. Вместо этого вы должны использовать сертификат распространения с специальным профилем обеспечения.

Сын нгуен
источник
У вас есть ссылка на документацию для этого?
Keab42
2
Вы можете попробовать себя, удалив все сертификаты и профиль, и пусть XCode возьмет на себя все остальное, вы увидите, что он автоматически создает сертификат распространения и специальный профиль обеспечения.
Сын Нгуен
2
Я сделал, спасибо. Было просто интересно, если Apple фактически объявил об этом где-нибудь или просто оставил нас, чтобы выяснить это.
Keab42
6

Я полагаю, что настоящая причина, по которой вы оказались на этом экране, - попытка распространить файл .ipa среди ваших тестеров и клиентов. В Xcode 6 для получения файла .ipa вы можете использовать старый метод генерации iPA:

  1. Выберите органайзер в Xcode. На вкладке Архивы выберите Архив, файл iPA которого вам нужно сгенерировать.
  2. Щелкните правой кнопкой мыши и выберите опцию «Показать в Finder»
  3. Вы увидите файл .xarchive. Щелкните правой кнопкой мыши и выберите «Показать содержимое пакета».
  4. Вы увидите папки: dSYMs, Info.plist и Products.
  5. Откройте Продукты> Приложения, и вы увидите ваш .app файл.
  6. Перетащите этот файл .app в iTunes на Mac.
  7. Ваш файл .app будет указан в разделе «Мои приложения» в iTunes.
  8. Щелкните правой кнопкой мыши свое приложение и выберите «Показать в Finder».

Теперь у вас есть файл .ipa, который вы можете отправить тестерам для тестирования. Надеюсь это поможет.

shah1988
источник
4

Произошли изменения в том, как Apple управляет нашим закрытым и открытым ключом. Предыдущий метод для совместного использования учетной записи на двух компьютерах:
1. Предоставление
загрузки 2. Экспорт / проверка сертификата

установить их оба на другой Mac

но теперь вам не нужно делать это, вы экспортируете всю свою учетную запись.
1.XCode -> настройки -> учетная запись (выберите учетную запись), слева внизу есть возможность экспортировать, что введите описание изображения здесь вам будет предложено ввести пароль, который будет необходим при импорте в другую систему. Файл .developerprofile будет загружен на место на ваш выбор.

2. Загрузите его на другой компьютер Mac, и, когда вы увидите подсказку, ваше устройство уже имеет действительное удостоверение подписи, нажмите на Импорт профиля разработчика и импортируйте этот файл .developerprofile. введите описание изображения здесьвведите пароль при появлении запроса.

получил помощь отсюда

амар
источник
@Ranjit тогда ясно Everthing и сделать новые сертификаты
Амар
3

Я решил это следующим образом:

1) в учетной записи разработчика Apple: создайте новый производственный сертификат. Выберите App Store и Ad Hoc Option.

2) в учетной записи разработчика Apple: создайте новый профиль обеспечения, используя текущий идентификатор пакета и сертификат, созданный на первом этапе.

3) в вашем коде:

  • Выберите цель
  • На вкладке Build Settings в зоне подписи кода
  • В подзоне идентификация подписи кода - выпуск
  • Установите новый сертификат распространения (ad hoc)
  • В профиле инициализации - установите новый профиль инициализации (ad hoc).

Кажется, что xcode 6 теперь требует специального сертификата распространения для экспорта вашего IPA.

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

shontauro
источник
3

Я получил ту же проблему сегодня и нашел хорошее решение, я думаю.

Прежде всего, есть что-то ненормальное:

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

нормальным является:

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

и в цепочке для ключей:

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

нормальным является:

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

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

Наконец, мое решение: используйте мой файл CertificateSigningRequest.certSigningRequest для создания нового сертификата распространения iOS и используйте новый сертификат распространения iOS для создания нового профиля обеспечения .

Обратите внимание, я не удаляю старый профиль сертификации и обеспечения, потому что мой коллега хорошо с ними работает. Влияет ли это на приложения, которые я уже опубликовал? Ответ НЕТ . Я просто изменяю сертификат подписи кода, и некоторые важные сертификаты, такие как push notification certificateсвязи с идентификатором приложения:

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

Так что не беспокойся об этом.

Надеюсь, что это полезно.

Аллен
источник
2

Как указал комментатор, это оказалось решением для меня и других:

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

3254523
источник
4
Как вы удалили все свои сертификаты? я удалил их из цепочки для ключей, но все еще имел ту же проблему.
lucaslt89
1
Вы повторно загрузили сертификаты и удостоверились, что у них были ключи в сертификатах @lucas?
3254523,
5
да, я сделал это почти 20 раз и все еще имею ту же проблему. Я удалил все свои сертификаты, профили инициализации, предыдущие заархивированные приложения и все еще имею «У вашей учетной записи уже есть действительный сертификат распространения iOS»
lucaslt89
2
действуя таким образом, фактически вы даете разрешение xCode на автоматическое создание и использование специального профиля обеспечения, проверьте свою программу Apple Dev, вы увидите этот специальный профиль.
Сын Нгуен
2

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

zhangsanshi5566
источник
Это сработало для меня. По иронии судьбы, у производственного сертификата был свой закрытый ключ в моей цепочке для ключей, и он все еще действовал !!
отмечается
2

Я только столкнулся с этим после обновления с Xcode 5 до 6.

В моем случае создание нового производственного сертификата и последующее воссоздание профиля обеспечения распространения для моего приложения сделали свое дело.

Бен Тилкер
источник
1

В официальной последней версии Xcode 6.0 это произойдет, если вы случайно создали в своем файле разрешений запись, имеющую такой ключ:

com.apple.security.application-groups

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

thkeen
источник
1
Где вы нашли этот файл выделить?
Стивен
Это файл с именем Plist: PRODUCT_NAME.entitlements (он был создан Xcode по умолчанию)
thkeen
com.apple.security.application-groupsвключается, если вы включаете группу приложений из Capabilities. Если вы создаете новую цель для разработки расширения приложения, оно автоматически включается.
Аднан
1

Я решил эту проблему, просто заново создав профиль обеспечения на портале для разработчиков (в моем случае это профиль в App Store) и добавив его на свой компьютер с помощью утилиты конфигурации iPhone. Я не хотел связываться с сертификатами и успешно избегал этого.

Я заметил это сообщение об ошибке, зарегистрированное из XCode в моей консоли:

Ни один из действительных профилей обеспечения не разрешал указанные права: идентификатор приложения, бета-отчеты-активные, группы цепочки для ключей доступа.

После загрузки нового профиля обеспечения отсутствующий beta-reports-active = trueприсутствовал, и XCode подписал сборку.

alleus
источник
1

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

потом я снова сделал процесс архивирования и работает!

benLIVE
источник
1

Кроме того, я обнаружил, что учетные записи Xcode вступают в игру -

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

Оказалось, что у меня есть действительный сертификат распространения на моем личном счете ( mobilology ), поэтому я временно удалил эту учетную запись из раздела «Учетные записи» (вы можете оставить только ту учетную запись, из которой вы распространяете).

Внезапно процесс подписания / архивирования сработал!

Дамо
источник
1

Шаг 1: -Войдите в свой аккаунт разработчика Apple.

Шаг 2: -Выберите сертификаты

Шаг 3: -Удалите, если имеется более одного сертификата распространения

Шаг 4: -Повторите попытку архивирования (если ошибка все еще существует, отмените все сертификаты и создайте новый сертификат распространения и отредактируйте свои профили обеспечения.)

Раис Валапурам Мадатхил
источник
1

Я думаю, это ошибка от Xcode. чтобы это работало, мне нужно удалить фактический предварительный профиль распространения, и мне пришлось создать новый предварительный профиль распространения из devcenter. Это работает от меня

Fabio
источник
1

Я также столкнулся с той же проблемой, я использовал сертификат разработки вместо Adhoc. Проблема устранена после использования сертификата Adhoc.

Абхинав
источник
1

Удалите сертификат распространения ios с сайта разработчика Apple и повторно создайте распространение ios с помощью файла certSignReq. У меня работает всегда. Ваши другие приложения не будут затронуты. По крайней мере, в моем случае этого никогда не было.

Анкиш джайн
источник
1

В моем случае я создал новый профиль распространения и добавил его в XCode, а затем попытался отправить сборку. Оказывается, все, что мне нужно было сделать, чтобы избавиться от этого сообщения, это перезапустить XCode и повторить попытку отправки. Работал.

andrewz
источник
1

В моем случае я получил сообщение об ошибке при попытке экспорта и сборки AdHoc из Organizer. Я сделал две вещи, каждая из которых могла решить проблему:

1) Экспортировал существующий сертификат, который, как он утверждал, у меня не было из моей цепочки для ключей, удалил его из цепочки для ключей, повторно импортировал.

2) Создан специальный сертификат распространения, обновлена ​​учетная запись XCode для получения нового профиля обеспечения распространения.

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

Продолжение: архив, который я создал ранее, не работал, мне пришлось его заново сгенерировать. Подсказка заключалась в том, что при выборе архива и выборе экспорта Ad-Hoc сборки выбранной учетной записью по умолчанию была неправильная учетная запись для сборки (у проекта не было учетной записи по умолчанию, выбранной при архивировании сборки).

Кендалл Хельмштеттер Гелнер
источник
1

Это то, что сработало для меня (Enterprise Account)

Импортируйте профиль разработчика с другой машины, которая загрузила нужный мне сертификат с секретным ключом.
Переименуйте пакет приложения в корпоративное имя (оно было названо под именем магазина приложений).
Измените название команды на вкладке «Общие» на команду моей компании - по умолчанию это была моя личная учетная запись разработчика!

С этими изменениями я мог экспортировать ipa как в режиме ad-hoc, так и на предприятии, загрузить его на Hockey Rink и загрузить на свой телефон.

Джек БеНимбл
источник