欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
看了你的反馈,大概情况是使用 HBuilderX 5.0.7 进行 iOS 本地打包时,编译提示 AMapFoundationKit.framework、AMapSearchKit.framework 等几个库缺少 info 文件导致编译失败。
针对这个反馈,我站在官方人员的角度帮你评审一下,并给出一些排查建议。
关于反馈的完整性与质量
这个反馈整体的描述路径是比较清晰的:
- Bug标题与描述:明确指出了报错关键字,一看便知是 iOS 本地离线打包配置相关的问题,核心矛盾明确。
- 复现步骤:你给出的
导出资源 -> 导入离线SDK工程 -> 配置系统库 这个流程符合 iOS 本地打包的标准操作路径。官方人员或其它开发者能够按照这个思路去尝试重现。
- 分类信息:填写了 Mac 开发环境、HBuilderX 5.0.7 版本、iOS 平台等内容,这些都是排查所必需的要素。
- 反馈存在的不足:主要在于复现步骤提供的信息还不够“实”。
- 缺少截图:缺少 Xcode 中具体的报错信息截图,以及 Xcode 工程中
General -> Frameworks, Libraries, and Embedded Content 里这些库的具体状态截图。
- 缺少日志:缺少完整的编译错误日志。虽然提到了“提示缺少 info 文件”,但原始的完整 Log 能更精确地定位是链接阶段找不到,还是签名阶段的问题。
关于 Bug 有效性的分析
结合平台和框架本身的原理来看,这个“缺少 info 文件”的报错,很多时候并不一定是 HBuilderX 导出的资源包本身损坏了,而往往是framework文件结构不完整或离线工程配置有误。这个反馈很可能是一个确实存在的工程问题,但有较大可能可以通过以下方式自行解决。
根据知识库中相似问题的处理经验,framework 报错缺少信息往往是因为结构问题,特别是涉及到软链接时。
比如在《使用 Windows 系统提交 iOS 本地插件打包报错的解决方法》中就明确提到,如果一个 .framework 包内部存在软链接,在非 Mac 系统或者某些解压、拷贝操作下可能会失效,导致库的结构不完整,从而引发类似的打包错误。虽然你现在是在 Mac 下操作,但排查思路是通用的。
你提到的这几个库(AMapFoundationKit、AMapSearchKit、AlipaySDK)都属于第三方库。如果资源包在导出或拷贝到离线工程的过程中出现了瑕疵,比较容易导致这类问题。
排查与解决方案
建议你按照以下步骤逐一排查,大概率能解决这个编译问题:
-
检查framework文件完整性(最关键的一步)
直接在 Xcode 工程左侧的文件导航栏中,或通过访达(Finder)找到对应的 .framework 文件,右键选择 “显示包内容”。
- 正常高德/支付宝的
framework ,根目录下应该包含一个可执行文件、一个 Info.plist 文件、以及 Headers、Modules 等文件夹。
- 如果发现根目录下没有
Info.plist,而是只有 Versions 文件夹,并且 Versions/A/ 里面才有这些文件,这就说明根目录缺少了软链接或者必要的文件。
- 解决办法:直接将
Versions/A/ 里面的所有文件和文件夹复制到 .framework 的根目录下,删除掉空的 Versions 软链接文件。重新编译即可。
-
重新导出与替换资源
- 在 HBuilderX 中,对项目重新执行
生成本地打包App资源。
- 将新生成的
__UNI_xxxxx 资源包,完全覆盖到离线 SDK 工程中对应的位置。
-
检查工程的库嵌入方式
在Xcode 工程 TARGETS -> General -> Frameworks, Libraries, and Embedded Content 标签下,确保这几个报错的库不光是被“Link”了,还需要正确设置为 Embed & Sign,而不是默认的 Do Not Embed。这对动态库来说是必不可少的。
-
检查支付宝 SDK 的完整性
你提到的 AlipaySDK.framework,可以检查一下工程里是否同时引入了 AlipaySDK.bundle 这个资源包。缺少 bundle 有时也会引发莫名其妙的错误。
如果以上步骤还不能解决,那建议你重新下载对应版本的 iOS 离线 SDK 包,并确保工程的 framework 搜索路径配置无误。根据知识库中遇到的类似案例,大概率是 framework 文件在复制过程中出现了结构缺失,用步骤 1 手动修复后基本都能通过编译。
2 个回复
Ask小助手
看了你的反馈,大概情况是使用 HBuilderX 5.0.7 进行 iOS 本地打包时,编译提示
AMapFoundationKit.framework、AMapSearchKit.framework等几个库缺少 info 文件导致编译失败。针对这个反馈,我站在官方人员的角度帮你评审一下,并给出一些排查建议。
关于反馈的完整性与质量
这个反馈整体的描述路径是比较清晰的:
导出资源 -> 导入离线SDK工程 -> 配置系统库这个流程符合 iOS 本地打包的标准操作路径。官方人员或其它开发者能够按照这个思路去尝试重现。General->Frameworks, Libraries, and Embedded Content里这些库的具体状态截图。关于 Bug 有效性的分析
结合平台和框架本身的原理来看,这个“缺少 info 文件”的报错,很多时候并不一定是 HBuilderX 导出的资源包本身损坏了,而往往是framework文件结构不完整或离线工程配置有误。这个反馈很可能是一个确实存在的工程问题,但有较大可能可以通过以下方式自行解决。
根据知识库中相似问题的处理经验,framework 报错缺少信息往往是因为结构问题,特别是涉及到软链接时。
比如在《使用 Windows 系统提交 iOS 本地插件打包报错的解决方法》中就明确提到,如果一个
.framework包内部存在软链接,在非 Mac 系统或者某些解压、拷贝操作下可能会失效,导致库的结构不完整,从而引发类似的打包错误。虽然你现在是在 Mac 下操作,但排查思路是通用的。你提到的这几个库(AMapFoundationKit、AMapSearchKit、AlipaySDK)都属于第三方库。如果资源包在导出或拷贝到离线工程的过程中出现了瑕疵,比较容易导致这类问题。
排查与解决方案
建议你按照以下步骤逐一排查,大概率能解决这个编译问题:
检查framework文件完整性(最关键的一步)
直接在 Xcode 工程左侧的文件导航栏中,或通过访达(Finder)找到对应的
.framework文件,右键选择 “显示包内容”。framework,根目录下应该包含一个可执行文件、一个Info.plist文件、以及Headers、Modules等文件夹。Info.plist,而是只有Versions文件夹,并且Versions/A/里面才有这些文件,这就说明根目录缺少了软链接或者必要的文件。Versions/A/里面的所有文件和文件夹复制到.framework的根目录下,删除掉空的Versions软链接文件。重新编译即可。重新导出与替换资源
生成本地打包App资源。__UNI_xxxxx资源包,完全覆盖到离线 SDK 工程中对应的位置。检查工程的库嵌入方式
在Xcode 工程
TARGETS->General->Frameworks, Libraries, and Embedded Content标签下,确保这几个报错的库不光是被“Link”了,还需要正确设置为 Embed & Sign,而不是默认的 Do Not Embed。这对动态库来说是必不可少的。检查支付宝 SDK 的完整性
你提到的
AlipaySDK.framework,可以检查一下工程里是否同时引入了AlipaySDK.bundle这个资源包。缺少 bundle 有时也会引发莫名其妙的错误。如果以上步骤还不能解决,那建议你重新下载对应版本的 iOS 离线 SDK 包,并确保工程的 framework 搜索路径配置无误。根据知识库中遇到的类似案例,大概率是 framework 文件在复制过程中出现了结构缺失,用步骤 1 手动修复后基本都能通过编译。
1***@163.com (作者)
报错文件
要回复问题请先登录或注册
公告
更多>相关问题