Как использовать частные API iPhone SDK - PullRequest
6 голосов
/ 15 мая 2010

Я не нашел исчерпывающего списка шагов, необходимых для использования частного API из библиотеки iPhone.

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

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

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

Пожалуйста, сохраните комментарии о том, что вы не используете частные API ... Я знаю о самых больших рисках:

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

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

  • Использование в частных приложениях (например, для модульного тестирования или возни, чтобы посмотреть, что возможно)

1 Ответ

5 голосов
/ 15 мая 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...