Как ознакомиться с проблемами подписи кода?
Каждый раз, когда я занимаюсь подписанием кода и предоставлением профилей, происходят странные вещи. В большинстве случаев я получаю сообщение об ошибке "не найдена идентификация подписи кода", а если нет, то что-то вроде "не найдено соответствующих профилей обеспечения" и "нет профилей обеспечения с действительной идентификацией подписи".
Несмотря на то, что я хорошо знаком с теорией, а также с тем, что стоит за подписью и предоставлением кода, все еще есть много подводных камней, с которыми я сталкиваюсь каждый раз, и я не знаю, как с ними бороться. Иногда происходит сбой при настройке нового приложения, иногда нет.
Существует 5*2 различных способов выбора идентификатора подписи кода. В чем разница между ними? И если я выберу один для отладки и один для выпуска, что является причиной "Any iOS SDK"?
Кроме того, есть два места, где есть этот диалог: Project-Settings -> Buildsettings - первое место, а также для Target в Build Settings. Оба не синхронизированы, поэтому, если я изменю подпись кода на первом месте, мне придется изменить это дважды на втором месте. Есть ли способ синхронизировать их?
Какой идентификатор подписи кода будет лучше всего подходить к различным строкам (отладка, отладка -> любой IOS SDK, выпуск, выпуск -> любой IOS SDK), так как я могу выбирать между удостоверениями разработчика и идентичности распределения (я мог бы представить, что распределение один предназначен для релиза, а разработчик - для отладки, но из-за всего не получается, я не знаю.
Что я сделал:
В Центре участников есть действительные сертификаты, сданные на хранение каждому разработчику нашей команды, и один для разовой рассылки для Команды. Мы также создали AppID, которые отражают те же настройки в настройках проекта. В промежутке между прочим мы избегаем использования переменных и точно используем appid также в настройках проекта, чтобы уменьшить риски на этой стороне и упростить вещи.
При переключении профиля обеспечения с "Автоматический" на определенный профиль для этого приложения идентификаторы подписи кода меняются на разные значения, которые также не синхронизируются между настройками проекта и настройками целевой сборки:
На Target->Build Settings мы получаем такой результат:
На Project -> Build Settings мы получаем другой результат:
Какой из них будет более точным? После "Продукт" -> "Архив" -> "Проверить" мы получаем следующую ошибку:
Здесь не имеет значения, выбираем ли мы разные идентификаторы подписи кода или нет. На самом деле, просто для того, чтобы разыграть "след и ошибку", мы опробовали почти все несколько комбинаций идентификаторов подписи кода, чтобы узнать, что тогда будет делать XCode.
После этого сообщения об ошибке от Archive->Validate предыдущий выбранный профиль обеспечения заменяется другим, названным случайно сгенерированной строкой:
Кто подскажет, что здесь происходит и как решить эти проблемы?
Я прочитал много документов по этой теме. Но большинство руководств по этой теме устарели, поскольку в XCode 4 и XCode 6 произошли некоторые изменения. Даже в документах Apple в основном представлены снимки экрана, основанные на устаревших версиях XCode, а также устаревших версиях Member Developer Center.
Обновить
Как правильно указал Ян Макдональд, на последний вопрос (охваченный последними 2 снимками экрана) дан ответ. После воссоздания профиля обеспечения он не будет заменен случайно сгенерированными строками, но создание IPA по-прежнему не работает с "не найдены идентификаторы подписи кода".
Как это выглядит сейчас:
2 ответа
Из того, что я читаю, вы изменили свой профиль обеспечения в своей цели с "xxx.xxx" на "xxx.xxxTests", который фактически является другим идентификатором пакета, делающим ошибку действительной. У вас действительно есть два курса действий:
Измените свой идентификатор пакета обратно на "xxx.xxx". Это подходящий путь наименьшего сопротивления.
Создайте на портале новый идентификатор пакета как "xxx.xxxTests", а также новый профиль обеспечения для "xxx.xxxTests", связанный с тем же сертификатом. При закрытом XCode перетащите новый профиль обеспечения на значок приложения XCode, а затем откройте свой проект.
Вам не нужно менять идентификатор вашего пакета для проведения тестирования. При развертывании вам нужно будет только изменить, с каким профилем обеспечения компилируется ваша цель (разработка или распространение).
РЕДАКТИРОВАТЬ: У меня есть еще несколько советов по обеспечению профилей здесь: Как ознакомиться с проблемами подписи кода?
Быстрая и грязная сторона обеспечения работает так:
- Когда вы добавлены на портал обеспечения Apple, ваш сертификат является ключом к замку. Любой код, который вы компилируете, должен быть связан с вашим сертификатом, иначе вы не сможете правильно скомпилировать / экспортировать свой код.
- Ваш идентификатор пакета - это, по сути, способ, которым iOS идентифицирует ваше приложение. Концептуально говоря, если вы хотите установить приложение несколько раз на одном устройстве, создайте несколько идентификаторов пакетов.
- Ваш профиль обеспечения связывает все части вместе. Профиль prov сообщает XCode, что вы планируете использовать свой сертификат для компиляции приложения, идентифицируемого вашим идентификатором пакета. Если это сборка для разработки, то только приложение, специально предназначенное для профиля prov на портале, сможет установить ваше приложение.
В XCode вы должны убедиться, что ваш целевой идентификатор пакета совпадает с тем, какой идентификатор пакета находится в профиле обеспечения. Также убедитесь, что ваша идентификация подписи кода соответствует сертификату, установленному вами на портале, и привязана к профилю обеспечения. Наконец, выберите соответствующий профиль обеспечения из раскрывающегося списка под идентификатором подписи кода.
У вас длинный вопрос, но если вы столкнулись с проблемой архивирования или публикации своего приложения, вам следует выполнить некоторые шаги
Первая подпись кода
Если вы создаете свое приложение с Debug
, тогда отладчик должен подписать с разработчиком iPhone -> общие, если вы используете много или конкретный "зависит от сертификата у вас в цепочке ключей"
но если вы создаете свое приложение с release
тогда вы должны сертифицировать iPhone дистрибутив ---> общий или конкретный
Второй профиль обеспечения
Если вы строите с Debug
тогда профиль обеспечения Debug должен соответствовать деталям вашего пакета и быть в разработке
release
быть дистрибутивом, который вы создаете на сайте разработчика Apple
Я надеюсь, что это поможет вам взглянуть на это также, пожалуйста,