问题描述
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-arm64ios-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
尤其是在项目使用 UTS 插件并生成 unimodule*.framework 时。
如果云打包不默认加入,请提供项目侧配置方式,让开发者可以在 nativeResources/ios 或 UTS 插件配置中注入主工程 linker flags。
当前影响
该问题同时影响:
- iOS 真机云打包
- iOS 模拟器云打包
导致集成 Go Mobile xcframework 的 UTS 插件无法通过云打包完成链接。
0 个回复