![](/img/trans.png)
[英]How to export “fat” Cocoa Touch Framework (for Simulator and Device)?
[英]how to correctly build an app for device and simulator that conditionally uses the correct framework. (not a universal/fat framework)
已經獲得了設備和模擬器的單獨框架,我想整合這些框架以實現所需的功能。 我已將模擬器框架包含在我的迦太基框架項目中。 當我編譯我的框架時,我收到以下錯誤
為 iOS-armv7 構建但試圖與為 iOS-arm64 構建的文件鏈接 架構 armv7 的未定義符號:“OBJCCLASS$...”,引用自:ViewController.o“OBJCCLASS$...”中的 objc-class-ref,引用自:DepedencyInjector.o 中的 objc-class-ref ViewController.o 中的 objc-class-ref ld:未找到架構 armv7 clang 的符號:錯誤:linker 命令失敗,退出代碼為 1(使用 -v 查看調用)
參考: https://developer.apple.com/forums/thread/66978 https://developer.apple.com/forums/thread/66978?answerId=215100022#21510002
如果您可以選擇將兩個框架鏈接在一起,您可以讓編譯器決定。 在這種情況下,您將創建一個 FAT 二進制文件。 這表示:
創建 FAT 二進制文件的命令是:
lipo -create ./Simulator.framework/framework_binary ./Device.framework/framework_binary -output ./Universal
現在您必須復制文件夾Device.framework
並將其命名為Universal.framework
。
將使用 lipo 創建的二進制文件復制到此文件夾中。
然后打開文件./Universal.framework/Info.plist
並將字符串iPhoneSimulator
添加到CFBundleSupportedPlatforms
數組中。
現在從Simulator.framework/Modules/framework_name.swiftmodule/
文件夾中復制x86_64.swiftdoc
和x86_64.swiftmodule
並將它們粘貼到Universal.framework/Modules/framework_name.swiftmodule/
中。
將創建的通用框架導入目標Embedded Binries
中,您應該能夠編譯您的項目。
您可以按如下方式構建 XCFramework(從命令行)。
xcodebuild \
-create-xcframework \
-framework "<<path to simulator xcarchive>>/Products/Library/Frameworks/SomeFramework.framework" \
-framework "<<path to device xcarchive>>/Products/Library/Frameworks/SomeFramework.framework" \
-output "CombinedFramework.xcframework"
您可以為此添加更多內容並設置各種路徑和 output 來品嘗。
不確定這是否有幫助,因為您不是在尋找通用框架並且不確定如何對它進行分類...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.