Имя профиля обеспечения, используемого для подписи приложения iPhone?

StackOverflow https://stackoverflow.com/questions/2327257

Вопрос

Я написал сценарий, который использует xcodebuild для создания AdHoc-сборки приложения для iPhone.

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

Есть ли способ извлеките имя или файл профиля обеспечения, используемый для подписи приложения.:

  • из созданного и подписанного приложения
  • из проекта Xcode (я не хочу вручную анализировать файл project.pbxproj, так как это решение может сломаться в следующем обновлении Xcode)
  • любой другой способ, доступный для сценария

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


Вот что я попробовал:

К сожалению, выходные данные xcodebuild во время сборки не содержат этой информации.На этапе CodeSign есть строка:

/usr/bin/codesign -f -s "iPhone Distribution: My name" ...

но я не могу сопоставить это с сертификатом.

Я изучил использование codedesign и команду

/usr/bin/codesign -d -vvv --entitlements - -r - /Users/lv/Desktop/TicTacBoo.app/TicTacBoo
выглядело многообещающе, но не дает мне необходимой информации.
В xcodebuild я тоже не нашел никакой полезной опции.

Это было полезно?

Решение

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

Он назван YourApplication.app/embedded.mobileprovision

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

Другие советы

Вы можете использовать команду «безопасность» из терминала;к сожалению, по крайней мере, на моем MBP со Snow Leopard это вызывает ошибку сегментации в одной из команд, которые вам нужно выполнить.Для получения дополнительной информации выполните команду из терминала

man security

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

security unlock-keychain login.keychain;
security find-certificate -a -c "iPhone Distribution: Your name"  -p > cert.pem;

Вторая команда вызывает ошибку сегментации (вызванную аргументом -c), но это должно быть именно то, что вам нужно.Альтернативно вы можете использовать

security find-identity -p codesigning -v;

чтобы получить список всех действительных сертификатов, которые вы можете использовать для подписи кода своих приложений.Для каждого сертификата выходные данные также содержат дайджест сообщения SHA1, так что вы можете легко найти сертификат в цепочке ключей, соответствующий дайджесту SHA1, связанному с «Распространением iPhone:Ваше имя".Однако для этого необходимо написать собственное приложение с использованием API-интерфейсов связки ключей.

Дайте мне знать, работает ли это на вашем Mac или если у вас возникла такая же проблема с сегментацией.

РЕДАКТИРОВАНИЕ/ОБНОВЛЕНИЕ:Я проверил ошибку на других машинах и сообщил об ошибке в Apple.

Как насчет поиска в файле plist _CodeSignature/CodeResources (встроенного приложения) файлов типа «mobileprovision»?

Вот способ сделать это, используя defaults(1) для чтения файла plist.Вам нужно скопировать файл CodeResources во что-то с суффиксом «.plist», чтобы сохранить настройки по умолчанию...

cp /build/Distribution-iphoneos/MyApp.app/_CodeSignature/CodeResources /tmp/defaults.plist
defaults read /tmp/defaults files |grep .mobileprovision |grep -v embedded.mobileprovision

(в моем тестовом примере там было 2 записи .mobileprovision;игнорировать тот, который называется «embedded.mobileprovision»)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top