问题标签 [xcframework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
74 浏览

static-libraries - 如何为 obj c 静态库创建 xcframework?

我有一个静态库,主要用目标 c / c++ 编写,称为 libA。现在我想在另一个名为 libB 的静态库中使用头文件,它在 swift 上。

因此,我必须通过 Bridging-Header.h 公开标头并在 libA 中创建一个空的 swift 文件,以便将 libA 导入 libB 的 swift 类中作为 import A。

现在我想为 libA 创建二进制框架(xcframework),为此我必须启用 Build Libraries for Distribution 但我不能这样做,因为我在 libA 中使用 Bridging-Header.h

我现在应该如何进行?

0 投票
0 回答
107 浏览

ios - 如何从 Objective-C 框架创建 XCFramework

我在 Objective-C 中开发了一个动态框架,我需要从中生成一个 xcframeworks。我已经尝试过脚本

在另一个用 Swift 开发的框架中,一切正常。但是在这个中它说它在我的框架内找不到MyFramework可执行文件,所以它无法创建 xcframework。

有什么我想念的吗?

0 投票
1 回答
75 浏览

ios - 使用 xcframeworks 运行我的项目时出现脚本错误“从 ArcGIS 致命错误中提取 arm64:lipo:输入文件”

0 投票
0 回答
342 浏览

ios - 产生多个命令 - 命令 ProcessXCFramework

我当前的 iOS 13+ (xcode 12.5) 简化项目设置有一些嵌套依赖项,如下所示:

因为 Alamofire.xcframework 被链接到多个内部框架中,所以它会在没有实际嵌入的情况下被链接。这意味着 AppTarget 需要链接和嵌入 Alamofire.xcframework,以便内部框架可以在运行时动态链接它。

内部框架可以使用此设置正确编译,但 AppTarget 无法编译,并且出现以下错误: 多个命令产生...命令:ProcessXCFramework 及其原因:

  • 在编译时 AppTarget 会编译 Internal-Framework-A,它会触发 Alamofire.xcframework 的 ProcessXCFramework,但因为 AppTarget 也有 Alamofire.xcframework 作为依赖项,所以它也会运行 ProcessXCFramework 命令,因此对于同一个文件,我们将有 2 个命令。

我很想知道我是否缺少某些东西。看起来应该有一个标志让 xcode 处理一次相同的框架。

0 投票
0 回答
352 浏览

swift - 使用 SSH 将 xcframework 添加为 Swift 包依赖项

当我尝试通过 ssh URL 将我的 xcframework 添加为 swift 包依赖项时,Xcode 给我错误

我可以通过源树通过相同的 ssh URL 克隆这个 repo,它工作正常。Package.manifest 文件如下

)

0 投票
1 回答
412 浏览

ios - 测试目标中没有这样的模块“RxBlocking”

我正在使用 Carthage 设置我的项目的 RxSwift 依赖项。最近,我尝试使用 XCFrameworks 来代替 command carthage update --platform ios --use-xcframeworks。我已经设置了所有需要设置的内容(例如Link Binary With Libraries,将目标中的 .frameworks 更改为 .xcframeworksBuild Phase等)。它有效,我可以在模拟器中运行或测试,直到今天。当我今天早上尝试进行测试时,突然间它失败了(尽管之前运行良好)并出现错误No such module 'RxBlocking'。我已经仔细检查过,xcframework 已经构建在Carthage/Build文件夹中,并且 xcframework 已经添加到测试目标的设置中。

我已经尝试了所有这些,但都失败了:

  1. $(PROJECT_DIR)/Carthage/BuildFramework Search Paths目标设置
  2. 删除DerivedData/和/或Carthage/文件夹
  3. 重置 Mac

有人可以帮我解决这个问题吗?顺便说一句,我在 XCode 12.4 和 Swift 5 上。谢谢。

0 投票
1 回答
681 浏览

ios - Xcode12.4 - 带有 xcframework 子项目的 iOS Umbrella xcframework 框架

我想使用 Xcode 12.4 for iOS 将一些 XCFrameworks 放入一个伞形框架或伞形 xcframework 中。我尝试了这些线程中提到的所有方法。但是,我无法让它适用于我的客户端应用程序中的任何 swift 类。

请注意,这与 ObjC 类无缝协作。

伞架

具有静态框架子依赖项的 XCFramework

方法 1 - 创建 .framework

当我通过添加子 xcframeworks 来复制框架构建阶段来构建 .framework 时,我看到 xcframework 子项目被提取到静态库“.a”文件中。我在我的 ObjC + Swift 应用程序中导入了这个 .framework,对于导入伞式框架的所有 swift 类中的所有子项目,我得到“没有这样的模块”错误

方法 2 - 创建 .xcframework

当我使用所有 xcframework 子项目创建 .xcframework 时,当我在客户端应用程序中使用伞形框架时,x86_64-apple-ios-simulator.swiftinterface 中出现 No such module 'XXXX' 错误

请注意,我在客户端应用程序中链接和嵌入了雨伞/xcframework。

另一个想法

此外,当我使用 Xcode 12.4 创建示例应用程序并导入相同的伞形框架/.xcframework 时,一切正常。这与在旧版本的 XCode 中创建的客户端应用程序 .xcodeproj 有关吗?

0 投票
1 回答
64 浏览

ios - Xcode 项目中的重用/共享框架

在此处输入图像描述

你好,在我的项目中,这是结构

主要项目

  • 框架项目
    • 框架A.xcframework
    • 框架B.xcframework
  • 框架A.xcframework
  • 框架B.xcframework

FrameworkProject - 依赖于 FrameworkA 和 FrameworkB

我的主项目也应该能够直接访问 FrameworkA 和 FrameworkB。

问题:

我的主要问题是 FrameworkProject 无法在其中加载嵌入式框架。:/

对这种结构有什么好的建议吗?我试图找到一种方法,我可以只使用一个 .xcframework 而不是重新导入。

0 投票
1 回答
349 浏览

ios - 即使我使用安装后脚本,依赖于 CocoaPod 的应用程序作为具有自己的依赖项的 xcframework 在启动时崩溃并出现 dyld 错误

我正在开发一个框架,它将通过 CocoaPods 作为 .xcframework 分发。该框架依赖于一些第三方库并使用 CocoaPods 来解决这些依赖关系。为了支持我的框架中的模块稳定性功能,我在框架项目的构建设置中将 BUILD_LIBRARY_FOR_DISRUBUTION 选项设置为 YES。

我知道如果我的模块稳定框架使用了一些依赖项,我应该为框架使用的每个依赖项设置 BUILD_LIBRARY_FOR_DISRUBUTION=YES 设置。我通过在集成了框架的应用程序中将安装后脚本添加到 Podfile 来实现这一点。该脚本如下所示:

如果我打开一些项目,通过 Xcode 中的 CocoaPods 将我的 .xcframework 与用于框架构建的相同版本(在我的例子中为 Xcode 12.5)集成,那么构建和运行一切都会很好。但是,如果我尝试使用其他版本在 Xcode 中构建和运行此项目(我使用 Xcode 12.4 对其进行了测试),启动的应用程序将在启动时崩溃,并出现“dyld: Symbol not found...”错误。

即使我的框架有一些依赖关系,如何实现真正的模块稳定性?而且,如果可能的话,如何避免强迫我们的客户将安装后脚本添加到他们的 podfile 中?

0 投票
0 回答
19 浏览

ios - 如何检查 iOS 静态/共享库的平台变体(设备/模拟器/MacCatalyst)

由于 Apple 发布了 MacCatalyst 和 Apple Silicon,因此非胖 iOS 库(静态或共享)可能是以下类型之一:

设备:armv7、arm64

模拟器:i386、x86_64、arm64

MacCatalyst:x86_64、arm64

在此处输入图像描述

那么,如果有一个 iOS 库二进制文件,我怎么知道它是哪种类型?

我尝试过使用filelipo命令,但似乎它只能检查架构,但无法判断它是哪个平台变体。