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

swift - 创建 xcframework 时无法从其模块接口构建模块“XXX”

目前我正在一个框架项目中工作,以分发给我们拥有的客户。该框架具有 SPM 依赖项,我想从中创建一个 XCFramework。xcodebuild我找到了使用该工具归档和生成 XCFramework 的脚本。问题是生成不起作用,我收到以下错误Failed to build module 'XXX' from its module interface; it may have been damaged or it may have triggered a bug in the Swift compiler when it was produced。我不知道是否可以将具有 SPM 依赖项的框架构建为 XCFramework 我试图将其作为二进制框架分发以保护我们的源代码。我以前找过这个,但在这件事上找不到任何信息。有人可以帮助我吗?

0 投票
1 回答
273 浏览

ios - XCFramework 创建错误:库 -arm64_armv7 中的 CodingKeys(stringValue: "SupportedPlatform", intValue: nil) 为空

我要分发的 iOS SDK 由一个框架组成,该框架在其 Frameworks 文件夹中有其他框架。我想将最外面的框架转换为 XCFramework 进行分发。为此,首先我使用以下命令归档框架:

结果,在存档的包内容中,我看到内部框架和主框架都已创建并列在 Products->Library->Frameworks 下。我尝试使用以下命令创建 xcframework:

我得到错误:

如何在此设置中创建 XCFramework 而不会出错?

0 投票
1 回答
1078 浏览

swift - 创建 XCFramework 找不到有效的框架

我制作了空框架项目 MyFramework 并尝试创建 XCFramework

Xcode 12.3、12.2、11.7 macOS Catalina,大苏尔

在终端我写:

它成功生成 MyFramework-iphoneos.xcarchive

但是当我在终端中写:

它返回错误:

是什么原因以及如何解决?

0 投票
1 回答
395 浏览

ios - Kotlin 多平台项目无法从 XCFramework 中找到模块

我创建了 XCFramework MyFramework 并尝试按照说明将其连接到 KMM https://kotlinlang.org/docs/mobile/add-dependencies.html#add-a-framework-without-cocoapods

MyFramework.xcframowork 被放置在 KotlinMultiplatform 项目的根目录中

我的 .def 文件如下所示:

在 build.gradle.kts 文件中我写:

但是当我为 iOS 编译 KMM 项目时,它给我写了错误:

我想我在 compilerOpts("-framework", "MyFramework", "-F/") 中写了错误的路径,但可能是另一个原因。

0 投票
1 回答
148 浏览

swift - 在 Kotlin Multiplatform 中使用 Swift 协议默认实现

我尝试在 Kotlin Multiplatform XCFramework 中使用 Swift 代码。

我有一个带有扩展的协议,用于该协议的默认实现

在 Platform.kt 我正在写

如何在 Kotlin Multiplatform 中使用 Swift 协议默认实现?

0 投票
0 回答
146 浏览

swift - 将 BUILD_LIBRARY_FOR_DISTRIBUTION 设置为 YES 时使用 @inlinable init 的问题

我在框架项目中有一个带有@inlinable init 的类。它编译正常,直到我在 XCode 构建设置中设置 BUILD_LIBRARY_FOR_DISTRIBUTION = YES 以构建 XCFramework。

如果我删除 @inlinable 标记,编译器错误将消失。

在这种情况下有什么方法可以保持 @inlinable 吗?谢谢!

在此处输入图像描述

更新

我发现这篇文章告诉了为什么编译器对@inlinable 不满意这里

另一方面,@inlinable 可能是一个大问题,具体取决于您正在构建的内容。如果 @inlinable 方法的实现发生更改,导入它的模块将无法使用修改,除非它们被重新编译。通常,您可以通过简单地替换二进制文件来更新框架,但由于某些方法的实现被内联,即使您链接到新版本,应用程序仍将继续运行旧行为。因此,启用了库演化设置的应用程序可能会发现自己无法使用 @inlinable,因为这会破坏框架的 ABI 稳定性。

0 投票
0 回答
125 浏览

swift5 - 将 SPM 模块转换为 .xcframework

我的 iOS 项目分为几个 SPM 模块。现在我想将其中一些作为 .xcframework 分发。

有没有办法从 SPM 模块中自动创建 .xcframeworks?或者我可以用来创建它们的一些(快车道?)脚本?

0 投票
1 回答
453 浏览

ios - Xcodebuild 脚本错误:未找到 *.h 文件

我使用新的 xcode 版本弹出此错误(我的是版本 12.4 (12D4e) )。

所以问题是这样的,我在 Frameworks and Binaries 部分添加了一个框架,在 xcode 里面一切都很好,我可以在 iOS 和 iOS 模拟器上构建、测试、配置文件、存档和运行我的 SDK,但是当我想要用 Makefile 和 xcodebuild 构建它,它失败并吐出这个错误: /Users/user/Desktop/sdk-ios/SDK/SDK/Pinning.m:10:9: fatal error: 'TrustKit/TrustKit.h' file not found

有问题的框架添加为xcframework.

在这个错误之下,是这样的: CompileC /Users/user/Library/Developer/Xcode/DerivedData/SDK-agtufexqywklahgqpkyokhljwrbm/Build/Intermediates.noindex/SDK.build/Release-iphonesimulator/SDK\ Framework.build/Objects-normal/x86_64/Pinning.o /Users/user/Desktop/sdk-ios/SDK/SDK/Pinning.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler

正如我所说,在 XCode 内部一切正常,并且找到并链接了框架头文件,并且我已经对其进行了测试,运行时一切正常。

关于做什么或在哪里看的任何建议?我几乎阅读了所有内容,但信息越来越少。

问候,劳里纳斯。

0 投票
0 回答
209 浏览

ios - IPA 处理失败:无法解析 @executable_path

我在导出 IPA 时遇到了这个错误。我确实提到了类似的问题,但没有一个对我有用。

我正在将我的项目从 carthage 迁移到 SPM,我使用的大多数框架都支持 SPM,只有两个具有 XCFrameworks。

已经使用 Embed & Sign 添加了 XCFrameworks,之前我曾经有模拟器架构删除脚本,现在我已经从我的构建阶段步骤中删除了 XCFrameworks。

在标准日志中查看时,使用“失败”搜索时找不到任何错误标准日志中是否有任何内容表明我应该查找错误?

编辑:在作为如何修复 xcode 11 中的“IPA 处理失败”错误的重复项关闭之前?

请检查这是针对带有 SPM 和 XCFrameworks 的 Xcode 12 的!

在此处输入图像描述

我可以在日志中发现的唯一错误如下:

但是当我与另一个具有类似设置的项目的日志进行比较时,我可以看到相同的“警告”集,并且我能够在另一个项目上生成 IPA。

0 投票
1 回答
667 浏览

ios - 如何使用 xcconfig 文件在不同平台的 XCFramework 中链接正确的框架

情况

我刚刚迁移到最新的 XCode12.4,因此我已将所有依赖项预编译为xcframeworks. 现在我xcconfig用来链接其中一些框架。我有一个应用程序,它使用了几个预编译xcframeworks的 .

这是一个共享文件Dependencies/Frameworks.xcconfig,可以轻松访问所有依赖项,并且与预编译的依赖项位于同一存储库中。

现在我的应用程序中的框架链接到 2 个框架,它看起来像这样

问题

现在,当我针对通用设备构建或存档时,一切都很好。但是当我为模拟器构建时,我得到了这个错误

我认为这是由于这里的递归搜索路径

当我删除递归搜索路径时,出现此错误

解决方法

似乎可行的方法是告诉编译器xcframework像这样深入查看内部

但老实说,我在项目中有几十个依赖项,维护它非常乏味。

问题

我如何告诉我的框架xcconfig文件它应该正确的架构文件夹xcframework中查找实际的framework