【问题标题】:ERROR ITMS-90171: "Invalid Bundle Structure The binary file APP.app/libswiftRemoteMirror.dylib is not permitted错误 ITMS-90171:“无效的捆绑结构不允许二进制文件 APP.app/libswiftRemoteMirror.dylib
【发布时间】: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,但没有得到正确的结果。

任何人都可以帮助我。

【问题讨论】:

标签: ios xcode


【解决方案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”一起列出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-08
      • 2020-03-22
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多