uni-app x iOS 云打包 UTS 插件集成 Go Mobile xcframework 时缺少 -ld_classic 导致链接失败
uni-app x iOS 云打包 UTS 插件集成 Go Mobile xcframework 时缺少 -ld_classic 导致链接失败
问题描述
uni-app x 项目中使用 UTS 原生插件 unix-openim-sdk,插件内集成 Go Mobile 生成的 OpenIMCore.xcframework。
云打包 iOS 真机包和模拟器包都会在主 App 链接阶段失败,错误均指向云端生成的 UTS 插件 framework:
ld: __DATA_CONST segment missing SG_READ_ONLY flag in '[PackagePath]/uni_modules/unix-openim-sdk/build/Debug-iphoneos/unimoduleUnixOpenimSdk.framework/unimoduleUnixOpenimSdk'
模拟器包中对应路径为:
[PackagePath]/uni_modules/unix-openim-sdk/build/Debug-iphonesimulator/unimoduleUnixOpenimSdk.framework/unimoduleUnixOpenimSdk
| 项目 | 值 |
|---|---|
| HBuilderX | 5.07 |
| 项目类型 | uni-app x |
| 平台 | App iOS |
| 云端 SDK(真机) | iphoneos26.2 |
| 云端 SDK(模拟器) | iphonesimulator26.2 |
| UTS 插件 | uni_modules/unix-openim-sdk |
| 三方 SDK | Go Mobile 生成的 OpenIMCore.xcframework |
| OpenIMCore.xcframework 包含 | ios-arm64, ios-arm64_x86_64-simulator |
真机云打包失败信息
云端命令:
xcodebuild archive -sdk iphoneos26.2 -project [PackagePath]/UniAppX.xcodeproj -archivePath [PackagePath]/XArchive/UniAppX.xcarchive -scheme UniAppX CONFIGURATION=Debug ENABLE_BITCODE=NO
主 App 链接命令目标为:
-target arm64-apple-ios12.0
链接参数中包含:
-ObjC
-weak_framework SwiftUI
-framework unimoduleUnixOpenimSdk
但不包含:
-ld_classic
最终失败:
ld: __DATA_CONST segment missing SG_READ_ONLY flag in '[PackagePath]/uni_modules/unix-openim-sdk/build/Debug-iphoneos/unimoduleUnixOpenimSdk.framework/unimoduleUnixOpenimSdk'
clang: error: linker command failed with exit code 1
模拟器云打包失败信息
云端命令:
xcodebuild -sdk iphonesimulator26.2 -project [PackagePath]/UniAppX.xcodeproj "EXCLUDED_ARCHS=i386 arm64"
实际构建目标为:
-target x86_64-apple-ios12.0-simulator
同样链接到:
-framework unimoduleUnixOpenimSdk
同样不包含:
-ld_classic
最终失败:
ld: __DATA_CONST segment missing SG_READ_ONLY flag in '[PackagePath]/uni_modules/unix-openim-sdk/build/Debug-iphonesimulator/unimoduleUnixOpenimSdk.framework/unimoduleUnixOpenimSdk'
clang: error: linker command failed with exit code 1
本地排查
- UTS 插件语法和 UTS 编译可以通过。
OpenIMCore.xcframework已确认包含真机和模拟器 slice。- 项目侧已从单独
OpenIMCore.framework改为标准OpenIMCore.xcframework。 - 已移除插件
config.json中的validArchitectures: ["arm64"]限制。 - 云端失败点不在 Swift/UTS 编译阶段,而在主 App 链接阶段。
- 本地模拟云端主 App 链接行为时,不加
-ld_classic可以复现同类__DATA_CONST错误;加入-ld_classic后该错误消失。 - uni-app x iOS 原生 SDK 文档中要求主工程
Other Linker Flags添加:
-ObjC
-ld_classic
-weak_framework SwiftUI
期望
请确认 uni-app x iOS 云打包生成主工程时,是否应在 OTHER_LDFLAGS 中加入:
-ld_classic
更多关于uni-app x iOS 云打包 UTS 插件集成 Go Mobile xcframework 时缺少 -ld_classic 导致链接失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html
云端打包环境已经更新为XCode26.3,从XCode26开始已经废弃了-ld_classic链接参数,建一个使用XCode26及以上版本重新编译xcframework库。
更多关于uni-app x iOS 云打包 UTS 插件集成 Go Mobile xcframework 时缺少 -ld_classic 导致链接失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html
xcframework是用go mobile编译的,我本机就是xcode 26.2
回复 OpenIM: 有可能是设置的最低兼容的ios版本有关,将appid发出来我们查下日志看下
回复 DCloud_App_Array: UNIB3F7C44
搞个claude code 或者codex;比来这提问快多了

