簡體   English   中英

在具有項目框架依賴項的應用程序中嵌入 XCFramework

[英]Embedding XCFramework in application with project framework dependencies

我有一個 Xcode 工作區,其中包含一個帶有 iOS 應用程序目標的項目和另一個帶有 Framework 目標的項目。 框架目標依賴於另一個框架,該框架以xcframework的形式集成:

  • 我的應用程序
  • 我的框架
  • 其他框架

使用常規的OtherFramework.framework需要將其鏈接到MyFramework ,然后嵌入到MyApp即使MyApp不需要框架本身。 但是,當與xcframework集成時,此項目將無法構建,並出現No such module 'OtherFramework'錯誤。

項目設置:

我的框架項目

我的應用項目

MyApp目標中刪除OtherFramework.xcframework修復了構建問題,但隨后會導致library not loaded錯誤,因為應用程序中不存在該框架。

演示項目在這里: https : //github.com/msaps/XCFramework-Link-Issue

您打算如何在應用程序中鏈接xcframework並在依賴框架中鏈接?

為什么?

pyckamil剛剛發布了這篇文章,詳細解釋了這個問題: everything wrong with XCFrameworks

原來的Xcode先后為優化ProcessXCFrameworkLibrary步驟,提取正確.framework.xcframework的積極構建架構。 這只會運行一次,這會導致嘗試鏈接同一框架的其他目標出現問題。

更新

此問題已在 Xcode 12.0 中解決

更新 - 在 Xcode 12.0 中解決

shinsuk提出了一種可靠的解決方法,該方法通過添加架構顯式框架搜索路徑來確保在 XCFramework 中找到正確的.framework

詳細信息可以在自述文件中找到。

搜索路徑

我也有這樣的問題。 首先,確定您是否在與 MyApp 相同的目錄中有 MyFramework.framework 文件。

其次,在構建 MyFramework.framework 時,請確保 OtherFramework.xcframework 也在 MyFramework 的項目目錄中。

還有一件事,檢查目標 SDK 版本。 他們應該在同一級別的某個地方。

檢查構建設置並將框架搜索路徑定義到包含相關框架的文件夾。 如果框架放在您的項目目錄中,只需將框架搜索路徑設置為 $(SRCROOT) 並將其設置為遞歸。

使用 Xcode檢查響應獲取錯誤“沒有這樣的模塊”,但框架在那里

使用xcframework而不是framework后,我也遇到了這個問題。 所以我改變了我的項目結構:

MyFramework Peoject嵌入了OtherFramework.xcframework ,然后在MyFramework Project使用@_exported import OtherFramework將其導出。 MyApp只是鏈接MyFramework但可以導入/使用MyFrameworkOtherFramework

順便說一句,它似乎自定義了@rpath並手動設計了OtherFramework

IMO,這似乎不是 xcframework 問題。

看看這個答案: https : //stackoverflow.com/a/59435627/2661407

iOS、watchOS 或 tvOS 不支持 Umbrella 框架。

OtherFramework.xcframework 應該簽名並嵌入到您的主機應用程序中。

並將“@executable_path/Frameworks”設置添加到您的 MyFramework.framework > Build settings > Runpath Search Paths 中。

我和你有同樣的問題,在看到你的 pbxproj 后,我認為它可以用同樣的方式解決。

將您的框架搜索路徑更改為遞歸(通過 UI 或手動編輯 pbxproj "$(SRCROOT)/../Frameworks" => "$(SRCROOT)/../Frameworks/**" ),如下所示: https: //github.com/msaps/XCFramework-Link-Issue/pull/1/files

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM