ios - 应用存档时出错:发现意外的 Mach-O 标头代码:0x72613c21
问题描述
我正在尝试将我们的应用存档到应用商店。但是当我这样做时,我收到了上述错误。
平台:iOS
操作系统版本:14.4.2
设备制造商/型号:iphone SE
React Native 版本(react-native -v):0.64 xcode 版本:12.4
我一直在与图书馆 react-native-background-fetch 背后的人取得联系,并向他询问了这个问题,但我认为问题背后还有另一个原因。
这是我第一次收到此错误,所以我不知道该怎么办。
IDEDistrubution.verbose.log
2021-04-22 14:55:50 +0000 无法从 macho 确定平台“/Users/joakimwennergren/Library/Developer/Xcode/Archives/2021-04-22/ActiveQuiz 2021-04-22, 16.54.xcarchive/Products /Applications/ActiveQuiz.app/ActiveQuiz-mobile-app/node_modules/react-native-background-fetch/ios/RNBackgroundFetch/TSBackgroundFetch.xcframework/ios-arm64_x86_64-maccatalyst/TSBackgroundFetch.framework”。失败并出现错误:“无法发现可执行文件/Users/joakimwennergren/Library/Developer/Xcode/Archives/2021-04-22/ActiveQuiz 2021-04-22, 16.54.xcarchive/Products/Applications/ActiveQuiz.app/ActiveQuiz 的平台-mobile-app/node_modules/react-native-background-fetch/ios/RNBackgroundFetch/TSBackgroundFetch.xcframework/ios-arm64_x86_64-maccatalyst/TSBackgroundFetch.framework/TSBackgroundFetch"
解决方案
TL;DR:我制作了一个视频来展示如何解决问题https://www.youtube.com/watch?v=Ah9aXs9lTD0 - 以下是本文中共享的详细信息的较短版本:https: //christiantietze.de/posts/2021/07/mach-o-0x72613c21-static-library/
代码 0x72613c212 表示您在 app bundle 中嵌入了一个静态库。这不是必需的,因为静态库已经在构建时由链接器与您的应用程序二进制文件合并。
通常,.framework
bundle 嵌入到应用程序包中,然后在您运行应用程序时加载。这些是动态库;静态库已经在应用程序二进制文件中,因此它们不需要再次与应用程序包一起提供。这就是 Xcode 抱怨的原因。
如何诊断
Apple 技术说明 (TN2435)对此进行了解释:
这个 [Found an unexpected Mach-O header code: 0x72613c21] 是由于将静态库放置在看起来像框架的捆绑结构中引起的;这种封装有时被第三方框架开发者称为静态框架。由于这些情况下的二进制文件是静态库,因此应用程序无法将其嵌入到应用程序包中。
从技术说明中,您可以通过以下方式确定二进制文件是否为静态库:
file <PathToAppFramework>/<FrameworkName>.framework/<FrameworkName>
输出可能类似于:
Mach-O universal binary with 2 architectures
<PathToLibrary> (for architecture armv7): current ar archive random library
<PathToLibrary> (for architecture arm64): current ar archive random library
对于确实需要嵌入到应用程序中的动态库,输出会显示类似Mach-O 64-bit dynamically linked shared library x86_64
怎么修
如果您的file
输出看起来相似,则解决方案是链接但不嵌入:
这将立即在构建产品中包含静态库。
推荐阅读
- c - 为什么只有在 codechef 中运行我的代码时才会出现分段错误?
- c++ - 为什么我不能打印字符串?
- python - python中递归zip文件解压
- typescript - 您如何验证打字稿中“未知”类型参数的属性?
- mysql - 在mysql中将日期存储为字符串是否安全?
- youtube-api - Youtube Data Api V3 - 突然“每天查询数”已从 300 000 重置为 0
- flutter - 新的 Flutter 项目未在 VS Code 中打开
- python - 将图形界面相互叠加
- python - 如何从 Python 调用 Rust 异步方法?
- c# - 如何在 SQLite 中使用“A 类”创建表并将“B 类”的属性作为列?