我要将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,但没有得到正确的结果。
任何人都可以把我赶出去。
答案 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文件夹添加了所有库
所以这是错误的.... 我从框架文件夹+常规选项卡链接嵌入的库中删除库
因此该项目已成功上传
答案 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不在“嵌入式二进制文件”中列出,而仅在“链接框架和库”中列出。