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本身肯定是在那里,而不是我的自动构建脚本的任何部分.
这个文件是什么,为什么要放在那里,我该怎么办呢?我可以修改我的构建脚本以删除此文件以用于发布版本,但我担心这可能会影响代码签名过程.无论如何我会试一试,看看会发生什么,但感觉这不是正确的事情.
任何意见,将不胜感激.
就我而言,我收到错误ITMS-90171,因为我使用的是自定义框架。
“无效的捆绑包结构-二进制文件'MyFramework.framework / libswiftRemoteMirror.dylib'
(我没有为我的应用程序得到它。)
我尝试了健身,但是卡在了xcrun上。因此,我尝试rm -rf libswiftRemoteMirror使用构建的短语(带有自定义的运行脚本)对我拥有的每个自定义框架进行操作,有趣的是,我没有破坏任何东西:它起作用了。
我永远无法让命令行 xcodebuild 与自动代码签名一起使用。我假设因为自动构建机器作为一个不同的帐户运行,只能通过 SSH 访问 - 它从来没有作为该用户帐户运行“完整”Xcode,并且它的登录钥匙串或类似的东西中没有任何证书。
我不想使用类似的东西,shenzhen因为我过去除了此类事情的糟糕经历之外什么也没有。Xcode 构建系统非常复杂且脆弱,无需添加更多脚本和可能出错或过时的内容。
这就是我最终解决这个问题的方法(这很可怕,但这是我能找到的唯一能让它最终起作用的方法)
在自动构建脚本中,编辑.pbxproj来搜索并替换Provisioning Style = Automatic;为Provisioning Style = Manual;。还要替换iOS Developer同一iOS Distributionpbxproj 文件中的代码签名内容。这两件事关闭自动签名
运行xcodebuild以构建(但不存档)项目,就像我在 Xcode7 中所做的那样。Xcode 编译应用程序并对其进行签名,但它还无效,因为它包含libswiftRemoteMirror.dylib并且由于某种原因还没有任何权利文件
从应用程序包中删除libswiftRemoteMirror.dylib(这会使签名无效)
通过从配置文件中提取权利位来生成Entitlements.plist应用程序包文件夹(就像BlackBerry 的 SWSiOSResign.sh脚本所做的那样)
使用重新签署应用程序包codesign --entitlements <file>
从那里,使用与复制 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 再次尝试
| 归档时间: |
|
| 查看次数: |
6706 次 |
| 最近记录: |