问题标签 [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 投票
2 回答
460 浏览

ios - 在制作 xcframework 时加载依赖库时应用程序崩溃

我正在制作一个 xcframework。在我的框架项目中,我添加了 Alamofire、Realm 等可可豆荚。当我将我的 xcframework 集成到我的应用程序中时,应用程序崩溃并显示以下错误:

以下是我的框架项目的 pod 文件

我在 podspec 文件中添加了以下依赖项:

以下是我的演示应用程序的 pod 文件:

以下是我制作 xcframeworks 的命令

注意:我的代码 xcode 版本是 12.4

0 投票
0 回答
106 浏览

ios - 使用多个平台分发 xcframework 的 Pod 验证失败

我的 xcframework 包含几个具有不同名称的框架。

在此处输入图像描述

对于 ios,框架名称是 ProjectSwift.framework。对于 tvos,它是 ProjectSwift_tvOS.framework。

在我的 podspec 文件中,我指定了 2 个部署目标,并将 xcframework 指定为 vendored_framework :

当我尝试 pod lib lint 时,它在 tvos 上失败并出现错误:ld: framework not found ProjectSwift

如果我手动修改我的 tvos 框架的名称(从 ProjectSwift_tvOS 中删除 _tvOS),它可以工作。

ProjectSwift 和 ProjectSwift_tvOS 是我在 Xcode 上的方案的名称,并在创建 xcodebuild 存档时指定

我不确定哪里是修改它的好地方。或者有一种方法可以在 podspec 中指定对于 tvOS,名称不是 ProjectSwift 而是 ProjectSwift_tvOS ?

0 投票
2 回答
2186 浏览

ios - 在 React Native 库中使用本地 .xcframework 的 Podspec 文件应该是什么?

我创建了一个 React Native 库,它是在 React Native 项目中使用原生 iOS 框架的包装器。早些时候我使用.framework并且工作正常。现在我在使用这个库时遇到了一个问题.xcframework而不是.framework

我将此库添加为项目的依赖项,然后在运行pod install时出现以下错误:

[!] [Xcodeproj] 生成重复的 UUID:

当我打开项目并尝试构建它时,它为设备成功构建,但在模拟器上失败。

下面是我在库项目中使用的 Podspec 文件:

在搜索解决方案时,我发现此错误是由s.source_files = "**/*.{h,m,swift}". 所以,我评论了这一行并pod install再次运行。错误消失了,但没有将依赖项添加到 Project 目标中。谁能给我提供用于React Native Library中本地.xcframework的Podspec文件。提前致谢!

0 投票
0 回答
233 浏览

ios - iOS 将捆绑包复制到 XCFramework

我目前正在从事 Kotlin Multiplatform 项目。我们正在使用 Moko 资源 ( https://github.com/icerockdev/moko-resources ) 创建资源的共享目录。这适用于 FAT 框架,但是我们需要使用 XCFrameworks。我对iOS和框架情况不是很熟悉,所以请原谅我的无知。

现在,当我们构建 XCFramework 时似乎出了点问题,因为运行该应用程序显示 commainMain.MR 不可用,所以我认为我们的包没有被正确复制。

这是我们的fatFramework Gradle 任务:

还有我们的XCFramework任务

我不太确定需要更改哪些内容才能使其正常工作。感谢任何帮助!

0 投票
1 回答
889 浏览

ios - 在构建后重命名 iOS 框架

我已经从修改后的开源 C++ 代码构建了一个框架,用于另一个开发 sdk。如果应用程序有另一个也依赖于此框架的 sdk,则它们无法使用此 sdk。在已经构建(更改-> )之后如何重新命名这个框架。MyFramework.xcframeworkMyNewFramework.xcframework

重命名我能找到的所有引用后,我仍然在安装时遇到链接器错误:dyld: Library not loaded: @rpath/MyFramework.framework/MyFramework Referenced from: /private/var/containers/Bundle/Application/[app] Reason: image not found

0 投票
0 回答
384 浏览

ios - XCFramework 或来自 podspec 的其他二进制文件

我在 StackOverflow 和其他资源上搜索了一堆问题和相关主题。

主要思想:

  1. 正常工作的吊舱。
  2. 某种可以通过 cocopods 分发的二进制文件(xcframework)。

Pod 用户应该对附加的版本(源代码或二进制文件)完全不感兴趣。

已经尝试过的内容:

预设置:使用框架目标创建项目。Podfile使用引用“源 pod”创建。

  1. 中设置use_frameworks!标志Podfilexcodebuild archive使用和xcodebuild -create-xcframework构建XCFramework 结果几乎是空的 xcframework,里面没有代码。
  2. 中设置use_modular_headers!标志Podfile。构建 XCFramework。结果几乎是 27mb xcframework,其中包含代码,但在包含到其他项目时无法使用。

我还尝试了什么: s.module_map = "MyFramework.modulemap"

里面有以下代码。看起来这个模块图被s.vendored_frameworks标志忽略了。

插件cocoapods-packager似乎过时了。

有什么方便的方法来“打包”现有的吊舱吗?有没有办法让 xcframework 公开包含在内的包?是否有其他我不熟悉的 xcframework 方法可以满足“主要思想”的标准?

谢谢。

0 投票
0 回答
284 浏览

xcode - xcrun xcodebuild -create-xcframework “不支持多平台的二进制文件”

我正在尝试从 3rd 方框架创建一个 xcframework。我使用的命令是:

但是我收到以下错误:

我找到了这个问题,但给出的答案不适用于我,因为我不拥有该框架的项目。

有什么我可以做的吗?

0 投票
0 回答
62 浏览

swift - 嵌入框架条件链接

我有一个动态框架和演示应用程序来嵌入这个框架来执行测试,但是这个框架将来会作为 xcframework 分发。为了测试真实场景,我只想将我的演示应用程序与 xcframework 或发布配置链接,但对于调试配置,我想从 .xcodeproj 中保留动态框架。我可以通过脚本或任何链接器标志来管理这样的流程吗?

例子

0 投票
0 回答
127 浏览

binary - 使用二进制 xcframework CocoaPod 依赖项的代码签名问题

我在使用二进制 xcframework CocoaPods 依赖项时遇到了一些代码签名问题。

我正在使用需要在具有 Apple Catalyst 集成的 Mac 上运行的 iPad 应用程序。出于这个原因,我们创建了一个二进制 CocoaPods 依赖项,其中包含一个 xcframework,其结构您可以在附加图像中看到。xcframework 支持当前标准的 iOS、iOS 模拟器和英特尔催化剂架构。当手动签名并将其手动集成到 Xcode 项目中时,它可以完美运行。

xc框架

当通过 CocoaPod 集成 xcframework 时,构建过程最终会在签署“Kernel.xcframework”时绊倒,因为 kernel_deps.a 尚未签署。在开始 Xcode 构建之前,我可以通过在 DerivedData 文件夹中手动签名kernel_deps.a来临时解决此问题,但这当然不是永久解决方案。

我可以看到生成的 Pods-###-framework.sh 文件的 code_sign_if_enabled() 函数尝试签署“Kernel.xcframework”并失败,因为它之前没有签署 kernel_deps.a。当我通过 Pods-###-framework.sh 禁用代码签名时,Xcode 会遇到类似的问题。这个问题有什么解决办法吗?

我知道,CocoaPods 主要是为非二进制依赖处理而设计的。由于我们的依赖有很长的构建时间,我们更喜欢在这里使用二进制依赖。

我正在使用 CocoaPods 版本 1.10.1。

最好的,马丁

0 投票
0 回答
167 浏览

ios - 可以在不暴露其他 xcframeworks 的依赖关系的情况下提供和 xcframework 吗?

我从一个 Xcode 框架项目创建了一个 xcframework,该框架项目包含其他 xcframeworks 的依赖项。我的目标是为客户的应用程序提供我的 xcframework,希望客户的项目只能查看我的 xcframework 而不能访问我的项目包含的 xcframework 依赖项的标头(因为这些不是开源的,也不归我所有)。

我已经取得了一些成功,我只需将我的 xcframework 添加到测试应用程序中,一切正常,但是当我删除我的 DerivedData 文件夹时,测试应用程序不再工作(说它无法导入我试图隐藏的依赖私有库)如果我再次构建我的 xcframework 项目,它会再次工作,所以它似乎需要缓存我的 DerivedData 文件夹。我错过了什么?

*我已经走了 xcframework 路线,但想知道静态库是否更适合我隐藏项目中包含的依赖项及其标头的目标。

任何帮助将不胜感激。谢谢。