Golang中如何生成Gomobile的XCFramework

Golang中如何生成Gomobile的XCFramework 是否可以使用 gomobile 生成 .xcframework 文件?

我使用以下命令通过 gomobile 构建了 .framework 文件:

gomobile bind -target ios -o …/frameworks/MyFramework.framework

之后,我尝试使用此命令构建 .xcframework 文件

xcodebuild -create-xcframework -framework “MyFramework.framework” -output “MyFramework.xcframework”

但它显示错误:

error: binaries with multiple platforms are not supported ‘/Users/nicco/myFramework/MyFramework.framework/MyFramework’

所以问题似乎出在 gomobile 框架生成过程中。

因此,我看到了两种解决方案:

  1. 使用 gomobile 生成 .xcframework 文件。
  2. 更改 .framework 的构建过程,以便能够将生成的 .framework 文件转换为 .xcframework。

如何实现?


更多关于Golang中如何生成Gomobile的XCFramework的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang中如何生成Gomobile的XCFramework的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go 1.16及以上版本中,gomobile可以直接生成XCFramework。你需要使用-framework标志来指定生成XCFramework格式。

以下是生成XCFramework的命令:

gomobile bind -target ios -framework -o ../frameworks/MyFramework.xcframework

这个命令会直接生成一个包含iOS设备架构(arm64)和模拟器架构(x86_64, arm64)的XCFramework文件。

如果你需要更细粒度的控制,可以分别构建不同架构的framework,然后手动组合成XCFramework:

# 构建设备架构(arm64)
gomobile bind -target ios/arm64 -o ../frameworks/MyFramework-arm64.framework

# 构建模拟器架构(x86_64)
gomobile bind -target ios/arm64 -o ../frameworks/MyFramework-x86_64.framework

# 构建模拟器架构(arm64)
gomobile bind -target ios/arm64 -o ../frameworks/MyFramework-simulator-arm64.framework

# 使用xcodebuild创建XCFramework
xcodebuild -create-xcframework \
    -framework ../frameworks/MyFramework-arm64.framework \
    -framework ../frameworks/MyFramework-x86_64.framework \
    -framework ../frameworks/MyFramework-simulator-arm64.framework \
    -output ../frameworks/MyFramework.xcframework

对于包含CGO的情况,需要确保正确设置环境变量:

# 设置CGO环境变量
export CGO_ENABLED=1
export GOOS=ios
export GOARCH=arm64

# 构建XCFramework
gomobile bind -target ios -framework -o ../frameworks/MyFramework.xcframework

如果你遇到架构相关的问题,可以检查gomobile的版本:

gomobile version

确保使用的是最新版本,因为早期版本对XCFramework的支持可能不完整。

回到顶部