OpenIM
OpenIM
  • 发布:2026-06-22 20:41
  • 更新:2026-06-22 20:41
  • 阅读:176

uni-app x iOS 云打包 UTS 插件集成 Go Mobile xcframework 时缺少 -ld_classic 导致链接失败

分类:uni-app

问题描述
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
    • 模拟器: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

尤其是在项目使用 UTS 插件并生成 unimodule*.framework 时。

如果云打包不默认加入,请提供项目侧配置方式,让开发者可以在 nativeResources/ios 或 UTS 插件配置中注入主工程 linker flags。

当前影响
该问题同时影响:

  • iOS 真机云打包
  • iOS 模拟器云打包

导致集成 Go Mobile xcframework 的 UTS 插件无法通过云打包完成链接。

2026-06-22 20:41 负责人:无 分享
已邀请:

要回复问题请先登录注册