Как использовать iPhone SDK Private APIs

Я не нашел всесторонний список шагов, которые требуются, чтобы использовать частный API от iPhone Library.

В частности, я хотел бы знать, как получить заголовочные файлы, если они даже требуются, как заставить это компилировать (когда я просто добавляю заголовок, это жалуется, что функции не определяются), и какие ресурсы можно использовать для приобретения знаний о частных API (например, на основе событий другого пользователя, таких как http://iphonedevwiki.net/, который имеет некоторых).

Я читал в других местах, что люди рекомендуют использовать дамп класса для получения заголовков. Есть ли какие-либо альтернативные методы? Я заметил, что существуют некоторые репозитории iPhone Private SDKs, каковы самые актуальные ресурсы, которые Вы рекомендовали бы?

Большая часть назад вопросы о документации частных API, все связались с веб-сайтом Erica Sadun, который, кажется, больше не имеет документацию (все ссылки слева вычеркнуты).

Сохраните комментарии о не использовании частного API... Я знаю о самых больших рисках:

  • Приложение будет отклонено Apple.
  • Приложение прервет будущие обновления ОС.

Я говорю о законном использовании, таком как:

  • Частное использование приложения (например, для поблочного тестирования, или бездельничающий для наблюдения, что возможно),

7
задан Community 23 May 2017 в 12:16
поделиться

1 ответ

Objective-C имеет достаточно информации в скомпилированном двоичном файле, чтобы почти полностью восстановить заголовки. Единственное, чего не хватает, это имен аргументов, которые часто можно приблизительно определить из прототипа типа или метода, а также некоторых определений структур и перечислений. Именно поэтому программы типа class-dump - лучший способ получить заголовки. Они полны, включают каждый метод, независимо от того, был ли он в настоящем заголовке или нет, актуальны и не нуждаются в распространении. Другой способ получить заголовки - посмотреть в публичной версии того же фреймворка, например, WebKit является приватным только на iPhone, а в остальном хорошо документирован.

Если вы интересуетесь чем-то помимо Objective-C, то вам придется действовать по старинке, продираясь через дизассемблирование, чтобы угадать аргументы функций. Как только вы получите несколько символов, поищите их, и, возможно, вы найдете заголовок, который кто-то другой опубликовал. otool - хорошее место для начала.

Если вы включаете заголовки, будь то для Objective-C или C, вы также должны включить фреймворки или библиотеки, для которых эти заголовки объявляют методы, как и любые другие заголовки. Большинство материалов Objective-C находится в папке PrivateFrameworks рядом с обычной папкой Frameworks. Библиотеки можно найти в папке usr/lib.

Имейте в виду, что между симулятором и устройством есть много различий, поэтому убедитесь, что вы собираете заголовки на реальном устройстве. Есть также некоторые методы, которые вы не сможете запустить как приложение в песочнице.

5
ответ дан 7 December 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: