[英]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 中解決
我也有這樣的問題。 首先,確定您是否在與 MyApp 相同的目錄中有 MyFramework.framework 文件。
其次,在構建 MyFramework.framework 時,請確保 OtherFramework.xcframework 也在 MyFramework 的項目目錄中。
還有一件事,檢查目標 SDK 版本。 他們應該在同一級別的某個地方。
檢查構建設置並將框架搜索路徑定義到包含相關框架的文件夾。 如果框架放在您的項目目錄中,只需將框架搜索路徑設置為 $(SRCROOT) 並將其設置為遞歸。
使用xcframework
而不是framework
后,我也遇到了這個問題。 所以我改變了我的項目結構:
MyFramework Peoject
嵌入了OtherFramework.xcframework
,然后在MyFramework Project
使用@_exported import OtherFramework
將其導出。 而MyApp
只是鏈接MyFramework
但可以導入/使用MyFramework
和OtherFramework
。
順便說一句,它似乎自定義了@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.