2013-04-08 49 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中寫了幾篇文章。