Теперь, когда Apple запускает своего рода статический анализ для автоматической проверки использования частного API, несколько человек были пойманы из-за библиотеки Three20. Я использую другую стороннюю библиотеку (которую я компилирую из кода), и я хотел бы автоматически проверять ее на предмет использования частного API перед отправкой в Apple, чтобы я мог удалить / переписать эти части.
Если я запускаю nm
в своем исполняемом файле приложения, я получаю список символов, и я вижу в нем символы, которые я не использую. Например, я вижу _AudioServicesPlaySystemSound, и если я ищу «AudioServicesPlaySystemSound» в XCode, я не получаю результатов. Есть ли способ автоматически различать вызовы частных API-интерфейсов? Например, я заметил, что Apple имеет привычку называть их с начальным подчеркиванием.
Однако: если я намеренно включаю вызов частного API, он не отображается в выводе nm
, но появляется, если я запускаю strings
в двоичном файле. Исходя из этого, у меня была одна идея: скомпилировать огромный список всех частных вызовов API в огромную таблицу и автоматически искать их в выводах строк. Я еще этого не делал.
Есть ли у кого-нибудь советы о том, как автоматически отловить этот материал, поэтому я прохожу процесс проверки только один раз?