什么是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的唯一办法就是让它工作到底)
-
在自动构build脚本中,编辑
.pbxproj
以search并replaceProvisioning Style = Automatic;
Provisioning Style = Manual;
。 也可以使用iOS Distribution
iOS Developer
replaceiOS Developer
iOS Distribution
以便在同一个pbxproj文件中签署代码。 这两件事情closures自动签名 -
运行
xcodebuild
来构build(而不是存档)项目,就像我在Xcode7中一样。 Xcode编译应用程序并对其进行签名,但是它不是有效的,因为它包含libswiftRemoteMirror.dylib
,而且由于某种原因还没有任何授权文件 -
从应用程序包中删除
libswiftRemoteMirror.dylib
(这会使签名无效) -
通过从configuration文件中提取授权位(如BlackBerry的SWSiOSResign.sh脚本所做的那样),在应用程序包文件夹中生成
Entitlements.plist
。-
使用
codesign --entitlements <file>
重新签署应用程序包 -
从那里,使用类似的技术来
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设置,就可以解决问题。