【问题标题】:app rejected for using libsqlite3.dylib应用因使用 libsqlite3.dylib 而被拒绝
【发布时间】:2023-03-11 09:29:03
【问题描述】:

我能够使用 adhoc 分发和测试我的应用程序,但是当我在管理器中验证应用程序商店提交时(xcode 4.3.2 - 产品 > 存档 > 验证)我收到以下错误

  • 您的应用包含非公开的 api 使用
  • 应用程序引用了有效负载/appname.app/libsqlite3.dylib 中的非公共符号: _dispatch_source_type_vm

我的应用使用 sqlite3 来存储从 youtube 获取的数据,即视频标题和相应的图像 url(最多 10 条记录)

我已经删除并添加了 lib 文件, 将部署目标设置为 4.0, 请帮忙

【问题讨论】:

    标签: iphone app-store submission


    【解决方案1】:

    从 Apple 团队获得解决方案

    • Apple 回复(DTS - 开发者技术支持):

    “你应该只链接到 libsqlite3.dylib 库。你不需要将它复制到你的应用程序中,因为 iOS 附带了一个 SQLite3 库”。

    • 解决方案:

    从 xcode 中删除 libsqlite3.dylib 并将“-libsqlite3”添加到“项目”>“构建设置”和“目标”>“构建设置”下的“其他链接器标志”。


    验证成功并提交应用到应用商店审核 ... 只是更新仅供参考 该应用已获得批准

    【讨论】:

    • 谢谢伙计!我有一个应用程序会在几周后发布,并且包含 libsqlite3.dylib。知道这一点可以避免我被拒绝。所以再一次,谢谢!
    • 不客气@MrDresden,祝你好运,在将应用程序提交到应用商店进行审核之前,我觉得以下链接很有用,请参阅this
    【解决方案2】:

    正确的标志应该是“-lsqlite3”,因为 ls 语法是(参见 $man ld):

    -lx 此选项告诉链接器在库搜索路径中搜索 libx.dylib 或 libx.a。如果字符串 x 的格式为 y.o,则在相同的位置搜索该文件,但不会在文件名前添加 lib' or appending.a' 或 `.dylib'

    如果您使用“-libsqlite3”作为标志,则会收到“找不到库”链接器错误。

    【讨论】:

    • 谢谢,这解决了我的问题。