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 框架生成过程中。
因此,我看到了两种解决方案:
- 使用 gomobile 生成 .xcframework 文件。
- 更改 .framework 的构建过程,以便能够将生成的 .framework 文件转换为 .xcframework。
如何实现?
更多关于Golang中如何生成Gomobile的XCFramework的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于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的支持可能不完整。

