Xcode 4 - перевстановлює сертифікати брелоків, які я видаляю


85

Я отримую цю помилку:

Помилка CodeSign: Ідентифікатор сертифіката «Розробник iPhone: XXX» з’являється кілька разів у ланцюжку ключів. Інструмент кодового дизайну вимагає, щоб був лише один.

Спочатку я, не хвилюючись, я просто увійду в брелок і видалю дублікат (старіший), що я і зробив. Я повернувся назад, закрив Xcode, знову відкрив Xcode і проект, та сама помилка. wtf я хоч собі. Поверніться в брелок, і сертифікат знову там. Я видаляю обидва сертифікати, повторюю і помічаю, як проект завантажується, два видалені мені сертифікати повертаються назад у брелок.

Після довгих пошуків я переконався, що у мене немає сертифіката в системному брелоку, чого я не мав. Також зробили чистку та відновлення. Коли у мене були дублікати з Xcode 3, я міг просто очистити дублікат брелока, і мені було добре. Але з Xcode 4 він буквально просто перевстановлює їх, коли я відкриваю проект. Я навіть видалив усі .cer-файли в моїй системі, з яких він, можливо, їх тягне.

Будь-які пропозиції?


1
Ура. Була та сама проблема. :)
RedBlueThing

Майте таку ж проблему. Це трапляється тому, що брелок не видаляє сертифікат належним чином, і у вас виникає ситуація, коли з'являється 2 сертифікати (але один недійсний). Просто видаліть недійсне в додатку Брелок, і це буде добре працювати. Але це тимчасове рішення. :(
Сергій Копанєв

Відповіді:


103

Рішення полягало в тому, щоб увійти в організатор - за допомогою бібліотеки - надання профілів, видалити всі з них, а потім перевстановити всі профілі, які мені все ще потрібні.


Так! Я можу підтвердити, що це працює. Незважаючи на те, що я продовжував видаляти той, що був у брелоку, він знову з’являвся. Після того, як я видалив старі профілі підготовки з Організатора, все було як зазвичай. Дякую! :)
RoLYroLLs

1
Працює і для мене! Дякую! Я думаю, що XCode4 намагається зробити, це вставити сертифікати розробника у ваш брелок для профілів prov, у яких їх немає, навіть якщо термін дії сертифікатів розробника закінчився.
iphone007

5
Також не забудьте відновити свій профіль підготовки, якщо ви оновили свій сертифікат розробника. Я цього не зробив, і коли я повторно додав старий профіль prov, відповідний сертифікат розробника, термін дії якого закінчився, був повторно вставлений у брелок, D'oh!
iphone007

Будьте обережні, я якось видалив свій брелок для входу, намагаючись видалити профілі. Не впевнений, як це сталося, оскільки я майже впевнений, що область списку брелоків була сфокусована, коли я натиснула delete. Резервне копіювання перед видаленням і будьте обережні.
avance

Це допомогло, але, як казали інші, вам насправді потрібно зайняти брелок і видалити прострочений сертифікат розробника, а не лише профіль підготовки.
Рон Сребро

33

У мене була та сама проблема, і наведені вище рішення не вирішили моєї проблеми (майже майже).

У мене був той самий повторюваний ідентифікатор розробника / сертифікат, на який всі скаржаться, і я спробував видалити всі свої профілі, анулювати / перевидати мій сертифікат, переконавшись, що в системному брелоку їх немає, перезапуск тощо тощо.

Зрештою виявилося, там був сертифікат в системі брелка, один , який закінчився , і тому була прихована за замовчуванням в списку.

Переконайтеся, що ви бачите сертифікати, термін дії яких минув, у KeyChain

Зробити це:

  1. Відкрийте доступ до брелока
  2. Клацніть меню Перегляд
  3. Клацніть Показати сертифікати із закінченим терміном дії
  4. потім знайдіть і видаліть прострочені сертифікати розробника

Чудово, ти геній. Я зробив усе, що було перераховано. Ви допомогли мені вирішити проблему, яка стара місяцями. Бог благословить вас!
Бушра Шахід

1
Виявилося, у мене пройшов термін дії сертифіката під системним брелоком. Це допомогло мені його знайти! Дякую!
christopher_f

11

Xcode 4 має нову функцію "Автоматичне надання пристрою". Він знаходиться в організаторі під профілями бібліотеки / забезпечення. Якщо ви ввімкнули це, він автоматично завантажить ваші профілі підготовки з сервера підготовки розробників apple, і таким чином ви отримаєте помилку, що має дублікати. Найпростіший спосіб виправити це - видалити всі профілі підготовки та натиснути кнопку оновлення для параметра "Автоматичне надання пристрою". Це завантажить ваші профілі забезпечення з сервера та вирішить вашу проблему.


Дякую за це. Я видалив свої профілі та скористався автоматичним забезпеченням пристрою, щоб отримати їх назад, і проблема зникла.
Сашо

Це сучасне рішення, яке працювало для мене (після випробування інших рішень вони, здається, застаріли)
Касіхасі

7

якщо ви хочете зіпсувати доступ до брелока, щоб видалити прострочений сертифікат, ви можете спробувати це:

  • створіть новий брелок, назвіть його "закінчився" та перемістіть у нього ТІЛЬКИ сертифікат із вичерпаним терміном дії.
  • видаліть щойно створений брелок із терміном дії, який містить ТІЛЬКИ термін дії сертифіката, на запит виберіть "Видалити посилання та файли".

сертифікат, термін дії якого минув, зникає разом із брелоком. працював у мене ідеально


6
  1. Видалити всі профілі підготовки з XCode Organizer;
  2. Видалити старі сертифікати розробника з доступу до брелоків;
  3. Створювати профілі забезпечення з використанням лише відповідного сертифіката розробника;
  4. Завантажте та встановіть нові профілі забезпечення;

- РЕДАГУВАТИ -

Об’єднайте відповідь @ Codezy та коментар @ iphone007.


Ваша відповідь не вирішила моєї проблеми, насправді я кілька разів видаляв сертифікати розробника та профілі підготовки, але старий сертифікат розробника завжди переінсталюється. Але коментар @ iphone007 є корисним, я просто зливаю їх ...
Містер Мін,

2

Видаляючи профілі підготовки в бібліотеці Організатора, крім того, слід видалити сертифікат розробника iPhone у Доступі брелоків. (Ім'я сертифіката, мабуть, схоже на "Розробник iPhone: XXXXX ..." і позначено червоним знаком X, оскільки термін дії минув)


Просто видалення та повторна інсталяція профілів підготовки в Організаторі не допомогло, але ваша пропозиція вилучити прострочений профіль із брелока виправила це для мене, дякую!
gulchrider

2

Я витратив на це півдня і нарешті знайшов рішення

  1. Відкрийте KeyChain Access.app
  2. Виберіть "Система" в меню "Брелки" в лівій частині екрана програми Брелок
  3. Виберіть "Сертифікати" в меню "Категорія"
  4. Видаліть усі старі сертифікати.

Потім закрийте Keychain.app і перейдіть до Xcode -> Органайзер

  1. Видаліть усі профілі підготовки в меню Бібліотека
  2. Видаліть усі профілі забезпечення у меню Пристрої
  3. Натисніть кнопку "Оновити" в меню Бібліотека -> Профіль надання
  4. Додайте потрібні профілі на свій пристрій

Створіть знову свій додаток :)


1

Для нащадків, ось стратегія подолання цієї проблеми в нашому автоматизованому сценарії збірки:

  1. Перед створенням перемістіть каталог ~ / Library / MobileDevices / Provisioning Profiles убік
  2. Перевірте, чи запущена утиліта iPhone Configuration Utility , і закрийте її (сертифікати завжди з’являються, якщо ця програма відкрита. У XCode 4.1 вам також потрібно закрити органайзер).
  3. Біжи ти будуєш
  4. Перемістіть каталог Provisioning Profiles назад
  5. Прибуток?

1

Я спробував усе запропоноване тут, але у мене нічого не вийшло, крім перевстановлення XCode 4.3, магічним чином вирішило справу.


1

З'ясував дійсно простий спосіб виправити це в 4.6.1. Ви можете зробити це, не перезапускаючи нічого та не видаляючи жодних профілів!

З доступом до брелока та відкритим вашим проектом Xcode:

  1. У Xcode відкрийте Органайзер - "Пристрої" та виберіть "команду" із дублікатом сертифіката.
  2. Перейдіть на Keychain Access і видаліть старі дублікати сертифікатів. Примітка. Переконайтесь, що ви ввімкнули параметр "показувати сертифікати із закінченим терміном дії", щоб не пропустити жодного
  3. Сертифікати зникнуть із "командного" профілю в Організаторі Xcode.
  4. Чистий проект та побудова.

Сподіваюся, це допоможе!


0

вищевказаний метод не працює для мого випадку

нарешті, я переходжу до брелока

і шукайте ключ, ввівши ім'я

нарешті я знайшов сертифікат, який раніше повинен бути видалений. тоді я видалив його, і проблема вирішена

це справді розчаровує, і я не знаю, чи це помилка ....... справді виснажує.


0

Цитуючи відповідь на дублікат цього питання, деякі помилки Xcode у цій області можна вирішити лише перезапуском OS X .

Врешті-решт, я досяг успіху, видаливши все, що згадувалось у будь-якому з відповідей на це запитання, перезапустивши, а потім вручну встановивши потрібні деталі (я не довіряв / спробував функцію автоматичного завантаження профілю / сертифіката).


0

На що варто, @AndreasPrang, ваша відповідь спрацювала, коли все вищезазначене не зробило. Я міг бачити, що сертифікату, термін дії якого минув, ніде не було в ланцюжку ключів, проте коли я робив збірку, Xcode сказав, що це так. Видалення профілів підготовки (усіх), вибір мого імені в розділі Команда та клацання піктограми оновлення внизу праворуч від організатора також не допомогли. Перезапуск Xcode не допоміг, але вимкнення XCode, видалення ~ / Library / Developer / Xcode. Коли я перезапустив XCode, він перебудував все і був щасливим.


0

Іншою причиною того, що xcode продовжує встановлювати ваш сертифікат, є те, що ви не видалили ключ, а лише сертифікат. Вам потрібно видалити приватний ключ (і відповідний відкритий ключ), а також сертифікат у ланцюжку ключів, інакше xcode повторно встановить сертифікат.

Позначте тут, щоб видалити сертифікати розробки та розповсюдження з вашого брелока


0

Просто встановив Xcode 4.6.1 і знову почав цю проблему. Останній раз був давно назад. Я видалив старі профілі підготовки та сертифікати, але все одно не зміг побудувати.

Цього разу виявляється, що я мав 2 сертифікати, перераховані мені в обліковому записі команди порталу розробників. Перший закінчився, другий ні. Xcode продовжував хапати перший, який знайшов під час оновлення (а може, і того, і іншого).

Я видалив обидва сертифікати з брелока, а потім вручну завантажив хороший із порталу Apple і вручну додав його в брелок. Тепер я можу будувати знову.

(І я надіслав запит адміністратору команди на видалення старого сертифіката.)


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.