什么是libswiftRemoteMirror.dylib,为什么它被包含在我的应用程序包中?

我有一个iOS应用程序,最近我转向了Xcode 8.作为我们从swift 2.2切换到2.3的一部分(swift 3将在以后发布)。

我有一个自动生成pipe道,它本质上运行xcodebuild在专用的生成机器上生成一个发布二进制文件,当我将所有内容sorting(Xcode 8的自动代码签名确实将所有东西都搞砸了)之后,现在当我上传我的应用程序到iTunes连接,它失败,这个错误:

错误ITMS-90171:“无效的软件包结构 – 二进制文件”MyApp.app/libswiftRemoteMirror.dylib“是不允许的。除了受支持软件包的CFBundleExecutable之外,您的应用程序不能包含独立的可执行文件或库。有关iOS应用程序捆绑结构的信息, 请访问https://developer.apple.com/go/?id=bundle-structure 。

果然,如果我解压缩.ipa文件,看看,那里有libswiftRemoteMirror.dylib坐在那里。

如果我通过Xcode为iTunes进行存档/导出,则会生成一个没有libswiftRemoteMirror.dylib的应用程序包,但是我的应用程序的所有其他版本似乎都有。 即使只是在Xcode中进行debugging构build,然后看输出显示libswiftRemoteMirror.dylib是在我的应用程序捆绑软件,表明Xcode本身肯定是把它放在那里,而不是我的自动生成脚本的任何部分。

这个文件是什么,为什么放在这里,我该怎么办? 我可以修改我的构build脚本以删除此版本的发布版本,但是我担心可能会影响代码签名过程。 无论如何,我会尝试一下,看看会发生什么,但是感觉这样做不是正确的。

任何意见,将不胜感激。

我在安装Xcode 8之后遇到了同样的问题,通过深圳build设。

我决定把Fastlane看做是另一种select,他们的gym计划产生了一个可以提交给苹果公司的ipa。

对于ipa (深圳的可执行文件)来说,用电话号码来代替ipa的呼叫是相当容易的,而我的其他构build和上传脚本则不加修改地工作。

如果你喜欢直接build立,我从gym自述中解除了以下内容。 它会生成一个包含.app文件而不包含libswiftRemoteMirror.dylib文件。 我自己并不使用这种stream量,所以我不能说你会怎么做。

 xcodebuild \ -scheme Scheme \ -workspace Project.xcworkspace \ -configuration 'Release' \ -destination 'generic/platform=iOS' \ -archivePath './Output.xcarchive' \ archive 

我永远不能得到命令行xcodebuild与自动代码签名的工作。 我假设,因为自动生成的机器作为一个只能通过SSH访问的另一个帐户运行 – 它从来没有“充分”Xcode作为该用户帐户运行,它没有任何证书在它的login钥匙串或类似的东西。

我不想用shenzhen这样的东西,因为过去我从这些东西中得到的经验都不好。 Xcode构build系统是复杂和脆弱的,而不必添加更多的脚本和可能出错或过时的事情。

这就是我最终做的解决这个问题的方法(这太可怕了,但是我能find的唯一办法就是让它工作到底)

  1. 在自动构build脚本中,编辑.pbxproj以search并replaceProvisioning Style = Automatic; Provisioning Style = Manual; 。 也可以使用iOS Distribution iOS DeveloperreplaceiOS Developer iOS Distribution以便在同一个pbxproj文件中签署代码。 这两件事情closures自动签名

  2. 运行xcodebuild来构build(而不是存档)项目,就像我在Xcode7中一样。 Xcode编译应用程序并对其进行签名,但是它不是有效的,因为它包含libswiftRemoteMirror.dylib ,而且由于某种原因还没有任何授权文件

  3. 从应用程序包中删除libswiftRemoteMirror.dylib (这会使签名无效)

  4. 通过从configuration文件中提取授权位(如BlackBerry的SWSiOSResign.sh脚本所做的那样),在应用程序包文件夹中生成Entitlements.plist

    1. 使用codesign --entitlements <file>重新签署应用程序包

    2. 从那里,使用类似的技术来bq/package_ipa.sh做什么,并复制SwiftSupport文件夹,然后将文件压缩到一个ipa

我实际上不能使用package_ipa.sh文件,我需要重新实现类似的逻辑,因为我需要引用Swift_2.3.toolchain来获取SwiftSupport,因为我的应用程序仍然很快2.3 – 不是XcodeDefault.toolchain (它是迅速3)

看来我应该能够使用xcodebuild --archive与其他一些东西结合起来,以避免其中的一些步骤。 我永远不能在Xcode7下工作,但如果我有时间的话,我可能会再次尝试使用XC8

在我的情况下,我得到错误ITMS-90171,因为我使用自定义框架。

“无效的捆绑结构 – 二进制文件”MyFramework.framework / libswiftRemoteMirror.dylib“

(我没有得到我的申请。)

我尝试了健身房, 但是被xcrun卡住了 。 所以我试图在构build语句中使用rm -rf libswiftRemoteMirror (使用自定义运行脚本),对于每个自定义框架,我都没有做任何事情:它工作正常。

从Xcode中存档你的版本右键单击存档文件 – >在查找器中显示 – >右键单击 – >显示包内容 – >产品 – > appliction – >复制.app文件使用Application Loader生成有效载荷和上传。 这有助于我的情况。

只需进入构build设置,就可以解决问题。

在这里输入图像说明