Приложение Mac отклонено для использования непубличных API - PullRequest
3 голосов
/ 24 мая 2011

Приложение Mac недавно отклонено из Mac App Store для использования непубличных API-интерфейсов (см. Ниже), и я не уверен, как решить проблему - главным образом потому, что сам не полностью понимаю проблему.

Я пытался использовать otool -L и nm -u, чтобы получить лучшее представление о проблеме, но в терминале я получаю предупреждение «Не удается отобразить файл».

Также важно отметить, что я использую PyObjC в приложении, которое, как мне кажется, является источником этой проблемы.

Кто-нибудь знает, как решить эту проблему?

2,5

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

'pthread_key_init_np', framework: '/Usr/lib/libSystem.B.dylib' 'Auto_assign_weak_reference', framework: '/usr/lib/libauto.dylib' 'auto_collect', фреймворк: '/Usr/lib/libauto.dylib' 'Auto_collect_multithreaded', framework: '/usr/lib/libauto.dylib' 'auto_collection_parameters', framework: '/usr/lib/libauto.dylib' 'auto_read_weak_reference', framework: '/Usr/lib/libauto.dylib' 'auto_zone_add_root', фреймворк: '/Usr/lib/libauto.dylib' 'Auto_zone_allocate_object', framework: '/usr/lib/libauto.dylib' 'Auto_zone_assert_thread_registered', framework: '/usr/lib/libauto.dylib' 'Auto_zone_atomicCompareAndSwap', framework: '/usr/lib/libauto.dylib' 'Auto_zone_atomicCompareAndSwapPtr', framework: '/usr/lib/libauto.dylib' 'auto_zone_clear_stack', фреймворк: '/Usr/lib/libauto.dylib' 'auto_zone_create', framework: '/Usr/lib/libauto.dylib' 'auto_zone_dump', framework: '/Usr/lib/libauto.dylib' 'auto_zone_erase_associative_refs', framework: '/usr/lib/libauto.dylib' 'Auto_zone_get_associative_ref', framework: '/usr/lib/libauto.dylib' 'Auto_zone_get_layout_type', framework: '/usr/lib/libauto.dylib' 'auto_zone_is_collecting', фреймворк: '/Usr/lib/libauto.dylib' 'auto_zone_is_finalized', фреймворк: '/Usr/lib/libauto.dylib' 'Auto_zone_is_valid_pointer', framework: '/usr/lib/libauto.dylib' 'Auto_zone_register_datasegment', framework: '/usr/lib/libauto.dylib' 'Auto_zone_register_thread', framework: '/usr/lib/libauto.dylib' 'auto_zone_release', фреймворк: '/Usr/lib/libauto.dylib' 'auto_zone_retain', framework: '/Usr/lib/libauto.dylib' 'auto_zone_retain_count', framework: '/Usr/lib/libauto.dylib' 'Auto_zone_root_write_barrier', framework: '/usr/lib/libauto.dylib' 'Auto_zone_set_associative_ref', framework: '/usr/lib/libauto.dylib' 'auto_zone_set_class_list', framework: '/Usr/lib/libauto.dylib' 'Auto_zone_set_write_barrier', framework: '/usr/lib/libauto.dylib' 'auto_zone_size', framework: '/Usr/lib/libauto.dylib' 'auto_zone_start_monitor', framework: '/Usr/lib/libauto.dylib' 'Auto_zone_unregister_datasegment', framework: '/usr/lib/libauto.dylib' 'Auto_zone_unregister_thread', framework: '/usr/lib/libauto.dylib' 'Auto_zone_write_barrier_memmove', framework: '/usr/lib/libauto.dylib'

Если вы определили методы в вашем исходный код с теми же именами, что и Вышеупомянутые API, мы предлагаем изменить ваши имена методов так, чтобы они больше не сталкиваются с Apple частные API, чтобы избежать вашего приложения помечается в будущих представлениях.

Кроме того, один или несколько вышеупомянутые API могут находиться в библиотека включена в ваш приложение. Если у вас нет доступа к источнику библиотеки, вы можете быть возможность поиска скомпилированного двоичного файла используя команду «strings» или «otool» инструменты Инструмент «Струны» может вывести список методов, которые библиотека звонков и «otool -ов» будет вывести класс Objective-C структуры и их определенные методы. Эти методы могут помочь вам сузить вниз, где проблемный код проживает.

1 Ответ

1 голос
/ 14 января 2016

Платформа PyObjC импортирует (напрямую или через другую библиотеку, которая использует) эти библиотеки "/usr/lib/libSystem.B.dylib" и "/usr/lib/libauto.dylib", как указано в сообщении.Эти две библиотеки содержат определенные методы (также упоминаемые в сообщении), которые

конфликтуют с частными API Apple

Я полагаю, что эти методы конфликтуют с платформой QTKit (см. Примечания API для QTKit ).Теперь есть 2 возможности:

  1. Удалить эту проблемную библиотеку, если вы можете во время сборки
  2. Поговорите с ребятами из PyObjC, чтобы узнать, нужно ли им менять свой API
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...