如何嵌入依赖于体系结构的框架

问题描述 投票:1回答:1

我的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_frameworkssimulator_frameworks文件夹中有两个单独的框架。

ios xcode ios-frameworks
1个回答
0
投票

[xcode中没有办法根据体系结构来包含它们,但是Apple引入了2019 XCFrameworks作为新的代码分发格式。

从XCode 11 release notes

XCFramework可以捆绑二进制框架或适用于多种平台的库-包括iOS设备,iOS模拟器,和Mac Catalyst-放入一个可分发的.xcframework捆绑包中您的开发人员可以在自己的应用程序中使用。

[您可以使用它来将这两个框架捆绑在一起,将其添加到您的项目中,并且Xcode在构建时使用所包含框架或库的正确平台版本。

您可以使用以下命令从终端创建XCFramework:

xcodebuild -create-xcframework -framework PATH_TO_FRAMEWORK1 -framework PATH_TO_FRAMEWORK2 -output PATH_TO_BUNDLED_FRAMEWORK

PATH_TO_FRAMEWORK1PATH_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

© www.soinside.com 2019 - 2024. All rights reserved.