为什么在创建 XCFramework 时出现此错误?:在为 iOS 模拟器构建时,在路径中找不到库
Why am I getting this error while creating XCFramework?: While building for iOS Simulator, no library was found in path
我已经在脚本文件中编写了以下命令来为 iPhoneSimulator 和 iPhoneOS 创建 XCFrameworks,如下所示:
xcodebuild archive -scheme "ProjectD" -archivePath "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive" -sdk 'iphonesimulator' SKIP_INSTALL=NO
xcodebuild archive -scheme "ProjectD" -archivePath "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive" -sdk 'iphoneos' SKIP_INSTALL=NO
xcodebuild -create-xcframework -framework "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive/Products/Library/Frameworks/ProjectDiphoneSimulator.framework" -output "/Users/Ron/XCFrameworks/ProjectDiphoneSimulator.xcframework"
xcodebuild -create-xcframework -framework "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive/Products/Library/Frameworks/ProjectDiphoneOS.framework" -output "/Users/Ron/XCFrameworks/ProjectDiphoneOS.xcframework"
在将它拖放到 Embedded Frameworks and Libraries
后,我尝试在项目中使用它
当我运行以设备为目标的项目时,它工作正常。但是当我在模拟器上 运行 它时,它会抛出以下错误:
在为 iOS 模拟器构建时,在 /Users/Ron/XCFrameworks/ProjectD.xcframework[=13 中找不到库=]
如果我像下面这样更改存档和 XCFramework 创建的顺序:
xcodebuild archive -scheme "ProjectD" -archivePath "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive" -sdk 'iphoneos' SKIP_INSTALL=NO
xcodebuild archive -scheme "ProjectD" -archivePath "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive" -sdk 'iphonesimulator' SKIP_INSTALL=NO
xcodebuild -create-xcframework -framework "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive/Products/Library/Frameworks/ProjectDiphoneOS.framework" -output "/Users/Ron/XCFrameworks/ProjectDiphoneOS.xcframework"
xcodebuild -create-xcframework -framework "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive/Products/Library/Frameworks/ProjectDiphoneSimulator.framework" -output "/Users/Ron/XCFrameworks/ProjectDiphoneSimulator.xcframework"
它适用于模拟器,不适用于出现相同错误的设备:
在为 iPhone 构建时,在 /Users/Ron/XCFrameworks/ProjectD.xcframework[=13= 中找不到库]
我也已将 Build Libraries for Distribution 设置为 Yes。如果我尝试使用不同的目标创建它们(iphone 和模拟器有 2 个 XCFrameworks)它正在工作。但这实际上违背了 XCFrameworks 的目的。
我是不是遗漏了什么或做错了任何步骤?提前感谢您的回答。
您需要从两个 .framework
创建一个 .xcframework
文件。 (这将包括模拟器和设备架构)要做到这一点 运行 单个 xcodebuild -create-xcframework
命令并传递 2 个不同的 .framework 文件:
xcodebuild
-create-xcframework
-framework "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive/Products/Library/Frameworks/ProjectDiphoneOS.framework"
-framework "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive/Products/Library/Frameworks/ProjectDiphoneSimulator.framework"
-output "/Users/Ron/XCFrameworks/ProjectDiphoneOS.xcframework"
当您改为 运行 2 个不同的 xcodebuild -create-xcframework
命令时,您的 .xcframework
仅包含您传递的最后一个 .framework
文件,该文件用于设备.这就是为什么您的项目无法在模拟器中 运行。
我已经在脚本文件中编写了以下命令来为 iPhoneSimulator 和 iPhoneOS 创建 XCFrameworks,如下所示:
xcodebuild archive -scheme "ProjectD" -archivePath "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive" -sdk 'iphonesimulator' SKIP_INSTALL=NO
xcodebuild archive -scheme "ProjectD" -archivePath "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive" -sdk 'iphoneos' SKIP_INSTALL=NO
xcodebuild -create-xcframework -framework "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive/Products/Library/Frameworks/ProjectDiphoneSimulator.framework" -output "/Users/Ron/XCFrameworks/ProjectDiphoneSimulator.xcframework"
xcodebuild -create-xcframework -framework "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive/Products/Library/Frameworks/ProjectDiphoneOS.framework" -output "/Users/Ron/XCFrameworks/ProjectDiphoneOS.xcframework"
在将它拖放到 Embedded Frameworks and Libraries
后,我尝试在项目中使用它当我运行以设备为目标的项目时,它工作正常。但是当我在模拟器上 运行 它时,它会抛出以下错误:
在为 iOS 模拟器构建时,在 /Users/Ron/XCFrameworks/ProjectD.xcframework[=13 中找不到库=]
如果我像下面这样更改存档和 XCFramework 创建的顺序:
xcodebuild archive -scheme "ProjectD" -archivePath "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive" -sdk 'iphoneos' SKIP_INSTALL=NO
xcodebuild archive -scheme "ProjectD" -archivePath "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive" -sdk 'iphonesimulator' SKIP_INSTALL=NO
xcodebuild -create-xcframework -framework "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive/Products/Library/Frameworks/ProjectDiphoneOS.framework" -output "/Users/Ron/XCFrameworks/ProjectDiphoneOS.xcframework"
xcodebuild -create-xcframework -framework "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive/Products/Library/Frameworks/ProjectDiphoneSimulator.framework" -output "/Users/Ron/XCFrameworks/ProjectDiphoneSimulator.xcframework"
它适用于模拟器,不适用于出现相同错误的设备:
在为 iPhone 构建时,在 /Users/Ron/XCFrameworks/ProjectD.xcframework[=13= 中找不到库]
我也已将 Build Libraries for Distribution 设置为 Yes。如果我尝试使用不同的目标创建它们(iphone 和模拟器有 2 个 XCFrameworks)它正在工作。但这实际上违背了 XCFrameworks 的目的。
我是不是遗漏了什么或做错了任何步骤?提前感谢您的回答。
您需要从两个 .framework
创建一个 .xcframework
文件。 (这将包括模拟器和设备架构)要做到这一点 运行 单个 xcodebuild -create-xcframework
命令并传递 2 个不同的 .framework 文件:
xcodebuild
-create-xcframework
-framework "/Users/Ron/Archives/ProjectDiphoneOS.xcarchive/Products/Library/Frameworks/ProjectDiphoneOS.framework"
-framework "/Users/Ron/Archives/ProjectDiphoneSimulator.xcarchive/Products/Library/Frameworks/ProjectDiphoneSimulator.framework"
-output "/Users/Ron/XCFrameworks/ProjectDiphoneOS.xcframework"
当您改为 运行 2 个不同的 xcodebuild -create-xcframework
命令时,您的 .xcframework
仅包含您传递的最后一个 .framework
文件,该文件用于设备.这就是为什么您的项目无法在模拟器中 运行。