错误ITMS-90171:“无效的包结构不允许使用二进制文件APP.app/libswiftRemoteMirror.dylib

时间:2017-03-27 14:37:55

标签: ios xcode

我要将sift 2.2转换为swfit 3.0并上传到itunes商店,然后出现一个错误。

我对这个错误很累: -

  

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

我尝试了一些解决方案like this question,但没有得到正确的结果。

任何人都可以把我赶出去。

4 个答案:

答案 0 :(得分:6)

我假设你在命令行上生成了IPA。

您最好的选择是使用Xcode7 / 8默认方式生成IPA文件:

xcodebuild -scheme $SCHEME clean archive $ARCHIVE_PATH
xcodebuild -exportArchive -archivePath $ARCHIVE_PATH -exportPath $IPA_PATH -exportOptionsPlist $EXPORT_PLIST

此方法将自动负责从生成的IPA文件中删除libswiftRemoteMirror.dylib

或者你必须自己删除dylib。在创建xcarchive之后但在将其导出到IPA文件之前,您必须执行此操作:rm -rf $APP_PATH/libswiftRemoteMirror.dylib

修改

如果您无法自行重建IPA并且只想从中移除libswiftRemoteMirror.dylib,则必须resign:解压缩IPA,删除dylib,重新启动 - 对包进行编码并再次将其压缩在一起:

unzip AppName.ipa -d IPA
cd IPA
rm -rf Payload/$APP_NAME.app/libswiftRemoteMirror.dylib
codesign -vfs '$IDENTITY_NAME' Payload/$APP_NAME.app
zip -r --symlinks New_IPA.ipa *

将$ APP_NAME替换为您的应用包的名称。将$ IDENTITY_NAME替换为最初用于对应用进行签名的codesign标识的名称。如果未知,则使用codesign -dvv Payload/$APP_NAME.app 2>&1 | grep Authority | head -1 | cut -d= -f2显示。

匹配证书和私钥必须存在于您的钥匙串中才能成功辞职。如果您的应用对推送,关联域等使用特殊权利,则必须将正确的--entitlements参数传递给上面的codesign命令。

答案 1 :(得分:2)

问题解决了!!!!!

在我的情况下,我在Build Phase >>中将第三方库添加到带有库的链接二进制文件中,还在常规选项卡中添加了Link Embided库+ framework文件夹添加了所有库

所以这是错误的.... 我从框架文件夹+常规选项卡链接嵌入的库中删除库 enter image description here

enter image description here

因此该项目已成功上传

答案 2 :(得分:1)

libswiftRemoteMirror.dylib被复制到App Bundle,但App Bundle不得包含除二进制文件以外的二进制文件。

解决此问题:

  • 在Xcode中,从项目的任何位置删除“libswiftRemoteMirror.dylib”。包括“复制包资源”和“嵌入式库”。

  • 将其添加到目标的Link Binary with Libraries构建阶段。

  • 请勿将其添加到目标的Copy Bundle Resources构建阶段。

  • 清洁&建设和档案

答案 3 :(得分:0)

我在新产品上为此奋斗了几天。试验了许多不同的podfile更改,但是对我来说,原来是我将Pods_xxx.framework嵌入到构建中时才应该将其链接。

转到“目标”并选择目标的“常规”选项卡,然后确保Pods_xxx.framework不在“嵌入式​​二进制文件”中列出,而仅在“链接框架和库”中列出。