Технические вопросы и ответы QA1879

Разрешение приложения несоответствие префикса ID

Q: Как я диагностирую и разрешаю Приложение несоответствие Префикса ID?

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

Этот документ показывает, как диагностировать и разрешить Приложение несоответствие Префикса ID.

Диагноз

Существует две фазы подписывания кода, вовлеченные в распределение приложения и Приложения, которое должен соответствовать Префикс ID Профилей Настройки, используемых в обеих фазах. Если они не сделают, то это вызовет Приложение несоответствие Префикса ID. Самый простой способ удовлетворить требование состоит в том, чтобы удостовериться, что тот же профиль используется в обеих фазах.

Приложение в качестве примера Префикс ID показано ниже. Это - префикс с 10 символами Приложения ID, связанный с Профилем Настройки. Таким образом для Приложения ID:

A1B2C3D4E5.com.myCompany.myApp1

Приложение Префикс ID:

A1B2C3D4E5

Для диагностирования Приложения несоответствие Префикса ID Вы будете сравнивать префиксы через два расположения в созданном приложении. Те расположения пронумерованы ниже.

  1. Проверьте Приложение Префикс ID на подписи приложения с помощью шагов в том, Как я проверяю права на Подписи своего Приложения?.



      Права перечисления 1 В качестве примера на подписи приложения.

    $ codesign -d --entitlements :- ./Payload/myApp.app
     
    Executable=./Payload/myApp.app/myApp
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>application-identifier</key>
        <string>5E4D3C2B1A.com.myCompany.myApp1</string>
        <key>com.apple.developer.team-identifier</key>
        <string>5E4D3C2B1A</string>
        <key>get-task-allow</key>
        <false/>
        <key>keychain-access-groups</key>
        <array>
            <string>5E4D3C2B1A.com.myCompany.myApp1</string>
        </array>
    </dict>
    </plist>
  2. Проверьте Приложение Префикс ID во встроенный профиль приложения с помощью шагов в: Как я проверяю права, связанные с моим Профилем Настройки? Используйте шаги во второй половине раздела, говорящие о встроенном профиле приложения.



      Права перечисления 2 В качестве примера, связанные с приложением, встроили профиль настройки.

    $ security cms -D -i "./Payload/myApp.app/embedded.mobileprovision"
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
       ...
      <key>Entitlements</key>
      <dict>
        <key>com.apple.developer.team-identifier</key>
        <string>5E4D3C2B1A</string>
        <key>keychain-access-groups</key>
        <array>
          <string>A1B2C3D4E5.com.myCompany.*</string>
        </array>
        <key>application-identifier</key>
        <string>A1B2C3D4E5.com.myCompany.*</string>
        <key>get-task-allow</key>
        <false/>
      </dict>
      <key>ExpirationDate</key>
      <date>2015-08-13T14:59:38Z</date>
      <key>Name</key>
      <string>Distribution Provisioning Profile</string>
      <key>TeamIdentifier</key>
      <array>
        <string>5E4D3C2B1A</string>
      </array>
      <key>TeamName</key>
      <string>Appleseed Corp.</string>
      <key>TimeToLive</key>
      <integer>364</integer>
      <key>UUID</key>
      <string>7156a539-3c66-41f5-a0b5-49c3456659d7</string>
      <key>Version</key>
      <integer>1</integer>
    </dict>

Несоответствие в вышеупомянутом примере может быть замечено путем сравнения префикса с 10 символами application-identifier право. Это - Приложение Префикс ID. Префикс на подписи приложения 5E4D3C2B1A не соответствует префикс на встроенном профиле приложения A1B2C3D4E5.

Разрешение

Существует две фазы подписывания кода, вовлеченные в распределение приложения и Приложения, которое должен соответствовать Префикс ID обоих профилей, используемых в тех фазах.

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

  1. Откройте проект XCode Target> Настройки Сборки и разверните Идентификационные данные Подписывания кода и Настраивающий настройки сборки Профиля. Набор “Любой iOS SDK” к “Распределению iOS” для Выпуска.

  2. Установите установку сборки Профиля Настройки в свой профиль настройки распределения.

  3. Повторно заархивируйте приложение (через XCode> меню продукта> Архив).

  4. Повторно представьте приложение через Организатора XCode, и убеждаться выбрать тот же профиль распределения для подписания представления.



История версии документа


ДатаПримечания
10.09.2014

Новый документ, обходящий посредством процесса диагностирования и разрешения Приложения несоответствие Префикса ID.