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

问题描述 投票:11回答:3

我要将swift 2.2转换为swift 3.0并上传到itunes商店然后得到一个错误。

我对这个错误很累: -

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

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

任何人都可以帮助我。

ios xcode
3个回答
7
投票

我假设您在命令行上生成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
投票

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

解决这个问题:

  • 在Xcode中,从项目的任何位置删除“libswiftRemoteMirror.dylib”。包括“复制包资源”和“嵌入式库”。
  • 将它添加到目标的Link Binary with Libraries构建阶段。
  • 不要将它添加到目标的Copy Bundle Resources构建阶段。
  • 清理,构建和存档

0
投票

我和一个新产品在这里争斗了好几天。尝试了许多不同的podfile更改,但对我来说,结果是我将Pods_xxx.framework嵌入到构建中时才应该链接。

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

© www.soinside.com 2019 - 2024. All rights reserved.