uni-app 原生打包导入DCUniBase.framework动态库提交appstore显示有x86架构

发布于 1周前 作者 h691938207 来自 Uni-App

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架构


8 回复

离线SDK默认都包含x86_64 可以自己手动移除 https://juejin.cn/post/6844903859731578887


大佬,DCUniBase.framework动态库这个是在那里,SDK/Libs目录里面没有找到这个库。

回复 2***@qq.com: 怎么解决的,是直接改文件名吗

你好,DCUniBase.framework这个在哪里?

在SDK/Libs里面。你找一下看

在将使用 uni-app 开发的应用程序打包并提交到 App Store 时,如果发现动态库(如 DCUniBase.framework)包含 x86 架构,这通常是因为该动态库在构建时包含了模拟器架构(如 i386x86_64)。App Store 要求提交的应用程序只能包含 iOS 设备的架构(如 arm64),而不能包含模拟器架构。

解决方案

1. 使用 lipo 工具移除 x86 架构

你可以使用 lipo 工具来移除动态库中的 x86 架构。以下是具体步骤:

  1. 找到动态库的路径:在 Xcode 项目中找到 DCUniBase.framework 的路径。

  2. 使用 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_64i386 架构。

  3. 验证架构: 使用以下命令验证动态库的架构:

    lipo -info DCUniBase.framework/DCUniBase

    输出应该只包含 arm64 或其他 iOS 设备架构,而不包含 x86_64i386

2. 重新构建动态库

如果你有 DCUniBase.framework 的源代码,可以重新构建动态库,并确保在构建时只包含 iOS 设备的架构。

  1. 修改构建脚本:在构建脚本中,确保只构建 arm64 架构。

  2. 重新构建:运行构建脚本,生成新的 DCUniBase.framework

3. 使用 xcframework

如果你需要同时支持设备和模拟器,可以考虑将 DCUniBase.framework 打包为 xcframeworkxcframework 可以包含多个架构的二进制文件,并且 Xcode 会自动选择正确的架构。

  1. 创建 xcframework: 使用 xcodebuild 命令创建 xcframework

    xcodebuild -create-xcframework -framework DCUniBase.framework -output DCUniBase.xcframework
  2. 替换 framework:在 Xcode 项目中,用 DCUniBase.xcframework 替换原来的 DCUniBase.framework

4. 使用 strip 工具

如果你不想手动移除架构,可以使用 strip 工具来移除不需要的架构。

  1. 使用 strip 移除架构: 在终端中执行以下命令:

    strip -x DCUniBase.framework/DCUniBase
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!