如何嵌入依赖于架构的框架
How to embed framework which depends on architecture
我的 iOS 项目依赖于一些 CustomLib.framework
。这个框架有两个独立的文件:一个用于模拟器,另一个用于真实设备。
我把这些文件放到文件夹里
@(PROJECT_DIR)/device_frameworks/CustomLib.framework
和
@(PROJECT_DIR)/simulator_frameworks/CustomLib.framework
我编辑了
Build Settings->Search paths->Framework search paths
:
Any iOS Simulator SDK $(PROJECT_DIR)/simulator_frameworks
Any iOS SDK $(PROJECT_DIR)/device_frameworks
我不明白的是如何将CustomLib.framework
添加到Xcode项目中,以及如何将其添加为嵌入式框架(Build phases->Embed frameworks
)。因为在这些步骤中我必须指定一个具体的框架,但我在 device_frameworks
和 simulator_frameworks
文件夹中有两个单独的框架。
xcode 中无法根据架构包含它们,但 Apple 引入了 2019 XCFrameworks 作为新的代码分发格式。
来自 XCode 11 release notes:
An XCFramework makes it possible to bundle a binary framework or
library for multiple platforms —including iOS devices, iOS simulators,
and Mac Catalyst — into a single distributable .xcframework bundle
that your developers can use within their own applications.
您可以使用它将这两个框架捆绑为一个,将其添加到您的项目中,并且 Xcode 在构建时使用包含的框架或库的正确平台版本。
您可以使用以下命令从终端创建 XCFramework:
xcodebuild -create-xcframework -framework PATH_TO_FRAMEWORK1 -framework PATH_TO_FRAMEWORK2 -output PATH_TO_BUNDLED_FRAMEWORK
其中 PATH_TO_FRAMEWORK1
和 PATH_TO_FRAMEWORK2
是框架的路径,PATH_TO_BUNDLED_FRAMEWORK
是生成的 XCFramework 的路径。
假设您在项目目录中,命令可能如下所示:
xcodebuild -create-xcframework -framework device_frameworks/CustomLib.framework -framework simulator_frameworks/CustomLib.framework -output BundledCustomLib.xcframework
那么您只需要将 BundledCustomLib.xcframework
添加到您的项目中。
我的 iOS 项目依赖于一些 CustomLib.framework
。这个框架有两个独立的文件:一个用于模拟器,另一个用于真实设备。
我把这些文件放到文件夹里
@(PROJECT_DIR)/device_frameworks/CustomLib.framework
和
@(PROJECT_DIR)/simulator_frameworks/CustomLib.framework
我编辑了
Build Settings->Search paths->Framework search paths
:
Any iOS Simulator SDK $(PROJECT_DIR)/simulator_frameworks
Any iOS SDK $(PROJECT_DIR)/device_frameworks
我不明白的是如何将CustomLib.framework
添加到Xcode项目中,以及如何将其添加为嵌入式框架(Build phases->Embed frameworks
)。因为在这些步骤中我必须指定一个具体的框架,但我在 device_frameworks
和 simulator_frameworks
文件夹中有两个单独的框架。
xcode 中无法根据架构包含它们,但 Apple 引入了 2019 XCFrameworks 作为新的代码分发格式。
来自 XCode 11 release notes:
An XCFramework makes it possible to bundle a binary framework or library for multiple platforms —including iOS devices, iOS simulators, and Mac Catalyst — into a single distributable .xcframework bundle that your developers can use within their own applications.
您可以使用它将这两个框架捆绑为一个,将其添加到您的项目中,并且 Xcode 在构建时使用包含的框架或库的正确平台版本。
您可以使用以下命令从终端创建 XCFramework:
xcodebuild -create-xcframework -framework PATH_TO_FRAMEWORK1 -framework PATH_TO_FRAMEWORK2 -output PATH_TO_BUNDLED_FRAMEWORK
其中 PATH_TO_FRAMEWORK1
和 PATH_TO_FRAMEWORK2
是框架的路径,PATH_TO_BUNDLED_FRAMEWORK
是生成的 XCFramework 的路径。
假设您在项目目录中,命令可能如下所示:
xcodebuild -create-xcframework -framework device_frameworks/CustomLib.framework -framework simulator_frameworks/CustomLib.framework -output BundledCustomLib.xcframework
那么您只需要将 BundledCustomLib.xcframework
添加到您的项目中。