Я пытаюсь использовать Testflight для загрузки IPA в мои тестеры приложений, но это не удается со следующей ошибкой:
Недопустимый IPA: группа доступа к цепочке ключей в файле embedded.mobileprovision и ваш двоичный файл не совпадают.
Я в замешательстве, потому что думаю, что мои настройки довольно стандартны, и у меня есть другое приложение, которое я могу создавать и распространять без проблем (примечание: со второй учетной записью разработчика, но в том же экземпляре Xcode).
Вот мои настройки:
- Идентификатор моего приложения, который я создал на портале подготовки, —
com.bubblefoundry.Clear
. Естественно, перед ним стоит числовой идентификатор, который назначает Apple. - Я создал специальный профиль обеспечения распространения с идентификатором приложения и нужными устройствами. Я скачал его в Xcode.
- Название продукта
Clear
в Xcode. - Имя пакета на вкладке «Сводка» цели —
com.bubblefoundry.Clear
, где «Очистить» выделено светло-серым цветом и автоматически заполняется Xcode. Хотя я могу добавить текст до или послеClear
, я не могу его удалить. Имя на вкладке «Информация» —com.bubblefoundry.${PRODUCT_NAME:rfc1034identifier}
. - В настройках сборки подписи кода как для проекта, так и для целевого объекта для параметра «Отладка» и «Выпуск» установлено значение «Разработчик iPhone» в разделе «Автоматический выбор профиля». Я подумал, что мне, возможно, придется установить Release для моего профиля распространения, но я не сделал этого в другом рабочем проекте.
Я могу просто архивировать свое приложение. Затем в органайзере я могу сказать ему распространять его для специальной разработки, а затем повторно подписать его с профилем обеспечения распространения, который я создал ранее. Об ошибках не сообщается. Точно так же я могу без проблем подключить свой iPhone и запустить приложение на телефоне. Только когда я пытаюсь загрузить IPA с помощью Testflight.app, мне говорят, что файл недействителен.
Поскольку там упоминается embedded.mobileprovision
, я решил заглянуть в IPA и изучить файл. Вот соответствующие данные (минус уникальная информация):
<plist version="1.0">
<dict>
<key>AppIDName</key>
<string>Project Clear</string>
<key>ApplicationIdentifierPrefix</key>
<array>
<string>app-id</string>
</array>
<key>CreationDate</key>
<date>2013-01-11T17:44:51Z</date>
<key>DeveloperCertificates</key>
<array>
<data>
my-certificate
</data>
</array>
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>app-id.com.bubblefoundry.Clear</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>app-id.*</string>
</array>
</dict>
<key>ExpirationDate</key>
<date>2013-10-07T17:44:51Z</date>
<key>Name</key>
<string>Project Clear Testers</string>
<key>ProvisionedDevices</key>
<array>
<string>device1</string>
<string>device2</string>
<string>device3</string>
<string>device4</string>
<string>device5</string>
</array>
<key>TeamIdentifier</key>
<array>
<string>app-id</string>
</array>
<key>TeamName</key>
<string>Bubble Foundry</string>
<key>TimeToLive</key>
<integer>269</integer>
<key>UUID</key>
<string>uuid</string>
<key>Version</key>
<integer>1</integer>
</dict>
</plist>
Глядя на это, почти все выглядит согласующимся с тем, что я установил ранее. Единственная мысль, что AppIDName
это Project Clear
, а не Clear
. Является ли это источником проблемы? Или, может быть, keychain-access-groups
должно быть app-id.com.bubblefoundry.Clear
, а не app-id.*
?