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

Ori*_*rds 29 xcode itunesconnect ios swift xcode8

我有一个iOS应用程序,我最近切换到Xcode 8.作为其中的一部分,我们从swift 2.2切换到2.3(swift 3将在稍后出现).

我有一个自动构建管道,基本上运行xcodebuild在专用构建机器上生成发布二进制文件,然后我对所有这些进行排序(Xcode 8的自动代码签名确实搞砸了所有内容),现在我将我的应用程序上传到iTunes连接,它失败并出现此错误:

ERROR ITMS-90171:"无效的束状结构-二进制文件'MyApp.app/libswiftRemoteMirror.dylib’不允许您的应用程序不能包含独立的可执行文件或库,比支持束的CFBundleExecutable其他参考包编程.有关iOS应用包结构的信息,访问https://developer.apple.com/go/?id=bundle-structure."

果然,如果我解压缩.ipa文件并查看,那就libswiftRemoteMirror.dylib坐在那里.

如果我通过Xcode存档/导出iTunes,那么它会生成一个没有的应用程序包libswiftRemoteMirror.dylib,但是我的应用程序的所有其他版本似乎都有它.即使只是在Xcode中进行调试构建,然后查看输出显示libswiftRemoteMirror.dylib位于我的应用程序包中,表明Xcode本身肯定是在那里,而不是我的自动构建脚本的任何部分.

这个文件是什么,为什么要放在那里,我该怎么办呢?我可以修改我的构建脚本以删除此文件以用于发布版本,但我担心这可能会影响代码签名过程.无论如何我会试一试,看看会发生什么,但感觉这不是正确的事情.

任何意见,将不胜感激.

吖奇说*_*HUō 5

就我而言,我收到错误ITMS-90171,因为我使用的是自定义框架。

“无效的捆绑包结构-二进制文件'MyFramework.framework / libswiftRemoteMirror.dylib'

(我没有为我的应用程序得到它。)

我尝试了健身,但是卡在了xcrun上。因此,我尝试rm -rf libswiftRemoteMirror使用构建的短语(带有自定义的运行脚本)对我拥有的每个自定义框架进行操作,有趣的是,我没有破坏任何东西:它起作用了。

  • 这是我在我的案例中使用的脚本,希望可以帮助其他人:`rm -rf $ SRCROOT / Carthage / Build / iOS / RocketData.framework / libswiftRemoteMirror.dylib` (2认同)

Ori*_*rds 3

我永远无法让命令行 xcodebuild 与自动代码签名一起使用。我假设因为自动构建机器作为一个不同的帐户运行,只能通过 SSH 访问 - 它从来没有作为该用户帐户运行“完整”Xcode,并且它的登录钥匙串或类似的东西中没有任何证书。

我不想使用类似的东西,shenzhen因为我过去除了此类事情的糟糕经历之外什么也没有。Xcode 构建系统非常复杂且脆弱,无需添加更多脚本和可能出错或过时的内容。

这就是我最终解决这个问题的方法(这很可怕,但这是我能找到的唯一能让它最终起作用的方法)

  1. 在自动构建脚本中,编辑.pbxproj来搜索并替换Provisioning Style = Automatic;Provisioning Style = Manual;。还要替换iOS Developer同一iOS Distributionpbxproj 文件中的代码签名内容。这两件事关闭自动签名

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

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

  4. 通过从配置文件中提取权利位来生成Entitlements.plist应用程序包文件夹(就像BlackBerry 的 SWSiOSResign.sh脚本所做的那样)

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

    2. 从那里,使用与复制 SwiftSupport 文件夹类似的技术bq/package_ipa.sh,然后将文件压缩到ipa.

我实际上无法使用package_ipa.sh文件,我需要重新实现类似的逻辑,因为我需要引用来Swift_2.3.toolchain获取 SwiftSupport,因为我的应用程序仍然是 swift 2.3 - 不是XcodeDefault.toolchain(这是 swift 3)

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