iPhone静态库

时间:2010-10-22 15:16:07

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

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

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

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

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

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

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

4)App Store中的静态库如何被接受。这是正常的过程吗? (我的意思是与静态库捆绑的项目)

谢谢,

此致

Dilshan

1 个答案:

答案 0 :(得分:4)

哇。四个问题。如果我能获得4倍的代表。 :)

  1. 是的,您需要在App的项目中包含框架。在静态库中链接框架只会创建对不存在的符号的引用。这些需要在应用程序链接期间通过在框架中链接到最终应用程序来解决。
  2. 我认为你正在考虑销售静态lib文件和头文件的SDK。是的,技术上可以将它们全部链接到一个巨型库中(详见 ar(5))并发送库并选择头文件,但请参阅答案#3。
  3. 取决于第三方库的许可。如果您有任何疑问,请咨询法律顾问。
  4. 大多数应用都有一个链接到应用的静态库。例如,绝大多数免费应用程序包括AdMob或类似的广告包,它们作为静态库分发。静态库本身不违反任何Apple提交策略,但库可以违反策略,例如包括未记录的API。如果静态库违反了提交策略,则即使该应用不使用该功能,也会拒绝使用该提交策略的应用。
  5. 顺便说一下,你不能完全“隐藏”库A和B的接口(来自你的例子)。如果可以的话,Apple会,并且不可能使用未记录的API。你所能做的就是将它们从标题和文档中删除。