错误 ITMS-90171:“无效的捆绑结构不允许二进制文件 APP.app/libswiftRemoteMirror.dylib
Posted
技术标签:
【中文标题】错误 ITMS-90171:“无效的捆绑结构不允许二进制文件 APP.app/libswiftRemoteMirror.dylib【英文标题】:ERROR ITMS-90171: "Invalid Bundle Structure The binary file APP.app/libswiftRemoteMirror.dylib is not permitted 【发布时间】:2017-03-27 14:37:55 【问题描述】:我打算将 sift 2.2 转换为 swfit 3.0 并上传到 iTunes 商店然后出现一个错误。
我厌倦了这个错误:-
错误 ITMS-90171:“无效的 Bundle 结构 - 不允许使用二进制文件 'ideaPitch.app/libswiftRemoteMirror.dylib'。您的应用不能包含独立的可执行文件或库,除了受支持的捆绑包的 CFBundleExecutable。请参阅https://developer.apple.com/go/?id=bundle-structure 上的 Bundle Programming Guide 以获取有关 ios 应用程序包结构的信息。”
我尝试了一些解决方案like this question,但没有得到正确的结果。
任何人都可以帮助我。
【问题讨论】:
重复***.com/questions/39480526/… 感谢您的评论,但您给出的问题解决方案对我不起作用,所以我发布了新问题。谢谢 【参考方案1】:我假设您是在命令行上生成 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 -dvv Payload/$APP_NAME.app 2>&1 | grep Authority | head -1 | cut -d= -f2
显示。
您的钥匙串中必须存在匹配的证书和私钥才能成功辞职。如果您的应用对推送、关联域等使用特殊权利,您必须将正确的 --entitlements
参数传递给上面的 codesign 命令。
【讨论】:
我正在尝试通过存档或加载程序而不是从命令行上传。 好的。您如何创建存档然后导出/上传 IPA?如果您使用 Xcode8.* UI(产品 -> 存档等)来执行此操作,那么 IPA 的应用程序包中将没有 libswiftRemoteMirror.dylib。 我尝试从 IPA 中删除“libswiftRemoteMirror.dylib”,但它不起作用。 所以其他人为您构建了 IPA,而您不知道他们是如何做到的,而且您不能自己重建 IPA?那将是最简单的解决方案 这就是为什么要从 IPA 中删除“libswiftRemoteMirror.dylib”的原因?为什么不使用存档?【参考方案2】:libswiftRemoteMirror.dylib
被复制到 App Bundle,但 App Bundle 不得包含应用程序二进制文件以外的二进制文件。
解决这个问题:
在 Xcode 中,从项目中的任何位置删除“libswiftRemoteMirror.dylib”。包括“Copy Bundle Resources”和“Embedded Libraries”。
将其添加到目标的Link Binary with Libraries
构建阶段。
不要将其添加到目标的Copy Bundle Resources
构建阶段。
清理&构建&存档
【讨论】:
【参考方案3】:问题解决了!!!!
在我的情况下,我在 Build Phase >> 中添加了第三方库,在链接二进制文件中与库 + 也在常规选项卡中添加了 Link Embided library + framework 文件夹添加了所有库
所以这是错误的...... 我从框架文件夹中删除库 + 常规选项卡链接嵌入库
所以项目上传成功
【讨论】:
谢谢你,这对我有用。我正在使用 xcode 11.7。【参考方案4】:我在新产品上为此奋斗了好几天。尝试了许多不同的 podfile 更改,但对我来说,结果是我将 Pods_xxx.framework 嵌入到构建中,而它应该只被链接。
转到 Targets 并选择您的目标,General 选项卡,然后确保 Pods_xxx.framework 未与“Embedded Binaries”一起列出,而仅与“Linked Frameworks and Libraries”一起列出。
【讨论】:
以上是关于错误 ITMS-90171:“无效的捆绑结构不允许二进制文件 APP.app/libswiftRemoteMirror.dylib的主要内容,如果未能解决你的问题,请参考以下文章
iPhone 应用程序提交 - 错误 ITMS-90171 无效的捆绑结构不能包含独立的可执行文件
AppStore 提交:错误 ITMS-9000:“无效的捆绑结构 - 不允许二进制文件‘MyApp.app/BuildAgent’
上传App Store报错 ERROR ITMS-90171,90209
在应用程序加载器中发布 Xamarin.iOS IPA 时出错
远程服务器返回错误: 404错误远程服务器返回错误:500错误 HttpWebResponse远程服务器返回错误:(404500) 错误。