代码之家  ›  专栏  ›  技术社区  ›  Dilshan

iPhone静态库

  •  1
  • Dilshan  · 技术社区  · 15 年前

    我在创建静态库时遇到了一些问题。

    假设我有一个静态库A,我创建了它,并将它包含到带有相关头文件的静态库B中。我需要创建一个静态库C,它将是我的最终库,它应该包括静态库B,它隐式地包括静态库a。因此,我需要在库C中隐藏库a和库B的实现细节,但它不应该对最终用户可见。只提供一个接口。

    1) 所以假设我的静态库A使用了一些依赖项,这些依赖项是SDK中的一些库。那么,我是否需要在我的最终项目中导入,尽管我包含了库C?

    2) 我们可以将第三方静态库打包到静态库中,并且只分发我们的库吗?

    3) 假设我们正在下载一些第三方代码。利用它我们正在创建静态库。我们能用第三方代码分发一个静态库吗。如果是,我们需要公开代码吗?

    4) 应用程序商店中的静态库如何接受。这是正常的过程吗?(我是说带有静态库的项目包)

    当做,

    帝山

    1 回复  |  直到 15 年前
        1
  •  4
  •   John Franklin    15 年前

    真 的。四个问题。如果我能得到4倍的回报就好了:)

    1. 是的,你需要在应用程序的项目中包含框架。链接静态库中的框架只会创建对不存在的符号的引用。这些需要在app链接期间通过在框架中链接到最终的app来解决。
    2. 我认为你在考虑销售一个包含静态lib文件和头文件的SDK。是的,从技术上讲,可以将它们链接到一个巨大的图书馆(参见 有关详细信息),请发送库并选择头文件,但请参见答案3。
    3. 取决于第三方库的许可证。如有疑问,请咨询法律顾问。
    4. 大多数应用程序都有一个链接到该应用程序的静态库。例如,绝大多数免费应用程序都包括AdMob或类似的广告包,它们作为静态库分发。静态库本身并不违反任何Apple提交策略,但是 违反策略,例如包括未记录的api。如果静态库违反提交策略,则使用该库的应用将被拒绝,即使该应用不使用该功能。

    顺便说一下,您不能完全“隐藏”库A和库B的接口(从您的示例中)。如果可以的话,Apple将并且将不可能使用未记录的API。你所能做的就是把它们从标题和文档中去掉。