2013-04-08 68 views
1

我目前正在构建一个应该在少数iOS项目中内部使用的库,但也应该分发给访问我们的库服务的客户。库本身纯粹由C++代码组成,我基本上可以在iOS上使用它创建应用程序,并且工作正常。我的问题是创建一个单一的,易于分发的文件,可以发给客户,可以轻松地安装它们,使用提供的头文件,并且不需要在连接时遇到我目前面临的麻烦。为iOS应用程序创建可分发的框架

我们的代码依赖于另外两个项目,即boost和websocketpp。为了提升,我使用了脚本on github来生成一个框架。对于websocketpp,我将它导入XCode并使用this github project的脚本构建框架。我将这两个框架作为依赖关系添加到我的(潜在)框架中,并使用相同的脚本构建一个框架。

我有一个应用程序使用我的库作为子项目工作正常。即使将框架包含到项目中并在设备上运行它也能正常工作。到现在为止还挺好。

但是,试图创建应用程序项目档案会导致几个问题和头痛。

  1. 我的图书馆似乎没有包含所有体系结构的代码。所以我试图归档框架项目,在构建脚本中使用不同的位置来搜索头文件的小修改后,它们工作正常。

  2. 它似乎并不包含所有的二进制代码或对本地文件的引用(即我的具体位置的提升)。我从Linker的错误中收集了这些信息,但我仍然知道这些错误告诉我有些提升呼叫无法满足。

第二个问题让我觉得,我必须做一些根本性的错误,我的直觉告诉我,它不能是困难的,“hackish的”为他人创造的iOS开发框架或库。

正如你现在可能已经发现的那样,当我谈到iOS时我并不是很有经验,我想知道我是否从根本上失去了某些东西。所以,我相信这个问题是相当广泛的,所以一些更具体的questsions:

  1. 有(另)的方式来产生某种分配(最好是框架),其中包括:我的公头,我为支持iOS开发的所有平台编译的二进制代码,依赖关系的二进制代码?
    • 是否通过向构建过程添加一些手写脚本来实现这一目标?
    • 我有这样的感觉,我发现的信息比一年更旧,而且大多数是指Xcode 4.2或4.3 - 因此最近在这方面有什么变化?
  2. 例如一个错误我得到的是:

    File is universal (2 slices) but does not contain a(n) armv7s slice: <file> 
    

    <file>切片的路径,在不同的XCode工作区的Products文件夹中的框架文件(该库建立在不同的工作区,然后应用程序)。我从完全不同的位置将框架文件夹放入此测试的项目中。

    • 这是怎么回事?
    • 为什么它会继续引用某个内部XCode目录?
    • 如何正确导出它?
  3. 因为我猜想我的设置可能是从我尝试过的所有不同的东西中变得诡异和怪异的:这种设置在理想情况下是怎么样的?
  4. 是的,有关于这方面已经SO一些问题,但是,要么我没有看到或在这些答复不明白:
    • ...如何处理对其他三阶我的代码depencies第三方代码正确。
    • ...如何生成可分发的文件。

回答

1

你检查下编译源代码和复制文件你的项目构建阶段,看看你都包括在构建的框架源文件?

您也可以尝试OSX下的C/C++库模板 - > Framework &库。

最后,还有kstenerud’s iOS Universal Framework,我发现它非常有用。我在使用它时在我的blog中写了几篇文章。