Изменить вручную свойство $(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" должен иметь тот же идентификатор прямо в заголовке.

Другие вопросы по тегам