Проблема подписания кода Xcode 4.1 - PullRequest
13 голосов
/ 13 июля 2011

Я прочитал много тем и не могу найти ничего похожего на мою проблему здесь. Я думаю, что это простое решение, но я просто не могу найти ответ. Я использую Xcode 4.1 Gold Master.

По сути, когда я архивирую свое приложение Mac, оно проходит через все обычные процессы. Сборка прошла успешно. Однако, когда я отправляю в магазин приложений, я получаю следующее сообщение:

Invalid Code Signing Entitlements - Your application bundle's signature contains code 
signing entitlements that are not supported on Mac OS X; this may happen if your Mac OS X 
project was ported from iOS. Please check your Xcode project's code signing entitlements 
configuration, and remove any unneeded entitlements.

Specifically, key "application-identifier" in "My App" is not supported.

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

<?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>My.App.Identifier</string>
    <key>com.apple.application-identifier</key>
    <string>My.App.Identifier</string>
</dict>
</plist>

Первый ключ - тот, который вызывает проблему. Когда я удаляю это и принудительно оставляю приложение с тем же файлом .xcent в командной строке, приложение проходит.

Я удалил и переустановил xcode, чтобы посмотреть, поможет ли это ... это не так.

Я знаю, что создание этого файла связано с профилем обеспечения. Кажется, он получает правильные данные, но добавляет существующий тег. Я проверил настройки как проекта, так и сборки, и у меня нет никаких прав на подпись кода. Любая идея, как я могу заставить Xcode прекратить генерировать этот ключ? Я не очень люблю делать это каждый раз, когда хочу отправить в магазин приложений.

1 Ответ

13 голосов
/ 16 июля 2011

У меня такая же проблема. После прочтения вашего сообщения я немного поинтересовался.

Похоже, что в процессе сборки файл .xcent создается из файла, расположенного по адресу /Developer/Platforms/MacOSX.platform/Entitlements.plist (он также может находиться в /Applications/Xcode.app/Contents/Developer /Platforms/MacOSX.platform/Entitlements.plist).

Я отредактировал этот файл и заменил «идентификатор приложения» на «com.apple.application-identifier». Так что теперь файл .xcent содержит только:

<?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>com.apple.application-identifier</key>
    <string>33R9UFHX3C.com.mycompany.myapp</string>
</dict>
</plist>

Однако я все еще сталкиваюсь с недопустимой двоичной ошибкой при сборке и загрузке.

РЕДАКТИРОВАТЬ: это на самом деле работает. (У меня была другая не связанная с этим проблема)

...