uni-app 原生打包导入DCUniBase.framework动态库提交appstore显示有x86架构
uni-app 原生打包导入DCUniBase.framework动态库提交appstore显示有x86架构
类别 | 信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Mac |
PC版本号 | 12.3.1 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 3.97 |
手机系统 | iOS |
手机版本号 | iOS 16 |
手机厂商 | 苹果 |
手机机型 | iPhone14 |
页面类型 | vue |
vue版本 | vue3 |
打包方式 | 离线 |
项目创建方式 | HBuilderX |
示例代码:
【报Bug】 原生打包导入DCUniBase.framework动态库提交appstore显示有x86架构
操作步骤:
【报Bug】 原生打包导入DCUniBase.framework动态库提交appstore显示有x86架构
预期结果:
【报Bug】 原生打包导入DCUniBase.framework动态库提交appstore显示有x86架构
实际结果:
【报Bug】 原生打包导入DCUniBase.framework动态库提交appstore显示有x86架构
bug描述:
【报Bug】 原生打包导入DCUniBase.framework动态库提交appstore显示有x86架构
离线SDK默认都包含x86_64 可以自己手动移除 https://juejin.cn/post/6844903859731578887
大佬,DCUniBase.framework动态库这个是在那里,SDK/Libs目录里面没有找到这个库。
已解决。
回复 2***@qq.com: 怎么解决的,是直接改文件名吗
回复 4***@qq.com: https://www.jianshu.com/p/f8c261d7fe20
你好,DCUniBase.framework这个在哪里?
在SDK/Libs里面。你找一下看
在将使用 uni-app 开发的应用程序打包并提交到 App Store 时,如果发现动态库(如 DCUniBase.framework
)包含 x86 架构,这通常是因为该动态库在构建时包含了模拟器架构(如 i386
或 x86_64
)。App Store 要求提交的应用程序只能包含 iOS 设备的架构(如 arm64
),而不能包含模拟器架构。
解决方案
1. 使用 lipo
工具移除 x86 架构
你可以使用 lipo
工具来移除动态库中的 x86 架构。以下是具体步骤:
-
找到动态库的路径:在 Xcode 项目中找到
DCUniBase.framework
的路径。 -
使用
lipo
移除 x86 架构: 打开终端,执行以下命令:lipo -remove x86_64 DCUniBase.framework/DCUniBase -o DCUniBase.framework/DCUniBase lipo -remove i386 DCUniBase.framework/DCUniBase -o DCUniBase.framework/DCUniBase
这将从
DCUniBase
二进制文件中移除x86_64
和i386
架构。 -
验证架构: 使用以下命令验证动态库的架构:
lipo -info DCUniBase.framework/DCUniBase
输出应该只包含
arm64
或其他 iOS 设备架构,而不包含x86_64
或i386
。
2. 重新构建动态库
如果你有 DCUniBase.framework
的源代码,可以重新构建动态库,并确保在构建时只包含 iOS 设备的架构。
-
修改构建脚本:在构建脚本中,确保只构建
arm64
架构。 -
重新构建:运行构建脚本,生成新的
DCUniBase.framework
。
3. 使用 xcframework
如果你需要同时支持设备和模拟器,可以考虑将 DCUniBase.framework
打包为 xcframework
。xcframework
可以包含多个架构的二进制文件,并且 Xcode 会自动选择正确的架构。
-
创建
xcframework
: 使用xcodebuild
命令创建xcframework
:xcodebuild -create-xcframework -framework DCUniBase.framework -output DCUniBase.xcframework
-
替换
framework
:在 Xcode 项目中,用DCUniBase.xcframework
替换原来的DCUniBase.framework
。
4. 使用 strip
工具
如果你不想手动移除架构,可以使用 strip
工具来移除不需要的架构。
-
使用
strip
移除架构: 在终端中执行以下命令:strip -x DCUniBase.framework/DCUniBase