【问题标题】:iPhone static librariesiPhone 静态库
【发布时间】:2011-04-29 05:37:37
【问题描述】:

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

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

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

目前我在上面尝试时遇到了一些构建问题。

2) 我们可以在静态库中捆绑第三方静态库并仅分发我们的库吗?

3) 假设我们正在下载一些第 3 方代码。使用它我们正在创建静态库。我们可以使用 3rd 方代码分发静态库吗?如果是这样,我们需要公开代码吗?

4) App store 中的静态库是如何接受的。和正常流程一样吗? (我的意思是与静态库捆绑的项目)

谢谢,

问候,

迪尔山

【问题讨论】:

    标签: iphone iphone-sdk-3.0 static ios4 static-libraries


    【解决方案1】:

    哇。四个问题。如果我能得到 4 倍的代表就好了。 :)

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

    顺便说一句,您不能完全“隐藏”库 A 和 B 的接口(从您的示例中)。如果可以,Apple 会并且不可能使用未记录的 API。您真正能做的就是将它们排除在标题和文档之外。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多