Право идентификатора приложения неправильно отформатировано - iOS Xcode 4 - PullRequest
9 голосов
/ 17 июня 2011

Я перешел на Xcode 4 и больше не могу отправить свое приложение в App Store.Каждый раз, когда я отправляю через Xcode или Application Loader, я получаю одну и ту же ошибку:

"Правило идентификатора приложения неверно отформатировано ..."

Поиск в Google указывает на права.plist-файл, где ключ идентификатора приложения должен совпадать с моим идентификатором пакета приложения: J1234567885.com.domain.appName, например

Дело в том, что это так.Идентификатор пакета в моем app.plist и в Entitlements.plist идентичны!Что я делаю неправильно?Вот мой файл Entitlements.plist (который никогда не менялся, оглядываясь назад):

<?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>J1234567885.com.domain.appName</string>
    <key>get-task-allow</key>
    <true/>
</dict>
</plist>

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

Ответы [ 4 ]

9 голосов
/ 26 сентября 2011

У меня была та же проблема, описанная mootymoots. Я решил эту проблему, добавив несколько дополнительных параметров в Entitlements.plist.

Я использую TestFlight для развертывания приложения в тестовой группе, поэтому я чувствовал, что важно внимательно следовать инструкциям TestFlight для генерации IAP с использованием Xcode 4. Полное удаление Entitlement .plist казался скорее взломом, чем решением.

Когда я использовал мастер «Новый файл ...» для создания Entitlements.plist, он генерировал следующее:

<?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>get-task-allow</key>
  <true/>
</dict>
</plist>

Когда я пытался создать архив, он выдавал предупреждение «Право идентификатора приложения неправильно отформатировано ...».

Благодаря некоторому поиску в Google, я понял, что plist нужны два дополнительных параметра с переменными XCode в качестве значений. См. Фрагмент ниже для включения идентификатора приложения и группы ключей доступа. (Я не думаю, что последний имел какое-либо отношение к проблеме, которая у меня была, хотя)

<?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>get-task-allow</key>
  <false/>
  <key>application-identifier</key>
  <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
  <key>keychain-access-groups</key>
  <array>
      <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
  </array>
</dict>
</plist>

Как только я добавил эти параметры, архив прекратил выдавать предупреждение, и я смог распространять его с помощью TestFlight.

6 голосов
/ 18 июня 2011

Оказывается, теперь в Xcode 4+ вам не нужен Entitlements.plist для вашей сборки выпуска (или, по крайней мере, Xcode 4 делает что-то странное с этим, что не сделал Xcode 3).

В любом случае,Чтобы исправить мою проблему, я просто удалил ссылку на свой Entitlements.plist из параметра выпуска в разделе «Права подписи кода» в настройках сборки.

Построен, заархивирован, проверен, отправлен в iTunes Connect.

1 голос
/ 06 апреля 2013

В моем случае это было вызвано использованием идентификатора приложения с подстановочным знаком для профиля обеспечения распространения (com.mycompany. *). Замена его профилем обеспечения с использованием абсолютного идентификатора приложения решила проблему.

0 голосов
/ 17 июня 2011

В Xcode 4 ваш файл разрешений не должен содержать идентификатор приложения. Только на вашей цели -> вкладка Сводка. Кроме того, get-task-allow следует установить в False для отправки в AppStore.

Чтобы исправить, я бы удалил ваш текущий файл authorlements.plist и создал новый, используя File -> New -> New File. Просто используйте ключ get-task-allow = FALSE и попробуйте это. Убедитесь, что вы указали идентификатор приложения на вкладке Цель -> Сводка.

...