问题标签 [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.
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
我现在应该如何进行?
ios - 如何从 Objective-C 框架创建 XCFramework
我在 Objective-C 中开发了一个动态框架,我需要从中生成一个 xcframeworks。我已经尝试过脚本
在另一个用 Swift 开发的框架中,一切正常。但是在这个中它说它在我的框架内找不到MyFramework
可执行文件,所以它无法创建 xcframework。
有什么我想念的吗?
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 处理一次相同的框架。
swift - 使用 SSH 将 xcframework 添加为 Swift 包依赖项
当我尝试通过 ssh URL 将我的 xcframework 添加为 swift 包依赖项时,Xcode 给我错误
我可以通过源树通过相同的 ssh URL 克隆这个 repo,它工作正常。Package.manifest 文件如下
)
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 已经添加到测试目标的设置中。
我已经尝试了所有这些,但都失败了:
$(PROJECT_DIR)/Carthage/Build
为Framework Search Paths
目标设置- 删除
DerivedData/
和/或Carthage/
文件夹 - 重置 Mac
有人可以帮我解决这个问题吗?顺便说一句,我在 XCode 12.4 和 Swift 5 上。谢谢。
ios - Xcode12.4 - 带有 xcframework 子项目的 iOS Umbrella xcframework 框架
我想使用 Xcode 12.4 for iOS 将一些 XCFrameworks 放入一个伞形框架或伞形 xcframework 中。我尝试了这些线程中提到的所有方法。但是,我无法让它适用于我的客户端应用程序中的任何 swift 类。
请注意,这与 ObjC 类无缝协作。
方法 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 有关吗?
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 中?