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

本地排查

  1. UTS 插件语法和 UTS 编译可以通过。
  2. OpenIMCore.xcframework 已确认包含真机和模拟器 slice。
  3. 项目侧已从单独 OpenIMCore.framework 改为标准 OpenIMCore.xcframework
  4. 已移除插件 config.json 中的 validArchitectures: ["arm64"] 限制。
  5. 云端失败点不在 Swift/UTS 编译阶段,而在主 App 链接阶段。
  6. 本地模拟云端主 App 链接行为时,不加 -ld_classic 可以复现同类 __DATA_CONST 错误;加入 -ld_classic 后该错误消失。
  7. 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

5 回复

云端打包环境已经更新为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;比来这提问快多了

回到顶部