ipatool 失败并出现异常:Xcode 10.1
ipatool failed with an exception: Xcode 10.1
我正在使用 JWPlayer 开发音乐播放器应用程序。以前我使用的是 iOS_SDK 2.9.1。现在我将 SDK 更新到新版本 iOS_SDK 3.5.1。更新SDK后,无法从XCode导出.ipa文件。我收到一条错误消息 "ipatool 失败并出现异常:
请查看报错信息截图如下
即使我在更新 pods 后也遇到了同样的问题。对我有用的修复方法是在存档时取消选中 Bitcode 选项。
请查看附件图片
如果你想在启用位码的情况下构建它。您可以检查这些步骤:
删除项目中的所有依赖项并尝试逐个添加它,确定导致构建错误的框架,检查最新的稳定版本或向框架所有者报告以解决问题(应该与位码相关)。
在构建供他人使用的框架之前,在项目方案测试部分中禁用与代码覆盖率相关的所有内容。
code coverage disabled
- 在我的例子中,框架构建没有错误,但它会在使用我的框架的项目上的 .ipa 存档上生成 ipatool 错误。一直在尝试解决这个问题,发现有一行代码导致 ipatool 失败:
if (@available(iOS 10.0, *)) {
}
更改为此代码为我解决了问题:
if(([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0)) {
}
注意:我正在使用带有调试 SDK 13.2 的 Xcode 11.3.1 和启用位码的构建目标 iOS 9.0
对于您的情况,您需要等待框架本身的修复。
我们遇到了类似的问题,我已经描述过 我只是不想分享我们的调查结果,因为似乎没有人公布他们的结果。
没有bitcode就不用分发了。长话短说,其中包含 LLVM 检测,这会阻止 AppStore 处理。我写了整篇关于 XCode 12 and BigSur issues with XCFramework.
的博客
总而言之,在为分发创建 XCFramework
时,需要执行以下几个必要步骤以确保:
- 使用存档构建是必须,发布构建是不够的
BUILD_LIBRARY_FOR_DISTRIBUTION
必须设置为 YES
SKIP_INSTALL
必须设置为 NO
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO
关闭 GCC 工具并将它们从二进制文件中删除
CLANG_ENABLE_CODE_COVERAGE = NO
从二进制文件中关闭代码覆盖工具
以上所有内容有助于解决我们的准备和分发问题,如果您碰巧遇到与我们相同的问题,希望能为您节省一些时间。
我正在使用 JWPlayer 开发音乐播放器应用程序。以前我使用的是 iOS_SDK 2.9.1。现在我将 SDK 更新到新版本 iOS_SDK 3.5.1。更新SDK后,无法从XCode导出.ipa文件。我收到一条错误消息 "ipatool 失败并出现异常:
请查看报错信息截图如下
即使我在更新 pods 后也遇到了同样的问题。对我有用的修复方法是在存档时取消选中 Bitcode 选项。
请查看附件图片
如果你想在启用位码的情况下构建它。您可以检查这些步骤:
删除项目中的所有依赖项并尝试逐个添加它,确定导致构建错误的框架,检查最新的稳定版本或向框架所有者报告以解决问题(应该与位码相关)。
在构建供他人使用的框架之前,在项目方案测试部分中禁用与代码覆盖率相关的所有内容。
code coverage disabled
- 在我的例子中,框架构建没有错误,但它会在使用我的框架的项目上的 .ipa 存档上生成 ipatool 错误。一直在尝试解决这个问题,发现有一行代码导致 ipatool 失败:
if (@available(iOS 10.0, *)) {
}
更改为此代码为我解决了问题:
if(([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0)) {
}
注意:我正在使用带有调试 SDK 13.2 的 Xcode 11.3.1 和启用位码的构建目标 iOS 9.0
对于您的情况,您需要等待框架本身的修复。
我们遇到了类似的问题,我已经描述过
没有bitcode就不用分发了。长话短说,其中包含 LLVM 检测,这会阻止 AppStore 处理。我写了整篇关于 XCode 12 and BigSur issues with XCFramework.
的博客总而言之,在为分发创建 XCFramework
时,需要执行以下几个必要步骤以确保:
- 使用存档构建是必须,发布构建是不够的
BUILD_LIBRARY_FOR_DISTRIBUTION
必须设置为YES
SKIP_INSTALL
必须设置为NO
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO
关闭 GCC 工具并将它们从二进制文件中删除CLANG_ENABLE_CODE_COVERAGE = NO
从二进制文件中关闭代码覆盖工具
以上所有内容有助于解决我们的准备和分发问题,如果您碰巧遇到与我们相同的问题,希望能为您节省一些时间。