Изменить вручную свойство $(AppIdentifierPrefix)?
Я загрузил приложение в Apple Store. Сейчас я занимаюсь разработкой обновленной версии. Но вместо того, чтобы работать над существующим проектом, я создал новый проект с другим именем. Когда я закончил, я изменил имя и идентификатор пакета, чтобы соответствовать существующему приложению.
Я пытался загрузить приложение для проверки полета, но я получил ошибку
"Invalid IPA: The keychain-access-group in the embedded.mobileprovision and your binary don't match."
Итак, я начал просматривать сеть для ответов... Что я придумал, чтобы включить права. Я сделал, но безрезультатно... Затем я отредактировал права, изменив это:
$(AppIdentifierPrefix)com.xxxx
к этому:
12HJ2312.com.xxxx (the number is number of prefix from developer portal)
И это сработало, я мог загрузить. И мир снова был в порядке. Или это было? Я до сих пор не понимаю, почему я должен был изменить это. Откуда
$(AppIdentifierPrefix)
красный? Я думал, что это красный от цепочки для ключей, но, кажется, нет, потому что в цепочке для ключей - то же самое значение, которое я ввел. Итак, как я могу увидеть это значение, и где оно черпает свое содержимое?
3 ответа
Префикс идентификатора приложения указывается в используемом вами профиле обеспечения. Найдите профиль обеспечения в Finder. Для этого в Xcode перейдите в Window>Organizer. В органайзере щелкните правой кнопкой мыши профиль обеспечения и выберите "Показать профиль в Finder"). Откройте файл в TextEdit или каком-либо другом текстовом редакторе, и вы увидите нечто похожее на это внутри, где-то посередине (ищите "Права").
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>A1B2C3D4E5.com.example.*</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>A1B2C3D4E5.*</string>
</array>
</dict>
Префикс идентификатора приложения в этом случае - A1B2C3D4E5
Как примечание к ответу Ахмеда:
Значение ${AppIdentifierPrefix}
является "A1B2C3D4E5."
Таким образом, оригинальная проблема ОП заключается в том, что
${AppIdentifierPrefix}.com.xxx
оценивает A1B2C3D4E5..com.xxx
, что не соответствует тому, что говорит ваш профиль.
Это изменилось в Xcode 5. Вот как я это сделал:
Откройте приложение Keychain Access на вашем Mac. Ищите сертификат "iPhone Developer" для сборок разработчика или "iPhone Distribution" для сборок ad-hoc и App Store.
Если есть несколько сертификатов, вы можете найти, какой из них вы используете в XCode, посмотрев в поле "Идентификация подписи кода" в настройках вашего проекта. Это, вероятно, скажет "iOS Developer". Нажмите на это, и это перечислит "Идентичности в Цепочке для ключей". Это должно дать вам некоторое представление о том, какую личность вы на самом деле используете.
Вернувшись в Keychain Access, выберите сертификат (например, "iPhone Developer"), а затем нажмите кнопку "i" в нижней части окна. Через несколько секунд появится другое окно с информацией о сертификате. Посмотрите в разделе "Подробности", и вы увидите "Подразделение организации". Если все нормально, это значение идентификатора будет таким же, как ваш $(AppIdentifierPrefix), а также должно быть одинаковым для сертификатов разработчика и дистрибутива. Кроме того, сертификат "Распространение iPhone" должен иметь тот же идентификатор прямо в заголовке.