【问题标题】:Mac App Rejected for Use of Non-Public APIsMac App 因使用非公共 API 而被拒绝
【发布时间】:2011-09-01 04:20:21
【问题描述】:

Mac 应用最近因使用非公共 API(见下文)而被 Mac App Store 拒绝,我不确定如何解决该问题 - 主要是因为我不完全了解问题本身。

我尝试使用 otool -L 和 nm -u 来更好地了解问题,但我在终端中收到“无法映射文件”警告。

同样重要的是要注意我在应用程序中使用 PyObjC,我感觉这是这个问题的根源。

有人知道怎么解决吗?

2.5

使用非公共 API 可能会导致 糟糕的用户体验应该这些 API 在未来会发生变化,并且是 因此不允许。下列 非公共 API 包含在您的 应用:

'pthread_key_init_np',框架: '/usr/lib/libSystem.B.dylib' 'auto_assign_weak_reference', 框架:'/usr/lib/libauto.dylib' 'auto_collect',框架: '/usr/lib/libauto.dylib' 'auto_collect_multithreaded', 框架:'/usr/lib/libauto.dylib' 'auto_collection_parameters', 框架:'/usr/lib/libauto.dylib' 'auto_read_weak_reference',框架: '/usr/lib/libauto.dylib' 'auto_zone_add_root',框架: '/usr/lib/libauto.dylib' 'auto_zone_allocate_object', 框架:'/usr/lib/libauto.dylib' 'auto_zone_assert_thread_registered', 框架:'/usr/lib/libauto.dylib' 'auto_zone_atomicCompareAndSwap', 框架:'/usr/lib/libauto.dylib' 'auto_zone_atomicCompareAndSwapPtr', 框架:'/usr/lib/libauto.dylib' 'auto_zone_clear_stack',框架: '/usr/lib/libauto.dylib' 'auto_zone_create',框架: '/usr/lib/libauto.dylib' 'auto_zone_dump',框架: '/usr/lib/libauto.dylib' 'auto_zone_erase_associative_refs', 框架:'/usr/lib/libauto.dylib' 'auto_zone_get_associative_ref', 框架:'/usr/lib/libauto.dylib' 'auto_zone_get_layout_type', 框架:'/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', 框架:'/usr/lib/libauto.dylib' 'auto_zone_register_datasegment', 框架:'/usr/lib/libauto.dylib' 'auto_zone_register_thread', 框架:'/usr/lib/libauto.dylib' 'auto_zone_release',框架: '/usr/lib/libauto.dylib' 'auto_zone_retain',框架: '/usr/lib/libauto.dylib' 'auto_zone_retain_count',框架: '/usr/lib/libauto.dylib' 'auto_zone_root_write_barrier', 框架:'/usr/lib/libauto.dylib' 'auto_zone_set_associative_ref', 框架:'/usr/lib/libauto.dylib' 'auto_zone_set_class_list',框架: '/usr/lib/libauto.dylib' 'auto_zone_set_write_barrier', 框架:'/usr/lib/libauto.dylib' 'auto_zone_size',框架: '/usr/lib/libauto.dylib' 'auto_zone_start_monitor',框架: '/usr/lib/libauto.dylib' 'auto_zone_unregister_datasegment', 框架:'/usr/lib/libauto.dylib' 'auto_zone_unregister_thread', 框架:'/usr/lib/libauto.dylib' 'auto_zone_write_barrier_memmove', 框架:'/usr/lib/libauto.dylib'

如果你在你的 同名的源代码 上述API,我们建议 更改您的方法名称,以便 他们不再与苹果的 避免您的应用程序的私有 API 在未来的提交中被标记。

此外,一个或多个 上述 API 可能位于 包含在您的库中 应用。如果您无权访问 到图书馆的来源,你可能是 能够搜索已编译的二进制文件 使用“字符串”或“otool”命令 线工具。 “字符串”工具可以 输出方法列表 库调用和“otool -ov”将 输出 Objective-C 类 结构及其定义的方法。 这些技巧可以帮助你缩小 有问题的代码在哪里 居住。

【问题讨论】:

  • 如果您有付费开发者帐户,最好在 Apple 开发者论坛中提问

标签: macos appstore-approval


【解决方案1】:

PyObjC 框架正在导入(直接或通过正在使用的另一个库)这些库“/usr/lib/libSystem.B.dylib”和“/usr/lib/libauto.dylib”,如消息中所述。这两个库包含某些方法(在消息中也提到),

与 Apple 的私有 API 冲突

我猜这些方法会与 QTKit 框架发生冲突(参见 API notes for QTKit)。现在有两种可能:

  1. 如果可以,请在构建时删除有问题的库
  2. 与 PyObjC 的人交谈,看看他们是否需要更改他们的 API

【讨论】:

    猜你喜欢
    • 2017-01-24
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 2013-04-18
    相关资源
    最近更新 更多