iPhone + Provisioning Profile + app-info.plist + entitlements.plist = iPhoneApp ? Как ? Что именно делает entitlemets.plist?

Чтобы выполнить мое приложение на iPhone, в первую очередь мне нужно добавить профиль обеспечения на свой iPhone. Хорошо. Но я не понимаю причину добавления entitlements.plist в приложение iphone в xCode под ресурсами.

  • Что на самом деле делает этот файл entitlements.plist?
  • Почему в этом файле .plist есть только одно логическое значение? (получить задачу-разрешить)
  • Нельзя ли добавить эту логическую переменную в application-info.plist?

Я имею в виду, что я не могу найти причину хранения одной логической переменной в отдельном файле plist. Вместо этого application-info.plist уже содержит множество настроек приложения. Нельзя ли просто добавить эту логическую переменную в application-info.plist.

Хорошо, как угодно. Я знаю - это невозможно. Потому что мы должны следовать тому, что говорит яблоко. Но здесь основной целью всего этого было

  • «Какова основная потребность entitlements.plist?» или
  • «Какова функциональность entitlements.plist?»
  • «Как профиль подготовки, entitlements.plist, application-info.plist и приложение iPhone компилируются вместе, выполняют проверку на iPhone и выполняют ее на iPhone?»

person Sagar R. Kothari    schedule 21.04.2010    source источник


Ответы (1)


Права на самом деле являются мерой безопасности iPhoneOS. Цитата из iPhone Development Руководство:

Entitlements. Эти файлы определяют свойства, которые предоставляют вашему приложению доступ к функциям iPhone OS (например, к push-уведомлениям) и защищенным данным (например, к связке ключей пользователя).

Публично единственный ключ доступа, который вы можете использовать, — это get-task-allow, который в конечном итоге позволяет использовать функцию ptrace(). используется для приложения, что позволяет выполнять отладку.

Но есть много прав, используемых в частном порядке, например.

  • task_for_pid-allow, чтобы разрешить управление другими процессами (через функцию task_for_pid())
  • run-unsigned-code, чтобы разрешить выполнение кода из этого приложения без подписи.
  • com.apple.springboard.launchapplications, com.apple.springboard.wipedevice и т. д.

Plist будет прикреплен к двоичному файлу приложения и подписан вместе с ним — в отличие от Info.plist, который не подписан. Если цепочка доверия не разорвана, это действует как предоставление прав некоторым (опасным ) действия.

person kennytm    schedule 21.04.2010
comment
run-unsigned-code, com.apple.springboard.launchapplications, task_for_pid-allow — отлично. откуда вы узнали обо всем этом? - person Sagar R. Kothari; 21.04.2010
comment
@sagar: обратный инжиниринг. (И, конечно, если вы включите что-либо из этого в право на AppStore, оно будет отклонено.) - person kennytm; 21.04.2010
comment
Что за реверс-инжиниринг? Мне это интересно. Кроме того, насколько глубока способность Apple отменять отправленные приложения? Они действительно проверяют эти вещи? Я видел недавно представленную игру, которая вылетала при запуске из-за отсутствия файла текстуры в комплекте приложения. Им не хватает некоторых очевидных проверок в App Store. - person Moshe; 17.05.2010