2017-05-30 50 views
1

我想合併兩個項目。將包含C和子模塊的Objective-C項目(linphone)作爲框架或靜態庫轉換?

第一個項目寫在目標C

  1. 和SWIFT 2.3
  2. 波德相依
  3. 有不同的目標
  4. 子模塊依賴

第二個項目

https://github.com/BelledonneCommunications/linphone

  1. 用Objective C對Linphone中SDK
  2. 依賴C語言編寫的
  3. 子模塊依賴

我如何轉換第二個項目(Linphone中)作爲一個框架?

編輯1

我已經集成Linphone中的項目(二期工程),包括C 書面Linphone中SDK和整改的所有編譯時錯誤。現在我能夠運行該項目。但是我會爲子模塊依賴項做些什麼?

EDIT 2

按目前,成功登錄與我們自己的SIP服務器帳戶。右 現在我的問題是

LinphoneManager 
- (void)createLinphoneCore 
- theLinphoneCore = linphone_core_new_with_config(&linphonec_vtable, _configDb, (__bridge void *)(self)); 

theLinphoneCore是NULL,爲什麼呢?

注意:我仍然沒有整合子模塊,但我可以做音頻&視頻通話一切正常。

回答

3

建立一個完整的liblinphone SDK的唯一方法是通過合適的客戶端存儲庫, linphone-iphone或linphone-android。正如你已經發現,可以利用來構建一個框架或靜態庫:

./prepare.py -c && ./prepare.py -DENABLE_STATIC_ONLY=ON && make && make zipsdk

設置DENABLE_STATIC_ONLY = ON的庫,和= OFF爲一個框架:

注意:爲2017年6月,框架配置仍在開發中。它在模擬器和實際硬件上構建並運行,但由於子框架配置不正確,導致產生的應用程序二進制文件無法提交給Apple。如果你不需要提交(甚至TestFlight!)2-6個月,他們可能會很快完成。

如果您需要更快的功能產品,請使用靜態庫配置。唯一棘手的部分是在您的項目/工作區中設置一切。

  1. 做一次全面清理,並建立使用prepare.py如上
  2. 解壓SDK zip文件到自己的項目目錄liblinphone-SDK
  3. 添加庫中liblinphone-SDK /蘋果達爾文/ lib到General中的XCode的鏈接框架和庫部分。點擊+,選擇「添加其他」,導航到libs目錄。不要忘記,包括liblinphone-SDK /蘋果達爾文/ lib目錄/ mediastreamer /插件的任何
  4. 您可能需要添加一個Build設置標題搜索路徑$(SRCROOT)/liblinphone-sdk/apple-darwin/include
  5. 您可能需要添加一個Build設置圖書館搜索路徑$(PROJECT_DIR)/liblinphone-sdk/apple-darwin/lib
  6. linphone-iPhone的XCode項目是發現你可能需要做的其他調整的好地方。

設置您的工作空間可能需要反覆試驗。 Xcode對錯誤並不好,但你應該可以使用Report Navigator視圖來查看完整的構建日誌和錯誤消息。例如,如果您有未定義的符號,則可以嘗試grep -ri SYMBOLNAME liblinphone-sdk來確定可能缺失的庫。

關於你的編輯2問題,你需要所有的子模塊或它不會工作。 ortp,belle-sip,mediastreamer,srtp,mbedtls,它們都是必不可少的。只有mediastreamer插件編解碼器(有些)是可選的。

+0

非常感謝您的回覆。關於編輯2,我爲我現有的項目提供了子模塊。如果我複製粘貼到整個文件,它的工作?我的意思是來自linphone項目的submodules文件夾到我現有項目的子模塊文件夾中的所有文件。 –

+0

對於linphone,Xcode不列出任何子模塊。對於其他項目,我可以在「Development Pods」組下的Xcode中看到子模塊的內容。在我的情況下,我可以將linphone子模塊拖入當前項目的Xcode中嗎? –

+1

在您製作zipsdk_並在我的答案的第3步中添加靜態庫之後,您將將所有Linphone子模塊鏈接到您的應用中。您不需要將Linphone的子模塊直接集成到您的源代碼中,也不需要將它們與cocoapods集成 - 所有內容都是預先構建的,並通過_liblinphone-sdk_子目錄包含在內。如果你需要調試linphone代碼,你也可以在調試時編譯它。 prepare.py有很多選項。 –

相關問題