我有一个 iOS 应用程序,我最近已切换到 Xcode 8。 作为其中的一部分,我们从 swift 2.2 切换到 2.3(swift 3 将在稍后推出)。
我有一个自动构建管道,它基本上运行 xcodebuild
以在专用构建机器上生成一个发布二进制文件,在我整理完所有这些之后(Xcode 8 的自动代码签名真的搞砸了一切),现在当我将我的应用程序上传到 iTunes connect 时,它失败并出现此错误:
ERROR ITMS-90171: "Invalid Bundle Structure - The binary file 'MyApp.app/libswiftRemoteMirror.dylib' is not permitted. Your app can't contain standalone executables or libraries, other than the CFBundleExecutable of supported bundles. Refer to the Bundle Programming Guide at https://developer.apple.com/go/?id=bundle-structure for information on the iOS app bundle structure."
果然,如果我解压 .ipa 文件并查看,那里有 libswiftRemoteMirror.dylib
。
如果我通过 Xcode 为 iTunes 存档/导出,那么它会生成一个没有 libswiftRemoteMirror.dylib
的应用程序包,但是我的应用程序的所有其他版本似乎都有它。即使只是在 Xcode 中进行调试构建,然后查看输出也会显示 libswiftRemoteMirror.dylib 位于我的应用程序包中,这表明 Xcode 本身确实将它放在那里,而不是我的自动构建脚本的任何部分。
这个文件是什么,为什么要放在那里,我应该怎么做? 我可以修改我的构建脚本以删除发布构建的这个文件,但我担心这可能会影响代码签名过程。无论如何我都会尝试一下,看看会发生什么,但感觉这不是正确的做法。
如有任何建议,我们将不胜感激。
最佳答案
在我的例子中,我收到了错误 ITMS-90171,因为我使用的是自定义框架。
"Invalid Bundle Structure - The binary file 'MyFramework.framework/libswiftRemoteMirror.dylib'
(我的应用程序没有得到它。)
我试过健身房but it got stuck at xcrun .所以我尝试在构建短语(使用自定义运行脚本)中为我拥有的每个自定义框架执行 rm -rf libswiftRemoteMirror
,有趣的是我没有破坏任何东西:它有效。
关于ios - 什么是 libswiftRemoteMirror.dylib,为什么它包含在我的应用程序包中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39480526/