我要将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但没有得到正确的结果。
任何人都可以帮助我。
我假设您在命令行上生成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命令。
libswiftRemoteMirror.dylib
被复制到App Bundle,但App Bundle不得包含除二进制文件以外的二进制文件。
解决这个问题:
Link Binary with Libraries
构建阶段。Copy Bundle Resources
构建阶段。我和一个新产品在这里争斗了好几天。尝试了许多不同的podfile更改,但对我来说,结果是我将Pods_xxx.framework嵌入到构建中时才应该链接。
转到目标并选择目标,常规选项卡,然后确保Pods_xxx.framework未与“嵌入式二进制文件”一起列出,并且仅列出“链接的框架和库”。